From 7bf9425a48580b1407fff86f1f58fb08c632c63f Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Sun, 13 Nov 2022 21:02:13 -0500 Subject: [PATCH 1/9] refactor(dev): extract `useColor` usages into `safe` utility --- packages/remix-dev/colors.ts | 37 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/packages/remix-dev/colors.ts b/packages/remix-dev/colors.ts index 73875ed47d7..010f505ea21 100644 --- a/packages/remix-dev/colors.ts +++ b/packages/remix-dev/colors.ts @@ -1,24 +1,23 @@ -import chalk, { supportsColor } from "chalk"; +import chalk from "chalk"; -export const useColor = - supportsColor && - // https://no-color.org/ - !process.env.NO_COLOR; +// https://no-color.org/ +const useColor = chalk.supportsColor && !process.env.NO_COLOR; -const K = (x: any) => x; +const identity = (x: T) => x; +const safe = (style: chalk.Chalk) => (useColor ? style : identity); -export const heading = useColor ? chalk.underline : K; -export const arg = useColor ? chalk.yellowBright : K; -export const error = useColor ? chalk.red : K; -export const warning = useColor ? chalk.yellow : K; -export const hint = useColor ? chalk.blue : K; +export const heading = safe(chalk.underline); +export const arg = safe(chalk.yellowBright); +export const error = safe(chalk.red); +export const warning = safe(chalk.yellow); +export const hint = safe(chalk.blue); -export const logoBlue = useColor ? chalk.blueBright : K; -export const logoGreen = useColor ? chalk.greenBright : K; -export const logoYellow = useColor ? chalk.yellowBright : K; -export const logoPink = useColor ? chalk.magentaBright : K; -export const logoRed = useColor ? chalk.redBright : K; +export const logoBlue = safe(chalk.blueBright); +export const logoGreen = safe(chalk.greenBright); +export const logoYellow = safe(chalk.yellowBright); +export const logoPink = safe(chalk.magentaBright); +export const logoRed = safe(chalk.redBright); -export const gray = useColor ? chalk.gray : K; -export const blue = useColor ? chalk.blue : K; -export const bold = useColor ? chalk.bold : K; +export const gray = safe(chalk.gray); +export const blue = safe(chalk.blue); +export const bold = safe(chalk.bold); From a6b800d0afbd6a67f86586c9d0565b25080963ce Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Sun, 13 Nov 2022 21:11:51 -0500 Subject: [PATCH 2/9] refactor(dev): remove outdated reference to compiler shims --- packages/remix-dev/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/remix-dev/tsconfig.json b/packages/remix-dev/tsconfig.json index f588b9cf429..a8ffaad7e25 100644 --- a/packages/remix-dev/tsconfig.json +++ b/packages/remix-dev/tsconfig.json @@ -1,6 +1,6 @@ { "include": ["**/*.ts", "package.json"], - "exclude": ["dist", "__tests__", "node_modules", "./compiler/shims"], + "exclude": ["dist", "__tests__", "node_modules"], "compilerOptions": { "lib": ["ES2019", "DOM.Iterable"], "target": "ES2019", From 474e80fa95f09cdd4e916179640453b9a34470b4 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Sun, 13 Nov 2022 21:28:18 -0500 Subject: [PATCH 3/9] fix(dev): remove access to `convert-to-javascript` migration via CLI conversion to javascript is not a "migration" in that it does not help the user to upgrade to a newer version of Remix --- .../migrations/convert-to-javascript-test.ts | 42 ++----------------- .../remix-dev/cli/migrate/migrations/index.ts | 6 --- .../cli/migrate/migrations/transforms.ts | 1 - 3 files changed, 3 insertions(+), 46 deletions(-) diff --git a/packages/remix-dev/__tests__/migrations/convert-to-javascript-test.ts b/packages/remix-dev/__tests__/migrations/convert-to-javascript-test.ts index 352e5b9fa7d..f185b87365e 100644 --- a/packages/remix-dev/__tests__/migrations/convert-to-javascript-test.ts +++ b/packages/remix-dev/__tests__/migrations/convert-to-javascript-test.ts @@ -1,6 +1,5 @@ -import { spawnSync } from "child_process"; import { tmpdir } from "os"; -import { join, resolve } from "path"; +import { join } from "path"; import glob from "fast-glob"; import { copySync, @@ -13,8 +12,8 @@ import shell from "shelljs"; import stripAnsi from "strip-ansi"; import type { PackageJson, TsConfigJson } from "type-fest"; -import { run } from "../../cli/run"; import { readConfig } from "../../config"; +import { convertToJavaScript } from "../../cli/migrate/migrations/convert-to-javascript"; let output: string; const ORIGINAL_IO = { @@ -107,46 +106,11 @@ const makeApp = () => { return projectDir; }; -const getRunArgs = (projectDir: string) => [ - "migrate", - "--migration", - "convert-to-javascript", - projectDir, - "--force", -]; -const runConvertToJavaScriptMigrationProgrammatically = (projectDir: string) => - run([...getRunArgs(projectDir), "--no-interactive"]); -const runConvertToJavaScriptMigrationViaCLI = (projectDir: string) => - spawnSync( - "node", - [ - "--require", - require.resolve("esbuild-register"), - "--require", - join(__dirname, "..", "msw.ts"), - resolve(__dirname, "..", "..", "cli.ts"), - ...getRunArgs(projectDir), - "--interactive", - ], - { cwd: projectDir } - ).stdout?.toString("utf-8"); - describe("`convert-to-javascript` migration", () => { - it("runs successfully when ran via CLI", async () => { - let projectDir = makeApp(); - - let output = runConvertToJavaScriptMigrationViaCLI(projectDir); - - await checkMigrationRanSuccessfully(projectDir); - - expect(output).toContain("โœ… Your JavaScript looks good!"); - expect(output).toContain("successfully migrated"); - }); - it("runs successfully when ran programmatically", async () => { let projectDir = makeApp(); - await runConvertToJavaScriptMigrationProgrammatically(projectDir); + await convertToJavaScript(projectDir, { force: true }); await checkMigrationRanSuccessfully(projectDir); diff --git a/packages/remix-dev/cli/migrate/migrations/index.ts b/packages/remix-dev/cli/migrate/migrations/index.ts index f61dc19234f..72b195daf26 100644 --- a/packages/remix-dev/cli/migrate/migrations/index.ts +++ b/packages/remix-dev/cli/migrate/migrations/index.ts @@ -1,13 +1,7 @@ import type { Migration } from "../types"; -import { convertToJavaScript } from "./convert-to-javascript"; import { replaceRemixImports } from "./replace-remix-imports"; export const migrations: readonly Migration[] = [ - { - id: "convert-to-javascript", - description: "Converts your TS project to a JS project", - function: convertToJavaScript, - }, { id: "replace-remix-imports", description: "Replaces `remix` imports with `@remix-run/*` imports", diff --git a/packages/remix-dev/cli/migrate/migrations/transforms.ts b/packages/remix-dev/cli/migrate/migrations/transforms.ts index f6c4bf1e41d..12a1ac5007a 100644 --- a/packages/remix-dev/cli/migrate/migrations/transforms.ts +++ b/packages/remix-dev/cli/migrate/migrations/transforms.ts @@ -1,3 +1,2 @@ // escape-hatch to include these files in the build -export * as ConvertToJavaScriptTransform from "./convert-to-javascript/transform"; export * as ReplaceRemixImportsTransform from "./replace-remix-imports/transform"; From c4cef84fae569767d7f2293d878cd7f33f91de09 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Sun, 13 Nov 2022 21:57:37 -0500 Subject: [PATCH 4/9] refactor(dev): rewrite `replace-remix-magic-exports` as a babel codemod MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compared to the previous jscodeshift-based migration: - codemod no longer depends on a network connection - babel's visitor API for traversing the AST is simpler - not spinning up workers for applying code transforms This ends up speeding up the codemod by ~10x and (hopefully ๐Ÿคž) fixes some of the issues we were seeing in CI on Windows (since we think problems are mostly timeouts caused by slow tests or overhead for workers). --- packages/remix-dev/__tests__/cli-test.ts | 9 +- packages/remix-dev/cli/checkGitStatus.ts | 47 - packages/remix-dev/cli/commands.ts | 40 +- packages/remix-dev/cli/migrate/index.ts | 2 - .../remix-dev/cli/migrate/migrations/index.ts | 10 - .../migrations/replace-remix-imports/index.ts | 182 --- .../replace-remix-imports/messages.ts | 7 - .../replace-remix-imports/remixSetup.ts | 6 - .../resolveTransformOptions.ts | 135 -- .../transform/adapter.ts | 18 - .../transform/getNewImportDeclarations.ts | 62 - .../transform/getRemixImports.ts | 53 - .../replace-remix-imports/transform/index.ts | 50 - .../transform/mapNormalizedImports/index.ts | 66 - .../transform/normalizeImports.ts | 37 - .../transform/options.ts | 13 - .../transform/runtime.ts | 11 - .../cli/migrate/migrations/transforms.ts | 2 - .../remix-dev/cli/migrate/resolveInput.ts | 54 - packages/remix-dev/cli/migrate/run.ts | 42 - packages/remix-dev/cli/migrate/types.ts | 6 - packages/remix-dev/cli/run.ts | 23 +- packages/remix-dev/codemod/codemod.ts | 6 + packages/remix-dev/codemod/createTransform.ts | 32 + packages/remix-dev/codemod/index.ts | 68 + .../replace-remix-magic-imports/index.ts | 186 +++ .../replace-remix-magic-imports/transform.ts | 229 +++ .../utils/dependencies.ts} | 7 +- .../utils/detect.ts | 66 + .../utils/export.ts} | 221 +-- .../utils/postinstall.ts | 25 + .../utils/remix.ts | 29 + packages/remix-dev/codemod/utils/babel.ts | 27 + .../codemod/utils/babelPluginRecast.ts | 33 + packages/remix-dev/codemod/utils/error.ts | 14 + packages/remix-dev/codemod/utils/git.ts | 29 + packages/remix-dev/codemod/utils/log.ts | 4 + packages/remix-dev/codemod/utils/task.ts | 26 + packages/remix-dev/colors.ts | 10 +- packages/remix-dev/package.json | 4 + packages/remix-dev/rollup.config.js | 20 - yarn.lock | 1392 +++++++---------- 42 files changed, 1518 insertions(+), 1785 deletions(-) delete mode 100644 packages/remix-dev/cli/checkGitStatus.ts delete mode 100644 packages/remix-dev/cli/migrate/index.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/index.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/index.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/messages.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/remixSetup.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/resolveTransformOptions.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/adapter.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/getNewImportDeclarations.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/getRemixImports.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/index.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/index.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/normalizeImports.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/options.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/runtime.ts delete mode 100644 packages/remix-dev/cli/migrate/migrations/transforms.ts delete mode 100644 packages/remix-dev/cli/migrate/resolveInput.ts delete mode 100644 packages/remix-dev/cli/migrate/run.ts create mode 100644 packages/remix-dev/codemod/codemod.ts create mode 100644 packages/remix-dev/codemod/createTransform.ts create mode 100644 packages/remix-dev/codemod/index.ts create mode 100644 packages/remix-dev/codemod/replace-remix-magic-imports/index.ts create mode 100644 packages/remix-dev/codemod/replace-remix-magic-imports/transform.ts rename packages/remix-dev/{cli/migrate/migrations/replace-remix-imports/dependency.ts => codemod/replace-remix-magic-imports/utils/dependencies.ts} (50%) create mode 100644 packages/remix-dev/codemod/replace-remix-magic-imports/utils/detect.ts rename packages/remix-dev/{cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/packageExports.ts => codemod/replace-remix-magic-imports/utils/export.ts} (57%) create mode 100644 packages/remix-dev/codemod/replace-remix-magic-imports/utils/postinstall.ts create mode 100644 packages/remix-dev/codemod/replace-remix-magic-imports/utils/remix.ts create mode 100644 packages/remix-dev/codemod/utils/babel.ts create mode 100644 packages/remix-dev/codemod/utils/babelPluginRecast.ts create mode 100644 packages/remix-dev/codemod/utils/error.ts create mode 100644 packages/remix-dev/codemod/utils/git.ts create mode 100644 packages/remix-dev/codemod/utils/log.ts create mode 100644 packages/remix-dev/codemod/utils/task.ts diff --git a/packages/remix-dev/__tests__/cli-test.ts b/packages/remix-dev/__tests__/cli-test.ts index 5c62501b92c..8a1e33d0215 100644 --- a/packages/remix-dev/__tests__/cli-test.ts +++ b/packages/remix-dev/__tests__/cli-test.ts @@ -99,7 +99,7 @@ describe("remix CLI", () => { $ remix routes [projectDir] $ remix watch [projectDir] $ remix setup [remixPlatform] - $ remix migrate [-m migration] [projectDir] + $ remix codemod [projectDir] Options: --help, -h Print this help message and exit @@ -119,17 +119,14 @@ describe("remix CLI", () => { --no-delete Skip deleting the \`remix.init\` script \`routes\` Options: --json Print the routes as JSON - \`migrate\` Options: - --debug Show debugging logs + \`codemod\` Options: --dry Dry run (no changes are made to files) - --force Bypass Git safety checks and forcibly run migration - --migration, -m Name of the migration to run + --force Bypass Git safety checks Values: - projectDir The Remix project directory - template The project template to use - remixPlatform \`node\` or \`cloudflare\` - - migration One of the choices from https://github.com/remix-run/remix/blob/main/packages/remix-dev/cli/migrate/migrations/index.ts Creating a new project: diff --git a/packages/remix-dev/cli/checkGitStatus.ts b/packages/remix-dev/cli/checkGitStatus.ts deleted file mode 100644 index 59a0485ec4f..00000000000 --- a/packages/remix-dev/cli/checkGitStatus.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { execFileSync } from "child_process"; - -import * as colors from "../colors"; - -export const checkGitStatus = (projectDir: string, { force = false }) => { - let clean = false; - let errorMessage = "Unable to determine if git directory is clean"; - - try { - clean = isGitClean(projectDir); - errorMessage = "Git directory is not clean"; - } catch (err: any) { - if (err?.stderr?.indexOf("Not a git repository") >= 0) { - clean = true; - } - } - - if (clean) { - return; - } - - if (force) { - console.log( - colors.warning(`WARNING: ${errorMessage}. Forcibly continuing.`) - ); - } else { - console.log( - colors.warning( - "\nBefore we continue, please stash or commit your git changes." - ) - ); - console.log( - "\nYou may use the --force flag to override this safety check." - ); - - process.exit(1); - } -}; - -const TEN_MEBIBYTE = 1024 * 1024 * 10; -const isGitClean = (dir: string = process.cwd()) => - // Simplified version of `sync` method of `is-git-clean` package - !execFileSync("git", ["status", "--porcelain"], { - cwd: dir, - encoding: "utf8", - maxBuffer: TEN_MEBIBYTE, - })?.trim(); diff --git a/packages/remix-dev/cli/commands.ts b/packages/remix-dev/cli/commands.ts index 8cc345f7e04..53d4af20458 100644 --- a/packages/remix-dev/cli/commands.ts +++ b/packages/remix-dev/cli/commands.ts @@ -22,8 +22,9 @@ import { log } from "../logging"; import { createApp } from "./create"; import { getPreferredPackageManager } from "./getPreferredPackageManager"; import { setupRemix, isSetupPlatform, SetupPlatform } from "./setup"; - -export * as migrate from "./migrate"; +import runCodemod from "../codemod"; +import { CodemodError } from "../codemod/utils/error"; +import { TaskError } from "../codemod/utils/task"; export async function create({ appTemplate, @@ -340,6 +341,41 @@ export async function dev( } } +export async function codemod( + codemodName?: string, + projectDir?: string, + { dry = false, force = false } = {} +) { + if (!codemodName) { + console.error(colors.red("Error: Missing codemod name")); + console.log( + "Usage: " + + colors.gray( + `remix codemod <${colors.arg("codemod")}> [${colors.arg( + "projectDir" + )}]` + ) + ); + process.exit(1); + } + try { + await runCodemod(projectDir ?? process.cwd(), codemodName, { + dry, + force, + }); + } catch (error) { + if (error instanceof CodemodError) { + console.error(`${colors.red("Error:")} ${error.message}`); + if (error.additionalInfo) console.info(colors.gray(error.additionalInfo)); + process.exit(1); + } + if (error instanceof TaskError) { + process.exit(1); + } + throw error; + } +} + function purgeAppRequireCache(buildPath: string) { for (let key in require.cache) { if (key.startsWith(buildPath)) { diff --git a/packages/remix-dev/cli/migrate/index.ts b/packages/remix-dev/cli/migrate/index.ts deleted file mode 100644 index 397738a64b6..00000000000 --- a/packages/remix-dev/cli/migrate/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./resolveInput"; -export * from "./run"; diff --git a/packages/remix-dev/cli/migrate/migrations/index.ts b/packages/remix-dev/cli/migrate/migrations/index.ts deleted file mode 100644 index 72b195daf26..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { Migration } from "../types"; -import { replaceRemixImports } from "./replace-remix-imports"; - -export const migrations: readonly Migration[] = [ - { - id: "replace-remix-imports", - description: "Replaces `remix` imports with `@remix-run/*` imports", - function: replaceRemixImports, - }, -] as const; diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/index.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/index.ts deleted file mode 100644 index 2a1369aba48..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/index.ts +++ /dev/null @@ -1,182 +0,0 @@ -import { execSync } from "child_process"; -import { join } from "path"; -import NpmCliPackageJson from "@npmcli/package-json"; -import glob from "fast-glob"; -import { maxBy } from "lodash"; -import semver from "semver"; - -import * as colors from "../../../../colors"; -import { readConfig } from "../../../../config"; -import { getPreferredPackageManager } from "../../../getPreferredPackageManager"; -import * as jscodeshift from "../../jscodeshift"; -import type { MigrationFunction } from "../../types"; -import type { Dependency } from "./dependency"; -import { depsToObject, isRemixPackage, depsToEntries } from "./dependency"; -import { because, detected } from "./messages"; -import { - onlyRemixSetup, - onlyRemixSetupRuntime, - remixSetup, -} from "./remixSetup"; -import { resolveTransformOptions } from "./resolveTransformOptions"; -import type { Options } from "./transform/options"; -import { CliError } from "../../../error"; - -const TRANSFORM_PATH = join(__dirname, "transform"); - -const getRemixVersionSpec = (remixDeps: Dependency[]): string => { - let candidate = maxBy(remixDeps, (dep) => semver.minVersion(dep.versionSpec)); - if (candidate === undefined) { - throw new CliError("โŒ I couldn't find versions for your Remix packages."); - } - - let candidateMin = semver.minVersion(candidate.versionSpec); - if (candidateMin === null) { - throw new CliError("โŒ I couldn't find versions for your Remix packages."); - } - - if (semver.lt(candidateMin, "1.3.3")) { - console.log("โฌ†๏ธ I'm upgrading your Remix dependencies"); - console.log(because("this migration requires v1.3.3 or newer.")); - - return "^1.3.3"; - } - - console.log( - detected( - `\`${colors.blue( - candidate.versionSpec - )}\` as the best Remix version to use` - ) - ); - console.log(because("you're already using a compatible Remix version.")); - return candidate.versionSpec; -}; - -const shouldKeepPostinstall = (original?: string): boolean => { - if (original === undefined) { - return false; - } - - if (onlyRemixSetup.test(original) || onlyRemixSetupRuntime.test(original)) { - console.log( - "๐Ÿ—‘ I'm removing `remix setup` from your `postinstall` script." - ); - return false; - } - - let hasRemixSetup = remixSetup.test(original); - if (hasRemixSetup) { - console.warn( - "โš ๏ธ I couldn't remove `remix setup` from your `postinstall script" - ); - console.log(because("your `postinstall` script is too complex.")); - console.warn( - "๐Ÿ‘‰ You need to manually remove `remix setup` from your `postinstall` script." - ); - } - - return true; -}; - -export const replaceRemixImports: MigrationFunction = async ( - projectDir, - flags = {} -) => { - let pkg = await NpmCliPackageJson.load(projectDir); - - // 0. resolve runtime and adapter - let { adapter, runtime } = await resolveTransformOptions(pkg.content); - - let deps = depsToEntries(pkg.content.dependencies); - let remixDeps = deps.filter(({ name }) => isRemixPackage(name)); - let otherDeps = deps.filter(({ name }) => !isRemixPackage(name)); - let devDeps = depsToEntries(pkg.content.devDependencies); - let remixDevDeps = devDeps.filter(({ name }) => isRemixPackage(name)); - let otherDevDeps = devDeps.filter(({ name }) => !isRemixPackage(name)); - - let remixServeInstalled = remixDeps - .map(({ name }) => name) - .includes("@remix-run/serve"); - if (remixServeInstalled) { - let servePackage = colors.blue("@remix-run/serve"); - console.log(detected(`\`${servePackage}\` as your Remix server`)); - console.log(because("it is in your dependencies.")); - } - - // 1. upgrade Remix package, remove unused Remix packages - console.log("\n๐Ÿ’ฟ I'm checking your Remix dependencies"); - console.log(because("the `remix` package is deprecated.")); - let remixVersionSpec = getRemixVersionSpec([...remixDeps, ...remixDevDeps]); - pkg.update({ - dependencies: { - ...depsToObject(otherDeps), - "@remix-run/react": remixVersionSpec, - [`@remix-run/${runtime}`]: remixVersionSpec, - ...(adapter ? { [`@remix-run/${adapter}`]: remixVersionSpec } : {}), - ...(remixServeInstalled - ? { [`@remix-run/serve`]: remixVersionSpec } - : {}), - }, - devDependencies: { - ...depsToObject(otherDevDeps), - ...depsToObject( - remixDevDeps.map(({ name }) => ({ - name, - versionSpec: remixVersionSpec, - })) - ), - [`@remix-run/dev`]: remixVersionSpec, - }, - }); - console.log("โœ… Your Remix dependencies look good!"); - - // 2. Remove `remix setup` from postinstall - console.log("\n๐Ÿ’ฟ I'm checking your `package.json` scripts"); - console.log(because("calling `remix setup` in `postinstall` is deprecated.")); - if (!shouldKeepPostinstall(pkg.content.scripts?.postinstall)) { - pkg.update({ - scripts: Object.fromEntries( - Object.entries(pkg.content.scripts || {}).filter( - ([script]) => script !== "postinstall" - ) - ), - }); - } - console.log("โœ… Your `package.json` scripts looks good!"); - - // write updates to package.json - await pkg.save(); - - // 3. Update lockfile for new dependencies by reinstalling - console.log("\n๐Ÿ’ฟ I'm updating your lockfile"); - console.log(because("your dependencies changed.")); - let packageManager = getPreferredPackageManager(); - execSync(`${packageManager} install`, { cwd: projectDir, stdio: "inherit" }); - console.log("โœ… Your lockfile looks good!"); - - // 4. Run codemod - console.log("\n๐Ÿ’ฟ I'm replacing any `remix` imports"); - console.log(because("importing from `remix` is deprecated.")); - let config = await readConfig(projectDir); - let files = glob.sync("**/*.+(js|jsx|ts|tsx)", { - absolute: true, - cwd: config.appDirectory, - }); - let codemodOk = await jscodeshift.run({ - files, - flags, - transformOptions: { adapter, runtime }, - transformPath: TRANSFORM_PATH, - }); - if (!codemodOk) { - console.error("โŒ I couldn't replace all of your `remix` imports."); - if (!flags.debug) { - console.log("๐Ÿ‘‰ Try again with the `--debug` flag to see what failed."); - } - throw new CliError(); - } - console.log("โœ… Your Remix imports look good!"); - - console.log("\n๐Ÿšš I've successfully migrated your project! ๐ŸŽ‰"); -}; diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/messages.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/messages.ts deleted file mode 100644 index c4c1119772f..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/messages.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as colors from "../../../../colors"; - -export const detected = (message: string) => - colors.gray("๐Ÿ•ต๏ธ I detected " + message); - -export const because = (message: string) => - colors.gray(" ...because " + message); diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/remixSetup.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/remixSetup.ts deleted file mode 100644 index 8e0522288fd..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/remixSetup.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const remixSetup = /\s*remix\s+setup\s*/; -export const remixSetupRuntime = /\s*remix\s+setup\s+(\w+)\s*/; -export const onlyRemixSetup = new RegExp(`^${remixSetup.source}$`); -export const onlyRemixSetupRuntime = new RegExp( - `^${remixSetupRuntime.source}$` -); diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/resolveTransformOptions.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/resolveTransformOptions.ts deleted file mode 100644 index dfd088f917e..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/resolveTransformOptions.ts +++ /dev/null @@ -1,135 +0,0 @@ -import type { PackageJson } from "@npmcli/package-json"; -import inquirer from "inquirer"; - -import * as colors from "../../../../colors"; -import { CliError } from "../../../error"; -import { depsToEntries, isRemixPackage } from "./dependency"; -import { because, detected } from "./messages"; -import { remixSetup, remixSetupRuntime } from "./remixSetup"; -import type { Adapter } from "./transform/adapter"; -import { isAdapter } from "./transform/adapter"; -import type { Options } from "./transform/options"; -import type { Runtime } from "./transform/runtime"; -import { runtimes, isRuntime } from "./transform/runtime"; - -const adapterToRuntime: Record = { - architect: "node", - "cloudflare-pages": "cloudflare", - "cloudflare-workers": "cloudflare", - express: "node", - netlify: "node", - vercel: "node", -}; - -const autoDetectPostinstallRuntime = ( - packageJson: PackageJson -): Runtime | undefined => { - let postinstall = packageJson.scripts?.postinstall; - if (postinstall === undefined) return undefined; - if (postinstall.match(remixSetup) === null) return undefined; - - // match `remix setup ` in `postinstall` script - let runtimeMatch = postinstall.match(remixSetupRuntime); - if (runtimeMatch === null) return "node"; - let runtime = runtimeMatch[1]; - if (isRuntime(runtime)) return runtime; - console.warn( - `๏ธโš ๏ธ You have \`${runtime}\` in your \`postinstall\` script, but \`${runtime}\` is not a valid Remix server runtime.` - ); - return undefined; -}; - -const detectedRuntime = (runtime: Runtime) => { - let runtimePackage = colors.blue(`@remix-run/${runtime}`); - return detected(`\`${runtimePackage}\` as your Remix server runtime`); -}; - -const resolveRuntime = async ( - packageJson: PackageJson, - adapter?: Adapter -): Promise => { - // match `remix setup ` in `postinstall` script - let postinstallRuntime = autoDetectPostinstallRuntime(packageJson); - if (postinstallRuntime) { - console.log(detectedRuntime(postinstallRuntime)); - console.log( - because( - `you had \`remix setup ${postinstallRuntime}\` in your \`postinstall\` script.` - ) - ); - return postinstallRuntime; - } - - // infer runtime from adapter - if (adapter) { - let runtime = adapterToRuntime[adapter]; - console.log(detectedRuntime(runtime)); - let adapterPackage = colors.blue(`@remix-run/${adapter}`); - console.log(because(`you have \`${adapterPackage}\` installed.`)); - return runtime; - } - - // @remix-run/serve uses node - let deps = depsToEntries(packageJson.dependencies); - let remixDeps = deps.filter(({ name }) => isRemixPackage(name)); - if (remixDeps.map(({ name }) => name).includes("@remix-run/serve")) { - let runtime = "node" as const; - console.log(detectedRuntime(runtime)); - console.log(because("you have `@remix-run/serve` installed.")); - return runtime; - } - - console.log("๐Ÿ•ต๏ธ I couldn't infer your Remix server runtime."); - // otherwise, ask user for runtime - let { runtime } = await inquirer.prompt<{ runtime?: Runtime }>([ - { - name: "runtime", - message: "Which server runtime is this project using?", - type: "list", - pageSize: runtimes.length + 1, - choices: [...runtimes, { name: "Nevermind...", value: undefined }], - }, - ]); - if (runtime === undefined) process.exit(0); - return runtime; -}; - -const resolveAdapter = (packageJson: PackageJson): Adapter | undefined => { - // find adapter in package.json dependencies - let deps = depsToEntries(packageJson.dependencies); - let remixDeps = deps.filter(({ name }) => isRemixPackage(name)); - let adapters = remixDeps - .map(({ name }) => name.replace(/^@remix-run\//, "")) - .filter(isAdapter); - - if (adapters.length > 1) { - console.error( - "โŒ I found more than one Remix server adapter your in dependencies:" - ); - console.log( - adapters.map((adapter) => ` - @remix-run/${adapter}`).join("\n") - ); - console.log("๐Ÿ‘‰ Uninstall unused adapters and try again."); - throw new CliError(); - } - - if (adapters.length === 1) { - let adapter = adapters[0]; - let adapterPackage = colors.blue(`@remix-run/${adapter}`); - console.log(detected(`\`${adapterPackage}\` as your Remix server adapter`)); - console.log(because("it's in your dependencies.")); - return adapter; - } - - return undefined; -}; - -export const resolveTransformOptions = async ( - packageJson: PackageJson -): Promise => { - let adapter = resolveAdapter(packageJson); - return { - adapter, - runtime: await resolveRuntime(packageJson, adapter), - }; -}; diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/adapter.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/adapter.ts deleted file mode 100644 index bc3c0320bfb..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/adapter.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * `jscodeshift` doesn't support Typescript casting, nor typeguards. - * https://github.com/facebook/jscodeshift/issues/467 - * - * Do not import from this file for the `jscodeshift` transform. - */ -const adapters = [ - "architect", - "cloudflare-pages", - "cloudflare-workers", - "express", - "netlify", - "vercel", -] as const; -export type Adapter = typeof adapters[number]; -export const isAdapter = (maybe: string): maybe is Adapter => { - return (adapters as readonly string[]).includes(maybe); -}; diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/getNewImportDeclarations.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/getNewImportDeclarations.ts deleted file mode 100644 index e8752ac3bf4..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/getNewImportDeclarations.ts +++ /dev/null @@ -1,62 +0,0 @@ -import type { JSCodeshift } from "jscodeshift"; - -import type { MappedNormalizedImports } from "./mapNormalizedImports"; -import type { NormalizedImport } from "./normalizeImports"; - -const orgName = "@remix-run"; - -type GetImportDeclarationForImportKindArgs = { - importKind: "type" | "value"; - imports: NormalizedImport[]; - j: JSCodeshift; - packageName: string; -}; -const getImportDeclarationForImportKind = ({ - importKind, - imports, - j, - packageName, -}: GetImportDeclarationForImportKindArgs) => { - let importsForKind = imports.filter( - (imprt) => imprt.importKind === importKind - ); - - if (importsForKind.length === 0) { - return null; - } - - return j.importDeclaration( - importsForKind - .sort((a, b) => a.name.localeCompare(b.name)) - .map(({ alias, name }) => - j.importSpecifier(j.identifier(name), j.identifier(alias)) - ), - j.stringLiteral( - packageName === "remix" ? packageName : `${orgName}/${packageName}` - ), - importKind - ); -}; - -export const getNewImportDeclarations = ( - j: JSCodeshift, - mappedNormalizedImports: MappedNormalizedImports -) => - Object.entries(mappedNormalizedImports) - .sort(([packageAName], [packageBName]) => - packageAName.localeCompare(packageBName) - ) - .flatMap(([packageName, imports]) => [ - getImportDeclarationForImportKind({ - importKind: "type", - imports, - j, - packageName, - }), - getImportDeclarationForImportKind({ - importKind: "value", - imports, - j, - packageName, - }), - ]); diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/getRemixImports.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/getRemixImports.ts deleted file mode 100644 index 9b6a15700db..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/getRemixImports.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { Collection, ImportDeclaration, JSCodeshift } from "jscodeshift"; -import { fromNodes } from "jscodeshift/src/Collection"; - -const checkNoImpossibleImports = ( - j: JSCodeshift, - allImports: Collection -) => { - let defaultImports = allImports.find(j.ImportDefaultSpecifier); - if (defaultImports.length > 0) { - throw Error( - "There shouldn't be any default imports for `remix`. Please remove the default imports and try again." - ); - } - - let sideEffectImports = allImports.filter( - ({ node: { specifiers } }) => !specifiers || specifiers.length === 0 - ); - if (sideEffectImports.length > 0) { - throw Error( - "There shouldn't be any side-effect imports for `remix`. Please remove the side-effect imports and try again." - ); - } -}; - -const checkNoInvalidImports = ( - j: JSCodeshift, - allImports: Collection -) => { - let namespaceImports = allImports.find(j.ImportNamespaceSpecifier); - if (namespaceImports.length > 0) { - throw Error( - "There shouldn't be any namespace imports for `remix`. Please replace the namespace imports with named imports and try again." - ); - } -}; - -export const getRemixImports = ( - j: JSCodeshift, - root: Collection -): Collection => { - let allRemixImports = root.find(j.ImportDeclaration, { - source: { value: "remix" }, - }); - - if (allRemixImports.length === 0) { - return fromNodes([]); - } - - checkNoImpossibleImports(j, allRemixImports); - checkNoInvalidImports(j, allRemixImports); - - return allRemixImports; -}; diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/index.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/index.ts deleted file mode 100644 index 566c7d4a571..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/index.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { Transform } from "jscodeshift"; - -import { getNewImportDeclarations } from "./getNewImportDeclarations"; -import { getRemixImports } from "./getRemixImports"; -import { mapNormalizedImports } from "./mapNormalizedImports"; -import { normalizeImports } from "./normalizeImports"; - -const transform: Transform = (file, api, options) => { - let j = api.jscodeshift; - let root = j(file.source); - - let remixImports = getRemixImports(j, root); - if (remixImports.length === 0) { - // This transform doesn't need to run if there are no `remix` imports - return null; - } - - // https://github.com/facebook/jscodeshift/blob/main/recipes/retain-first-comment.md - let getFirstNode = () => root.find(j.Program).get("body", 0).node; - let oldFirstNode = getFirstNode(); - - let normalizedImports = normalizeImports(remixImports); - let mappedNormalizedImports = mapNormalizedImports({ - adapter: options.adapter, - normalizedImports, - runtime: options.runtime, - }); - let newImportDeclarations = getNewImportDeclarations( - j, - mappedNormalizedImports - ); - - let firstRemixImport = remixImports.at(0); - newImportDeclarations.forEach((newImportDeclaration) => { - firstRemixImport.insertBefore(newImportDeclaration); - }); - - remixImports.forEach((oldRemixImport) => { - j(oldRemixImport).remove(); - }); - - // If the first node has been modified or deleted, reattach the comments - let newFirstNode = getFirstNode(); - if (newFirstNode !== oldFirstNode) { - newFirstNode.comments = oldFirstNode.comments; - } - - return root.toSource(options); -}; -export default transform; diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/index.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/index.ts deleted file mode 100644 index 4c17efb0519..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/index.ts +++ /dev/null @@ -1,66 +0,0 @@ -import type { NormalizedImport } from "../normalizeImports"; -import type { Adapter, Package, Runtime } from "./packageExports"; -import { packageExports } from "./packageExports"; - -const getFilteredNormalizedImportsForPackage = ( - normalizedImports: NormalizedImport[], - packageName: Package -) => - normalizedImports.filter( - ({ name }) => - packageExports[packageName].type.includes(name) || - packageExports[packageName].value.includes(name) - ); - -const getRemainingNormalizedImports = ( - normalizedImports: NormalizedImport[], - filteredNormalizedImports: NormalizedImport[] -) => { - let filteredNormalizedImportNames = filteredNormalizedImports.map( - ({ name }) => name - ); - - return normalizedImports.filter( - ({ name }) => !filteredNormalizedImportNames.includes(name) - ); -}; - -// export type MappedNormalizedImports = { -// [adapter: Adapter]: NormalizedImport[] | undefined; -// [client: Client]: NormalizedImport[]; -// [runtime: Runtime]: NormalizedImport[]; -// }; -export type MappedNormalizedImports = ReturnType; -export type MapNormalizedImportsArgs = { - adapter?: Adapter; - normalizedImports: NormalizedImport[]; - runtime: Runtime; -}; -export const mapNormalizedImports = ({ - adapter, - normalizedImports, - runtime, -}: MapNormalizedImportsArgs) => { - let filteredAdapterNormalizedImports = adapter - ? getFilteredNormalizedImportsForPackage(normalizedImports, adapter) - : []; - let filteredReactNormalizedImports = getFilteredNormalizedImportsForPackage( - normalizedImports, - "react" - ); - let filteredRuntimeNormalizedImports = getFilteredNormalizedImportsForPackage( - normalizedImports, - runtime - ); - - return { - ...(adapter ? { [adapter]: filteredAdapterNormalizedImports } : {}), - react: filteredReactNormalizedImports, - [runtime]: filteredRuntimeNormalizedImports, - remix: getRemainingNormalizedImports(normalizedImports, [ - ...filteredAdapterNormalizedImports, - ...filteredReactNormalizedImports, - ...filteredRuntimeNormalizedImports, - ]), - }; -}; diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/normalizeImports.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/normalizeImports.ts deleted file mode 100644 index 3715fd3519f..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/normalizeImports.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { Collection, ImportDeclaration } from "jscodeshift"; - -export type NormalizedImport = Pick & { - alias: string; - name: string; -}; - -export const normalizeImports = ( - allImports: Collection -): NormalizedImport[] => - allImports - .nodes() - .flatMap(({ importKind, specifiers }) => { - if (!specifiers) return []; - return ( - specifiers - /** - * HACK: Can't use casts nor type guards in a `jscodeshift` transform - * https://github.com/facebook/jscodeshift/issues/467 - * - * So to narrow specifier type, we use `flatMap` instead. - * (`filter` can't narrow type without type guards) - */ - .flatMap((specifier) => { - return specifier.type === "ImportSpecifier" ? specifier : []; - }) - .map((specifier) => ({ - ...specifier, - importKind, - })) - ); - }) - .map(({ imported: { name }, importKind, local }) => ({ - alias: local?.name || name, - importKind, - name, - })); diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/options.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/options.ts deleted file mode 100644 index 7a73b6ac327..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/options.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * `jscodeshift` doesn't support Typescript casting, nor typeguards. - * https://github.com/facebook/jscodeshift/issues/467 - * - * Do not import from this file for the `jscodeshift` transform. - */ -import type { Adapter } from "./adapter"; -import type { Runtime } from "./runtime"; - -export type Options = { - adapter?: Adapter; - runtime: Runtime; -}; diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/runtime.ts b/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/runtime.ts deleted file mode 100644 index d71c2cfc2b1..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/runtime.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * `jscodeshift` doesn't support Typescript casting, nor typeguards. - * https://github.com/facebook/jscodeshift/issues/467 - * - * Do not import from this file for the `jscodeshift` transform. - */ -export const runtimes = ["cloudflare", "node"] as const; -export type Runtime = typeof runtimes[number]; -export const isRuntime = (maybe: string): maybe is Runtime => { - return (runtimes as readonly string[]).includes(maybe); -}; diff --git a/packages/remix-dev/cli/migrate/migrations/transforms.ts b/packages/remix-dev/cli/migrate/migrations/transforms.ts deleted file mode 100644 index 12a1ac5007a..00000000000 --- a/packages/remix-dev/cli/migrate/migrations/transforms.ts +++ /dev/null @@ -1,2 +0,0 @@ -// escape-hatch to include these files in the build -export * as ReplaceRemixImportsTransform from "./replace-remix-imports/transform"; diff --git a/packages/remix-dev/cli/migrate/resolveInput.ts b/packages/remix-dev/cli/migrate/resolveInput.ts deleted file mode 100644 index d4e96ce910d..00000000000 --- a/packages/remix-dev/cli/migrate/resolveInput.ts +++ /dev/null @@ -1,54 +0,0 @@ -import inquirer from "inquirer"; - -import { checkGitStatus } from "../checkGitStatus"; -import type { Flags } from "./flags"; -import { migrations } from "./migrations"; - -const resolveProjectDir = (input?: string): string => { - return input || process.env.REMIX_ROOT || process.cwd(); -}; - -const resolveMigrationId = async (input?: string): Promise => { - if (input !== undefined) return input; - let { migrationId } = await inquirer.prompt<{ migrationId?: string }>([ - { - name: "migrationId", - message: "Which migration would you like to apply?", - type: "list", - pageSize: migrations.length + 1, - choices: [ - ...migrations.map(({ id, description }) => ({ - name: `${id}: ${description}`, - value: id, - })), - { - name: "Nevermind...", - value: undefined, - }, - ], - }, - ]); - if (migrationId === undefined) { - // user selected "Nevermind..." - process.exit(0); - } - return migrationId; -}; - -export const resolveInput = async ( - input: { - projectId: string; - migrationId?: string; - }, - flags: Flags -) => { - let projectDir = resolveProjectDir(input.projectId); - if (!flags.dry) { - checkGitStatus(projectDir, { force: flags.force }); - } - let migrationId = await resolveMigrationId(input.migrationId); - return { - projectDir, - migrationId, - }; -}; diff --git a/packages/remix-dev/cli/migrate/run.ts b/packages/remix-dev/cli/migrate/run.ts deleted file mode 100644 index a9c748c1f9b..00000000000 --- a/packages/remix-dev/cli/migrate/run.ts +++ /dev/null @@ -1,42 +0,0 @@ -import fse from "fs-extra"; - -import * as colors from "../../colors"; -import type { Flags } from "./flags"; -import { migrations } from "./migrations"; -import type { Migration } from "./types"; - -const parseMigration = (migrationId: string): Migration => { - let migration = migrations.find(({ id }) => id === migrationId); - - if (migration === undefined) { - throw Error(` -${colors.error("Invalid migration. Pick one of:")} -${migrations.map((m) => colors.error(`- ${m.id}`)).join("\n")} - `); - } - - return migration; -}; - -const checkProjectDir = (projectDir: string): string => { - if (!fse.existsSync(projectDir)) { - throw Error(`Project path does not exist: ${projectDir}`); - } - - if (!fse.lstatSync(projectDir).isDirectory()) { - throw Error(`Project path is not a directory: ${projectDir}`); - } - - return projectDir; -}; - -export const run = async (input: { - flags: Flags; - migrationId: string; - projectDir: string; -}) => { - let projectDir = checkProjectDir(input.projectDir); - let migration = parseMigration(input.migrationId); - - return migration.function(projectDir, input.flags); -}; diff --git a/packages/remix-dev/cli/migrate/types.ts b/packages/remix-dev/cli/migrate/types.ts index d4e2b57cbd5..a9ada49dd5c 100644 --- a/packages/remix-dev/cli/migrate/types.ts +++ b/packages/remix-dev/cli/migrate/types.ts @@ -4,9 +4,3 @@ export type MigrationFunction = ( projectDir: string, flags?: Flags ) => Promise; - -export interface Migration { - id: string; - description: string; - function: MigrationFunction; -} diff --git a/packages/remix-dev/cli/run.ts b/packages/remix-dev/cli/run.ts index 130956de70e..af4f77c577c 100644 --- a/packages/remix-dev/cli/run.ts +++ b/packages/remix-dev/cli/run.ts @@ -26,9 +26,7 @@ ${colors.logoBlue("R")} ${colors.logoGreen("E")} ${colors.logoYellow( $ remix routes [${colors.arg("projectDir")}] $ remix watch [${colors.arg("projectDir")}] $ remix setup [${colors.arg("remixPlatform")}] - $ remix migrate [-m ${colors.arg("migration")}] [${colors.arg( - "projectDir" -)}] + $ remix codemod <${colors.arg("codemod")}> [${colors.arg("projectDir")}] ${colors.heading("Options")}: --help, -h Print this help message and exit @@ -48,19 +46,14 @@ ${colors.logoBlue("R")} ${colors.logoGreen("E")} ${colors.logoYellow( --no-delete Skip deleting the \`remix.init\` script \`routes\` Options: --json Print the routes as JSON - \`migrate\` Options: - --debug Show debugging logs + \`codemod\` Options: --dry Dry run (no changes are made to files) - --force Bypass Git safety checks and forcibly run migration - --migration, -m Name of the migration to run + --force Bypass Git safety checks ${colors.heading("Values")}: - ${colors.arg("projectDir")} The Remix project directory - ${colors.arg("template")} The project template to use - ${colors.arg("remixPlatform")} \`node\` or \`cloudflare\` - - ${colors.arg( - "migration" - )} One of the choices from https://github.com/remix-run/remix/blob/main/packages/remix-dev/cli/migrate/migrations/index.ts ${colors.heading("Creating a new project")}: @@ -172,8 +165,6 @@ export async function run(argv: string[] = process.argv.slice(2)) { "--interactive": Boolean, "--no-interactive": Boolean, "--json": Boolean, - "--migration": String, - "-m": "--migration", "--port": Number, "-p": "--port", "--remix-version": String, @@ -484,12 +475,8 @@ export async function run(argv: string[] = process.argv.slice(2)) { case "setup": await commands.setup(input[1]); break; - case "migrate": { - let { projectDir, migrationId } = await commands.migrate.resolveInput( - { migrationId: flags.migration, projectId: input[1] }, - flags - ); - await commands.migrate.run({ flags, migrationId, projectDir }); + case "codemod": { + await commands.codemod(input[1], input[2]); break; } case "dev": diff --git a/packages/remix-dev/codemod/codemod.ts b/packages/remix-dev/codemod/codemod.ts new file mode 100644 index 00000000000..3e22a778049 --- /dev/null +++ b/packages/remix-dev/codemod/codemod.ts @@ -0,0 +1,6 @@ +export type Options = { + dry: boolean; + force: boolean; +}; + +export type Codemod = (projectDir: string, options: Options) => Promise; diff --git a/packages/remix-dev/codemod/createTransform.ts b/packages/remix-dev/codemod/createTransform.ts new file mode 100644 index 00000000000..2f41e3466a2 --- /dev/null +++ b/packages/remix-dev/codemod/createTransform.ts @@ -0,0 +1,32 @@ +import { transformSync } from "@babel/core"; +import { strict as assert } from "assert"; +// @ts-expect-error TODO +import babelPluginSyntaxJsx from "@babel/plugin-syntax-jsx"; +// @ts-expect-error TODO +import babelPluginSyntaxTypescript from "@babel/plugin-syntax-typescript"; + +import babelRecastPlugin from "./utils/babelPluginRecast"; +import type { BabelPlugin } from "./utils/babel"; + +type Transform = (code: string, filepath: string) => string; + +export default (plugin: BabelPlugin): Transform => + (code, filepath) => { + let result = transformSync(code, { + babelrc: false, + configFile: false, + filename: filepath, + plugins: [babelPluginSyntaxTypescript, babelRecastPlugin, plugin], + overrides: [ + { + test: /\.tsx$/, + plugins: [ + babelPluginSyntaxJsx, + [babelPluginSyntaxTypescript, { isTSX: true }], + ], + }, + ], + }); + assert(result, "transformSync must return a result"); + return result.code!; + }; diff --git a/packages/remix-dev/codemod/index.ts b/packages/remix-dev/codemod/index.ts new file mode 100644 index 00000000000..60435d087a7 --- /dev/null +++ b/packages/remix-dev/codemod/index.ts @@ -0,0 +1,68 @@ +import * as path from "path"; + +import { blue, yellow } from "../colors"; +import * as git from "./utils/git"; +import * as log from "./utils/log"; +import { task } from "./utils/task"; +import { type Options } from "./codemod"; +import replaceRemixMagicImports from "./replace-remix-magic-imports"; +import { CodemodError } from "./utils/error"; + +const codemods = { + "replace-remix-magic-imports": replaceRemixMagicImports, +} as const; + +type CodemodName = keyof typeof codemods; + +const isCodemodName = (maybe: string): maybe is CodemodName => + Object.keys(codemods).includes(maybe); + +const availableCodemodsText = [ + "Available codemods:", + ...Object.keys(codemods) + .sort() + .map((name) => `- ${name}`), +].join("\n"); + +export default async ( + projectDir: string, + codemodName: string, + { dry = false, force = false }: Partial = {} +) => { + if (dry) log.info(`${yellow("! Dry mode")}: files will not be overwritten`); + if (force) + log.info(`${yellow("! Force mode")}: uncommitted changes may be lost`); + + let gitStatus = await git.status(projectDir); + if (!dry && !force && gitStatus === "not a git repository") { + throw new CodemodError( + `${path.resolve(projectDir)} is not a git repository`, + "To override this safety check, use the --force flag" + ); + } + if (!dry && !force && gitStatus === "dirty") { + throw new CodemodError( + `${path.resolve(projectDir)} has uncommitted changes`, + [ + "Stash or commit your changes before running codemods", + "To override this safety check, use the --force flag", + ].join("\n") + ); + } + + let codemod = await task( + `Finding codemod: ${blue(codemodName)}`, + async () => { + if (!isCodemodName(codemodName)) { + throw new CodemodError( + `Unrecognized codemod: ${blue(codemodName)}`, + availableCodemodsText + ); + } + return codemods[codemodName]; + }, + `Found codemod: ${blue(codemodName)}` + ); + + await codemod(projectDir, { dry, force }); +}; diff --git a/packages/remix-dev/codemod/replace-remix-magic-imports/index.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/index.ts new file mode 100644 index 00000000000..24b46f6342c --- /dev/null +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/index.ts @@ -0,0 +1,186 @@ +import NpmCliPackageJson from "@npmcli/package-json"; +import glob from "fast-glob"; +import fs from "fs"; +import { maxBy } from "lodash"; +import semver from "semver"; + +import { blue, cyan, gray } from "../../colors"; +import { readConfig } from "../../config"; +import { getPreferredPackageManager } from "../../cli/getPreferredPackageManager"; +import type { Codemod } from "../codemod"; +import { CodemodError } from "../utils/error"; +import * as log from "../utils/log"; +import { task } from "../utils/task"; +import replaceRemixImports from "./transform"; +import type { Dependency } from "./utils/dependencies"; +import * as Dependencies from "./utils/dependencies"; +import { detectAdapter, detectRuntime } from "./utils/detect"; +import * as Postinstall from "./utils/postinstall"; +import { isRemixPackage } from "./utils/remix"; + +const code = (message: string) => cyan("`" + message + "`"); + +const getRemixVersionSpec = (remixDeps: Dependency[]): string => { + let candidate = maxBy(remixDeps, (dep) => semver.minVersion(dep.versionSpec)); + if (candidate === undefined) { + throw new CodemodError("Could not find versions for your Remix packages"); + } + + let candidateMin = semver.minVersion(candidate.versionSpec); + if (candidateMin === null) { + throw new CodemodError("Could not find versions for your Remix packages"); + } + + if (semver.lt(candidateMin, "1.3.3")) return "^1.3.3"; + + return candidate.versionSpec; +}; + +const codemod: Codemod = async (projectDir, options) => { + let pkg = await NpmCliPackageJson.load(projectDir); + + let adapter = await task( + "Detecting Remix server adapter", + async () => detectAdapter(pkg.content), + (adapter) => + adapter + ? `Detected Remix server adapter: ${blue(adapter)}` + : "No Remix server adapter detected" + ); + + let runtime = await task( + "Detecting Remix server runtime", + async () => detectRuntime(pkg.content, adapter), + (runtime) => `Detected Remix server runtime: ${blue(runtime)}` + ); + + await task( + `Removing magic ${code("remix")} package from dependencies`, + async () => { + let deps = Dependencies.parse(pkg.content.dependencies); + let remixDeps = deps.filter(({ name }) => isRemixPackage(name)); + let otherDeps = deps.filter(({ name }) => !isRemixPackage(name)); + let devDeps = Dependencies.parse(pkg.content.devDependencies); + let remixDevDeps = devDeps.filter(({ name }) => isRemixPackage(name)); + let otherDevDeps = devDeps.filter(({ name }) => !isRemixPackage(name)); + + // detect `@remix-run/serve` + let remixServeInstalled = remixDeps + .map(({ name }) => name) + .includes("@remix-run/serve"); + + // determine latest Remix version that is compatible with project + let remixVersionSpec = getRemixVersionSpec([ + ...remixDeps, + ...remixDevDeps, + ]); + pkg.update({ + dependencies: { + ...Dependencies.unparse(otherDeps), + // ensure Remix renderer dependency + "@remix-run/react": remixVersionSpec, + // ensure Remix server runtime dependency + [`@remix-run/${runtime}`]: remixVersionSpec, + // ensure Remix server adapter dependency, if in use + ...(adapter ? { [`@remix-run/${adapter}`]: remixVersionSpec } : {}), + // ensure Remix serve dependency, if in use + ...(remixServeInstalled + ? { [`@remix-run/serve`]: remixVersionSpec } + : {}), + }, + devDependencies: { + ...Dependencies.unparse(otherDevDeps), + ...Dependencies.unparse( + remixDevDeps.map(({ name }) => ({ + name, + versionSpec: remixVersionSpec, + })) + ), + // ensure Remix dev dependency + [`@remix-run/dev`]: remixVersionSpec, + }, + }); + if (options.dry) return; + await pkg.save(); + }, + `Removed magic ${code("remix")} package from dependencies` + ); + + await task( + `Removing ${code("remix setup")} from postinstall script`, + async () => { + let postinstall = pkg.content.scripts?.postinstall; + if (postinstall === undefined) return; + if (!Postinstall.hasRemixSetup(postinstall)) return; + if (!Postinstall.isOnlyRemixSetup(postinstall)) { + throw Error( + `Could not automatically remove ${code( + "remix setup" + )} from postinstall script` + ); + } + + pkg.update({ + scripts: Object.fromEntries( + Object.entries(pkg.content.scripts || {}).filter( + ([script]) => script !== "postinstall" + ) + ), + }); + if (options.dry) return; + await pkg.save(); + }, + `Removed ${code("remix setup")} from postinstall script` + ); + + let replaceRemixMagicImportsText = (soFar: number = 0, total?: number) => { + let text = `Replacing magic ${code("remix")} imports`; + if (total === undefined) return text; + return text + gray(` | ${soFar}/${total} files`); + }; + await task( + replaceRemixMagicImportsText(), + async (spinner) => { + let transform = replaceRemixImports({ runtime, adapter }); + + // get Remix app code file paths + let config = await readConfig(projectDir); + let files = glob.sync("**/*.+(js|jsx|ts|tsx)", { + absolute: true, + cwd: config.appDirectory, + }); + spinner.text = replaceRemixMagicImportsText(0, files.length); + + let changes: boolean = false; + // run the transform on each of those files + for (let [i, file] of files.entries()) { + spinner.text = replaceRemixMagicImportsText(i, files.length); + let code = fs.readFileSync(file, "utf-8"); + let result = transform(code, file); + if (result === code) continue; + changes = true; + + if (options.dry) { + spinner.info(`${file} would be changed`); + continue; + } + fs.writeFileSync(file, result); + } + if (options.dry && !changes) spinner.info("No files would be changed"); + return files.length; + }, + (fileCount) => + replaceRemixMagicImportsText(fileCount, fileCount).replace( + "Replacing", + "Replaced" + ) + ); + + if (!options.dry) { + let packageManager = getPreferredPackageManager(); + log.info( + `๐Ÿ‘‰ To update your lockfile, run ${code(`${packageManager} install`)}` + ); + } +}; +export default codemod; diff --git a/packages/remix-dev/codemod/replace-remix-magic-imports/transform.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/transform.ts new file mode 100644 index 00000000000..50957988e8e --- /dev/null +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/transform.ts @@ -0,0 +1,229 @@ +import { type NodePath } from "@babel/core"; +import * as t from "@babel/types"; +import _ from "lodash"; + +import createTransform from "../createTransform"; +import type { BabelPlugin } from "../utils/babel"; +import { CodemodError } from "../utils/error"; +import { + type Export, + getAdapterExports, + getRendererExports, + getRuntimeExports, +} from "./utils/export"; +import { + isRemixPackage, + type Adapter, + type RemixPackage, + type Runtime, +} from "./utils/remix"; + +type Options = { + runtime: Runtime; + adapter?: Adapter; +}; + +type ExistingExport = Export & { + // include declaration path for contextual error messages + _declaration: NodePath; +}; + +const createRemixMagicImportReplacer = ({ runtime, adapter }: Options) => { + let remixExports = [ + ...getRuntimeExports(runtime), + ...(adapter ? getAdapterExports(adapter) : []), + ...getRendererExports("react"), + ]; + + let _key = ({ kind, name }: Omit) => + `kind:${kind},name:${name}`; + + let remixImportReplacements = new Map< + string, + { source: Exclude; name: string } + >( + remixExports.map(({ source, kind, name }) => [ + _key({ kind, name }), + { source, name }, + ]) + ); + return (key: Omit) => + remixImportReplacements.get(_key(key)); +}; + +// NOTE: `import { type blah } from "blah"` syntax introduced in TS 4.5 +// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-5.html#type-modifiers-on-import-names +// which we started using in feb 18 2022 +// https://github.com/remix-run/remix/pull/2028/files#diff-c4027b59d017e68accdc8974b21bd70721924836b18284a05b5a4944cf463c6fL16 +// starting with v1.2.2 +// https://github.com/remix-run/remix/blob/v1.2.2/package.json#L102 +// which was release on February 21, 2022 + +const findRemixImportDeclarations = ( + program: NodePath +): NodePath[] => { + let found: NodePath[] = []; + program.traverse({ + ImportDeclaration: (path) => { + let source = path.node.source.value; + if (!isRemixPackage(source)) { + return; + } + found.push(path); + }, + }); + return found; +}; + +const flattenRemixImportDeclarations = ( + remixImportDeclarations: NodePath[] +): ExistingExport[] => { + let flattened: ExistingExport[] = []; + remixImportDeclarations.forEach((declaration) => { + let { source, specifiers } = declaration.node; + // Side-effect imports like `import "remix"` not produced flattened specifiers + // so they will not contribute to the new Remix import declarations + specifiers.forEach((specifier) => { + if (t.isImportDefaultSpecifier(specifier)) { + throw declaration.buildCodeFrameError( + "This codemod does not support default imports for the `remix` package.\n" + + "Replace the default import with named imports and try again." + ); + } + if (t.isImportNamespaceSpecifier(specifier)) { + throw declaration.buildCodeFrameError( + "This codemod does not support namespace imports for the `remix` package.\n" + + "Replace the namespace import with named imports and try again." + ); + } + let { imported, local, importKind } = specifier; + + let kind = + importKind === "type" || declaration.node.importKind === "type" + ? ("type" as const) + : importKind ?? declaration.node.importKind ?? "value"; + + let name = t.isStringLiteral(imported) ? imported.value : imported.name; + + flattened.push({ + source: source.value as RemixPackage, + kind, + name, + alias: local.name === name ? undefined : local.name, + _declaration: declaration, + }); + }); + }); + return flattened; +}; + +const convertToNewRemixImports = ( + currentRemixImports: ExistingExport[], + options: Options +): Export>[] => { + let replaceRemixMagicImport = createRemixMagicImportReplacer(options); + return currentRemixImports.map((currentRemixImport) => { + if (currentRemixImport.source !== "remix") { + return currentRemixImport as Export>; + } + + let newRemixImport = replaceRemixMagicImport({ + kind: currentRemixImport.kind, + name: currentRemixImport.name, + }); + if (newRemixImport === undefined) { + throw currentRemixImport._declaration.buildCodeFrameError( + `Unrecognized import from 'remix': ` + + `${currentRemixImport.kind === "type" ? "type " : ""}${ + currentRemixImport.name + }` + ); + } + return { + source: newRemixImport.source, + kind: currentRemixImport.kind, + name: newRemixImport.name, + alias: currentRemixImport.alias, + }; + }); +}; + +const groupImportsBySource = ( + imports: Export[] +) => { + let grouped = new Map[]>(); + imports.forEach((imp) => { + let current = grouped.get(imp.source) ?? []; + grouped.set(imp.source, [...current, imp]); + }); + return grouped; +}; + +const plugin = + (options: Options): BabelPlugin => + (babel) => { + let { types: t } = babel; + return { + visitor: { + Program(program) { + // find current Remix import declarations + let currentRemixImportDeclarations = + findRemixImportDeclarations(program); + + // check for magic `from "remix"` imports + let magicRemixImports = currentRemixImportDeclarations.filter( + (path) => path.node.source.value === "remix" + ); + if (magicRemixImports.length === 0) return; + + // flatten current Remix import declarations to specifiers + let currentRemixImports = flattenRemixImportDeclarations( + currentRemixImportDeclarations + ); + + // convert current remix imports to new imports + let newRemixImports = convertToNewRemixImports( + currentRemixImports, + options + ); + + // group new imports by source + let newRemixImportsBySource: [string, Export[]][] = Array.from( + groupImportsBySource(newRemixImports) + ); + + // create new import declarations + let newRemixImportDeclarations = _.sortBy( + newRemixImportsBySource, + ([source]) => source + ).map(([source, specifiers]) => { + return t.importDeclaration( + _.sortBy(specifiers, ["kind", "name"]).map((spec) => { + if (spec.source !== source) + throw new CodemodError( + `Specifier source '${spec.source}' does not match declaration source '${source}'` + ); + return { + type: "ImportSpecifier", + local: t.identifier(spec.alias ?? spec.name), + imported: t.identifier(spec.name), + importKind: spec.kind, + }; + }), + t.stringLiteral(source) + ); + }); + + // add new remix import declarations + currentRemixImportDeclarations[0].insertAfter( + newRemixImportDeclarations + ); + + // remove old remix import declarations + currentRemixImportDeclarations.forEach((decl) => decl.remove()); + }, + }, + }; + }; + +export default (options: Options) => createTransform(plugin(options)); diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/dependency.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/dependencies.ts similarity index 50% rename from packages/remix-dev/cli/migrate/migrations/replace-remix-imports/dependency.ts rename to packages/remix-dev/codemod/replace-remix-magic-imports/utils/dependencies.ts index 0eb52f73cc8..f206afedc23 100644 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/dependency.ts +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/dependencies.ts @@ -3,17 +3,14 @@ export interface Dependency { versionSpec: string; } -export let depsToEntries = (deps?: Record): Dependency[] => +export let parse = (deps?: Record): Dependency[] => Object.entries(deps || {}).map(([name, versionSpec]) => ({ name, versionSpec, })); -export let depsToObject = (deps: Dependency[]): Record => { +export let unparse = (deps: Dependency[]): Record => { return Object.fromEntries( deps.map(({ name, versionSpec }) => [name, versionSpec]) ); }; - -export const isRemixPackage = (name: string): boolean => - name === "remix" || name.startsWith("@remix-run/"); diff --git a/packages/remix-dev/codemod/replace-remix-magic-imports/utils/detect.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/detect.ts new file mode 100644 index 00000000000..5e7160597ec --- /dev/null +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/detect.ts @@ -0,0 +1,66 @@ +import { type PackageJson } from "@npmcli/package-json"; + +import { CodemodError } from "../../utils/error"; +import * as Dependencies from "./dependencies"; +import * as Postinstall from "./postinstall"; +import { type Adapter, type Runtime, isAdapter, isRemixPackage } from "./remix"; + +const autoDetectPostinstallRuntime = ( + packageJson: PackageJson +): Runtime | undefined => { + let postinstall = packageJson.scripts?.postinstall; + if (postinstall === undefined) return undefined; + + // match `remix setup ` in `postinstall` script + return Postinstall.parseRuntime(postinstall); +}; + +const adapterToRuntime: Record = { + architect: "node", + "cloudflare-pages": "cloudflare", + "cloudflare-workers": "cloudflare", + express: "node", + netlify: "node", + vercel: "node", +}; + +export const detectRuntime = ( + packageJson: PackageJson, + adapter?: Adapter +): Runtime => { + // match `remix setup ` in `postinstall` script + let postinstallRuntime = autoDetectPostinstallRuntime(packageJson); + if (postinstallRuntime) return postinstallRuntime; + + // infer runtime from adapter + if (adapter) return adapterToRuntime[adapter]; + + // @remix-run/serve uses node + let deps = Dependencies.parse(packageJson.dependencies); + let remixDeps = deps.filter(({ name }) => isRemixPackage(name)); + if (remixDeps.map(({ name }) => name).includes("@remix-run/serve")) { + return "node" as const; + } + + throw new CodemodError("Could not detect your Remix server runtime"); +}; + +export const detectAdapter = ( + packageJson: PackageJson +): Adapter | undefined => { + // find adapter in package.json dependencies + let deps = Dependencies.parse(packageJson.dependencies); + let remixDeps = deps.filter(({ name }) => isRemixPackage(name)); + let adapters = remixDeps + .map(({ name }) => name.replace(/^@remix-run\//, "")) + .filter(isAdapter); + + if (adapters.length === 0) return undefined; + if (adapters.length > 1) { + throw new CodemodError( + "Found multiple Remix server adapters your in dependencies", + adapters.map((adapter) => `- @remix-run/${adapter}`).join("\n") + ); + } + return adapters[0]; +}; diff --git a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/packageExports.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts similarity index 57% rename from packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/packageExports.ts rename to packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts index c6a34189002..b078e2065ec 100644 --- a/packages/remix-dev/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/packageExports.ts +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts @@ -1,50 +1,47 @@ -export type Exports = { - type: string[]; - value: string[]; +import { type Adapter, type Renderer, type Runtime } from "./remix"; + +export type Export = { + source: Source; + kind: "type" | "value" | "typeof"; + name: string; + alias?: string; }; -export type Adapter = - | "architect" - | "cloudflare-pages" - | "cloudflare-workers" - | "express" - | "netlify" - | "vercel"; -export const adapters: Adapter[] = [ - "architect", - "cloudflare-pages", - "cloudflare-workers", - "express", - "netlify", - "vercel", -]; +const exportsFromNames = ( + source: Source, + names: { + type: readonly string[]; + value: readonly string[]; + } +): Export[] => { + return [ + ...names.type.map( + (name) => + ({ + source, + kind: "type", + name, + } as const) + ), + ...names.value.map( + (name) => + ({ + source, + kind: "value", + name, + } as const) + ), + ]; +}; -export type Runtime = "cloudflare" | "node"; -export const runtimes: Runtime[] = ["cloudflare", "node"]; +type ExportNames = { + type: string[]; + value: string[]; +}; -export type Package = Adapter | Runtime | "react"; +// Runtimes -const defaultAdapterExports: Exports = { - value: ["createRequestHandler"], - type: ["GetLoadContextFunction", "RequestHandler"], -}; -const defaultRuntimeExports: Exports = { - value: [ - "createCookie", - "createCookieSessionStorage", - "createMemorySessionStorage", - "createRequestHandler", - "createSession", - "createSessionStorage", - "isCookie", - "isSession", - "json", - "MaxPartSizeExceededError", - "redirect", - "unstable_composeUploadHandlers", - "unstable_createMemoryUploadHandler", - "unstable_parseMultipartFormData", - ], +const defaultRuntimeExports: ExportNames = { type: [ "ActionFunction", "AppData", @@ -83,40 +80,31 @@ const defaultRuntimeExports: Exports = { "UploadHandler", "UploadHandlerPart", ], + value: [ + "createCookie", + "createCookieSessionStorage", + "createMemorySessionStorage", + "createRequestHandler", + "createSession", + "createSessionStorage", + "isCookie", + "isSession", + "json", + "MaxPartSizeExceededError", + "redirect", + "unstable_composeUploadHandlers", + "unstable_createMemoryUploadHandler", + "unstable_parseMultipartFormData", + ], }; -export const packageExports: Record = { - architect: { - value: [...defaultAdapterExports.value, "createArcTableSessionStorage"], - type: [...defaultAdapterExports.type], - }, +const exportNamesByRuntime: Record> = { cloudflare: { - value: [...defaultRuntimeExports.value, "createCloudflareKVSessionStorage"], - type: [...defaultRuntimeExports.type], - }, - "cloudflare-pages": { - value: [...defaultAdapterExports.value, "createPagesFunctionHandler"], - type: [...defaultAdapterExports.type, "createPagesFunctionHandlerParams"], - }, - "cloudflare-workers": { - value: [ - ...defaultAdapterExports.value, - "createEventHandler", - "handleAsset", - ], - type: [...defaultAdapterExports.type], - }, - express: { - value: [...defaultAdapterExports.value], - type: [...defaultAdapterExports.type], - }, - netlify: { - value: [...defaultAdapterExports.value], - type: [...defaultAdapterExports.type], + value: ["createCloudflareKVSessionStorage"], }, node: { + type: ["HeadersInit", "RequestInfo", "RequestInit", "ResponseInit"], value: [ - ...defaultRuntimeExports.value, "AbortController", "createFileSessionStorage", "createReadableStreamFromReadable", @@ -132,15 +120,67 @@ export const packageExports: Record = { "writeAsyncIterableToWritable", "writeReadableStreamToWritable", ], - type: [ - ...defaultRuntimeExports.type, - "HeadersInit", - "RequestInfo", - "RequestInit", - "ResponseInit", - ], }, +}; + +export const getRuntimeExports = (runtime: Runtime) => { + let names = exportNamesByRuntime[runtime]; + return exportsFromNames(`@remix-run/${runtime}`, { + type: [...defaultRuntimeExports.type, ...(names.type ?? [])], + value: [...defaultRuntimeExports.value, ...(names.value ?? [])], + }); +}; + +// Adapters + +const defaultAdapterExports: ExportNames = { + type: ["GetLoadContextFunction", "RequestHandler"], + value: ["createRequestHandler"], +}; + +const exportNamesByAdapter: Record> = { + architect: { + value: ["createArcTableSessionStorage"], + }, + "cloudflare-pages": { + type: ["createPagesFunctionHandlerParams"], + value: ["createPagesFunctionHandler"], + }, + "cloudflare-workers": { + value: ["createEventHandler", "handleAsset"], + }, + express: {}, + netlify: {}, + vercel: {}, +}; + +export const getAdapterExports = (adapter: Adapter) => { + let names = exportNamesByAdapter[adapter]; + return exportsFromNames(`@remix-run/${adapter}`, { + type: [...defaultAdapterExports.type, ...(names.type ?? [])], + value: [...defaultAdapterExports.value, ...(names.value ?? [])], + }); +}; + +// Renderers + +const exportsByRenderer: Record> = { react: { + type: [ + "FormEncType", + "FormMethod", + "FormProps", + "HtmlLinkDescriptor", + "HtmlMetaDescriptor", + "LinkProps", + "NavLinkProps", + "RemixBrowserProps", + "RemixServerProps", + "ShouldReloadFunction", + "SubmitFunction", + "SubmitOptions", + "ThrownResponse", + ], value: [ "Form", "Link", @@ -174,24 +214,13 @@ export const packageExports: Record = { "useSubmit", "useTransition", ], - type: [ - "FormEncType", - "FormMethod", - "FormProps", - "HtmlLinkDescriptor", - "HtmlMetaDescriptor", - "LinkProps", - "NavLinkProps", - "RemixBrowserProps", - "RemixServerProps", - "ShouldReloadFunction", - "SubmitFunction", - "SubmitOptions", - "ThrownResponse", - ], - }, - vercel: { - value: [...defaultAdapterExports.value], - type: [...defaultAdapterExports.type], }, }; + +export const getRendererExports = (renderer: Renderer) => { + let names = exportsByRenderer[renderer]; + return exportsFromNames(`@remix-run/${renderer}`, { + type: names.type ?? [], + value: names.value ?? [], + }); +}; diff --git a/packages/remix-dev/codemod/replace-remix-magic-imports/utils/postinstall.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/postinstall.ts new file mode 100644 index 00000000000..2fad8592939 --- /dev/null +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/postinstall.ts @@ -0,0 +1,25 @@ +import { type Runtime, isRuntime } from "./remix"; + +const remixSetup = /\s*remix\s+setup(?:$|\s+)/; +const remixSetupRuntime = /\s*remix\s+setup\s+(\w+)\s*/; +const onlyRemixSetup = new RegExp(`^${remixSetup.source}$`); +const onlyRemixSetupRuntime = new RegExp(`^${remixSetupRuntime.source}$`); + +export const parseRuntime = (postinstall: string): Runtime | undefined => { + // match `remix setup ` in `postinstall` script + let runtimeMatch = postinstall.match(remixSetupRuntime); + if (runtimeMatch === null) return "node"; + let runtime = runtimeMatch[1]; + if (isRuntime(runtime)) return runtime; + console.warn( + `๏ธโš ๏ธ You have \`${runtime}\` in your \`postinstall\` script, but \`${runtime}\` is not a valid Remix server runtime.` + ); + return undefined; +}; + +export const hasRemixSetup = (postinstall: string) => { + return remixSetup.test(postinstall); +}; + +export const isOnlyRemixSetup = (postinstall: string) => + onlyRemixSetup.test(postinstall) || onlyRemixSetupRuntime.test(postinstall); diff --git a/packages/remix-dev/codemod/replace-remix-magic-imports/utils/remix.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/remix.ts new file mode 100644 index 00000000000..77e04b85cec --- /dev/null +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/remix.ts @@ -0,0 +1,29 @@ +// Runtimes +export const runtimes = ["cloudflare", "node"] as const; +export type Runtime = typeof runtimes[number]; +export const isRuntime = (maybe: string): maybe is Runtime => + (runtimes as readonly string[]).includes(maybe); + +// Adapters +const adapters = [ + "architect", + "cloudflare-pages", + "cloudflare-workers", + "express", + "netlify", + "vercel", +] as const; +export type Adapter = typeof adapters[number]; +export const isAdapter = (maybe: string): maybe is Adapter => + (adapters as readonly string[]).includes(maybe); + +// Renderers +const renderers = ["react"] as const; +export type Renderer = typeof renderers[number]; + +export type RemixPackage = + | "remix" + | `@remix-run/${Runtime | Adapter | Renderer}`; +export const isRemixPackage = (pkgName: string): pkgName is RemixPackage => { + return pkgName === "remix" || pkgName.startsWith("@remix-run/"); +}; diff --git a/packages/remix-dev/codemod/utils/babel.ts b/packages/remix-dev/codemod/utils/babel.ts new file mode 100644 index 00000000000..bbfe17b5cdf --- /dev/null +++ b/packages/remix-dev/codemod/utils/babel.ts @@ -0,0 +1,27 @@ +import type Babel from "@babel/core"; +import type { File } from "@babel/types"; + +/** + * Fixes the `PluginObj` type from `@babel/core` by making all fields optional + * and adding parser and generator override methods. + * + * Adapted from [@codemod/core](https://github.com/codemod-js/codemod/blob/5a9fc6968409613eefd87e646408c08b6dad0c40/packages/core/src/BabelPluginTypes.ts) + */ +export interface PluginObj extends Partial> { + parserOverride?( + code: string, + options: Babel.ParserOptions, + parse: (code: string, options: Babel.ParserOptions) => File + ): File; + + generatorOverride?( + ast: File, + options: Babel.GeneratorOptions, + code: string, + generate: (ast: File, options: Babel.GeneratorOptions) => string + ): { code: string; map?: object }; +} + +type RawBabelPlugin = (babel: typeof Babel) => PluginObj; +type RawBabelPluginWithOptions = [RawBabelPlugin, object]; +export type BabelPlugin = RawBabelPlugin | RawBabelPluginWithOptions; diff --git a/packages/remix-dev/codemod/utils/babelPluginRecast.ts b/packages/remix-dev/codemod/utils/babelPluginRecast.ts new file mode 100644 index 00000000000..e64307d06a1 --- /dev/null +++ b/packages/remix-dev/codemod/utils/babelPluginRecast.ts @@ -0,0 +1,33 @@ +import type Babel from "@babel/core"; +import type { File } from "@babel/types"; +import * as recast from "recast"; + +import type { PluginObj } from "./babel"; + +function parse( + code: string, + options: Babel.ParserOptions, + parse: (code: string, options: Babel.ParserOptions) => File +): File { + return recast.parse(code, { + parser: { + parse(code: string) { + return parse(code, { ...options, tokens: true }); + }, + }, + }); +} + +function generate(ast: File): { code: string; map?: object } { + return recast.print(ast); +} + +/** + * Adapted from [@codemod/core](https://github.com/codemod-js/codemod/blob/5a9fc6968409613eefd87e646408c08b6dad0c40/packages/core/src/RecastPlugin.ts) + */ +export default function (): PluginObj { + return { + parserOverride: parse, + generatorOverride: generate, + }; +} diff --git a/packages/remix-dev/codemod/utils/error.ts b/packages/remix-dev/codemod/utils/error.ts new file mode 100644 index 00000000000..2b64e070716 --- /dev/null +++ b/packages/remix-dev/codemod/utils/error.ts @@ -0,0 +1,14 @@ +export class CodemodError extends Error { + additionalInfo?: string; + + constructor(message: string, additionalInfo?: string) { + super(message); + + // Show up in console as `CodemodError`, not just `Error` + this.name = this.constructor.name; + + Error.captureStackTrace(this, this.constructor); + + this.additionalInfo = additionalInfo; + } +} diff --git a/packages/remix-dev/codemod/utils/git.ts b/packages/remix-dev/codemod/utils/git.ts new file mode 100644 index 00000000000..0d9a5f505da --- /dev/null +++ b/packages/remix-dev/codemod/utils/git.ts @@ -0,0 +1,29 @@ +import execa from "execa"; + +type GitStatus = "not a git repository" | "clean" | "dirty"; + +const TEN_MEBIBYTE = 1024 * 1024 * 10; +export const status = async ( + dir: string = process.cwd() +): Promise => { + // Simplified version of `sync` method of `is-git-clean` package + try { + let gitStatus = await execa("git", ["status", "--porcelain"], { + cwd: dir, + encoding: "utf8", + maxBuffer: TEN_MEBIBYTE, + }); + + return gitStatus.stdout === "" ? "clean" : "dirty"; + } catch (error: unknown) { + if ( + error instanceof Error && + error.message.includes( + "fatal: not a git repository (or any of the parent directories): .git" + ) + ) { + return "not a git repository"; + } + throw error; + } +}; diff --git a/packages/remix-dev/codemod/utils/log.ts b/packages/remix-dev/codemod/utils/log.ts new file mode 100644 index 00000000000..9212bd4719d --- /dev/null +++ b/packages/remix-dev/codemod/utils/log.ts @@ -0,0 +1,4 @@ +import { gray, red } from "../../colors"; + +export const info = (message: string) => console.info(gray(message)); +export const error = (message: string) => console.error(red(message)); diff --git a/packages/remix-dev/codemod/utils/task.ts b/packages/remix-dev/codemod/utils/task.ts new file mode 100644 index 00000000000..7716fda631e --- /dev/null +++ b/packages/remix-dev/codemod/utils/task.ts @@ -0,0 +1,26 @@ +import ora from "ora"; + +import * as log from "./log"; +import { CodemodError } from "./error"; + +export class TaskError extends Error {} + +export const task = async ( + start: string, + callback: (spinner: ora.Ora) => Promise, + succeed: string | ((result: Result) => string) = start +): Promise => { + let spinner = ora(start).start(); + try { + let result = await callback(spinner); + spinner.succeed(typeof succeed === "string" ? succeed : succeed(result)); + return result; + } catch (error) { + if (error instanceof CodemodError) { + spinner.fail(error.message); + if (error.additionalInfo) log.info(error.additionalInfo); + throw new TaskError(error.message); + } + throw error; + } +}; diff --git a/packages/remix-dev/colors.ts b/packages/remix-dev/colors.ts index 010f505ea21..054f1c78566 100644 --- a/packages/remix-dev/colors.ts +++ b/packages/remix-dev/colors.ts @@ -18,6 +18,12 @@ export const logoYellow = safe(chalk.yellowBright); export const logoPink = safe(chalk.magentaBright); export const logoRed = safe(chalk.redBright); -export const gray = safe(chalk.gray); -export const blue = safe(chalk.blue); +// raw styles export const bold = safe(chalk.bold); + +// raw colors +export const blue = safe(chalk.blue); +export const cyan = safe(chalk.cyan); +export const gray = safe(chalk.gray); +export const red = safe(chalk.red); +export const yellow = safe(chalk.yellow); diff --git a/packages/remix-dev/package.json b/packages/remix-dev/package.json index 183c8d4df37..4f1d621c81e 100644 --- a/packages/remix-dev/package.json +++ b/packages/remix-dev/package.json @@ -20,8 +20,10 @@ "dependencies": { "@babel/core": "^7.18.6", "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/plugin-syntax-typescript": "^7.20.0", "@babel/preset-env": "^7.18.6", "@babel/preset-typescript": "^7.18.6", + "@babel/types": "^7.20.2", "@esbuild-plugins/node-modules-polyfill": "^0.1.4", "@npmcli/package-json": "^2.0.0", "@remix-run/server-runtime": "1.7.5", @@ -32,6 +34,7 @@ "chokidar": "^3.5.1", "dotenv": "^16.0.0", "esbuild": "0.14.51", + "execa": "5.1.1", "exit-hook": "2.2.1", "express": "^4.17.1", "fast-glob": "3.2.11", @@ -50,6 +53,7 @@ "prettier": "2.7.1", "pretty-ms": "^7.0.1", "proxy-agent": "^5.0.0", + "recast": "^0.21.5", "remark-frontmatter": "4.0.1", "remark-mdx-frontmatter": "^1.0.1", "semver": "^7.3.7", diff --git a/packages/remix-dev/rollup.config.js b/packages/remix-dev/rollup.config.js index 6bb4b9ab048..39c01b3de4f 100644 --- a/packages/remix-dev/rollup.config.js +++ b/packages/remix-dev/rollup.config.js @@ -71,26 +71,6 @@ module.exports = function rollup() { ], }, getCliConfig({ packageName, version }), - { - external: (id) => isBareModuleId(id), - input: [`${sourceDir}/cli/migrate/migrations/transforms.ts`], - output: { - banner: createBanner("@remix-run/dev", version), - dir: `${outputDist}/cli/migrate/migrations`, - exports: "named", - format: "cjs", - preserveModules: true, - }, - plugins: [ - babel({ - babelHelpers: "bundled", - exclude: /node_modules/, - extensions: [".ts"], - }), - nodeResolve({ extensions: [".ts"] }), - copyToPlaygrounds(), - ], - }, { external() { return true; diff --git a/yarn.lock b/yarn.lock index e0944b6ef99..f177824e62b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,24 +31,24 @@ "@babel/code-frame@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6", "@babel/compat-data@^7.20.0": + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== + +"@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/compat-data@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" - integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== - "@babel/compat-data@^7.19.1": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz" integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== "@babel/core@7.16.12": @@ -72,7 +72,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2": version "7.18.2" resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz" integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== @@ -93,21 +93,21 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/core@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.6.tgz#54a107a3c298aee3fe5e1947a6464b9b6faca03d" - integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ== +"@babel/core@^7.13.16", "@babel/core@^7.18.6", "@babel/core@^7.8.0": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helpers" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/generator" "^7.20.2" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.1" + "@babel/parser" "^7.20.2" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -116,7 +116,7 @@ "@babel/core@^7.19.1": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.1.tgz#c8fa615c5e88e272564ace3d42fbc8b17bfeb22b" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz" integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== dependencies: "@ampproject/remapping" "^2.1.0" @@ -137,63 +137,57 @@ "@babel/eslint-parser@^7.19.1": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz" integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.16.8", "@babel/generator@^7.18.2", "@babel/generator@^7.7.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz" - integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== - dependencies: - "@babel/types" "^7.18.2" - "@jridgewell/gen-mapping" "^0.3.0" - jsesc "^2.5.1" - -"@babel/generator@^7.18.6": - version "7.18.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.7.tgz#2aa78da3c05aadfc82dbac16c99552fc802284bd" - integrity sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A== +"@babel/generator@^7.16.8", "@babel/generator@^7.18.2", "@babel/generator@^7.20.1", "@babel/generator@^7.20.2", "@babel/generator@^7.7.2": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.2.tgz" + integrity sha512-SD75PMIK6i9H8G/tfGvB4KKl4Nw6Ssos9nGgYwxbgyTP0iX/Z55DveoH86rmUB/YHTQQ+ZC0F7xxaY8l2OF44Q== dependencies: - "@babel/types" "^7.18.7" + "@babel/types" "^7.20.2" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" "@babel/generator@^7.19.0": version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz" integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== dependencies: "@babel/types" "^7.19.0" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-annotate-as-pure@^7.18.6": +"@babel/helper-annotate-as-pure@^7.16.7", "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz#f14d640ed1ee9246fb33b8255f08353acfe70e6a" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz" integrity sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw== dependencies: "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.18.2": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.6", "@babel/helper-compilation-targets@^7.20.0": + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== + dependencies: + "@babel/compat-data" "^7.20.0" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + semver "^6.3.0" + +"@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.18.2": version "7.18.2" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz" integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== @@ -203,19 +197,9 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" - integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== - dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" - semver "^6.3.0" - "@babel/helper-compilation-targets@^7.19.1": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz" integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== dependencies: "@babel/compat-data" "^7.19.1" @@ -223,7 +207,7 @@ browserslist "^4.21.3" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.18.0": version "7.18.0" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz" integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== @@ -238,7 +222,7 @@ "@babel/helper-create-class-features-plugin@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz#6f15f8459f3b523b39e00a99982e2c040871ed72" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz" integrity sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -249,17 +233,9 @@ "@babel/helper-replace-supers" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz" - integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" - "@babel/helper-create-regexp-features-plugin@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz" integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -279,62 +255,29 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz" - integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== - -"@babel/helper-environment-visitor@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" - integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q== - -"@babel/helper-environment-visitor@^7.18.9": +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.6", "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/helper-function-name@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz#8334fecb0afba66e6d87a7e8c6bb7fed79926b83" - integrity sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw== - dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.19.0": +"@babel/helper-function-name@^7.17.9", "@babel/helper-function-name@^7.18.6", "@babel/helper-function-name@^7.19.0": version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== dependencies: "@babel/template" "^7.18.10" "@babel/types" "^7.19.0" -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" @@ -348,21 +291,21 @@ "@babel/helper-member-expression-to-functions@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz#44802d7d602c285e1692db0bad9396d007be2afc" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz" integrity sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz" integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" @@ -381,23 +324,23 @@ "@babel/traverse" "^7.18.0" "@babel/types" "^7.18.0" -"@babel/helper-module-transforms@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" - integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== dependencies: - "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" "@babel/helper-module-transforms@^7.19.0": version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz" integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== dependencies: "@babel/helper-environment-visitor" "^7.18.9" @@ -409,16 +352,9 @@ "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-optimise-call-expression@^7.18.6": +"@babel/helper-optimise-call-expression@^7.16.7", "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== dependencies: "@babel/types" "^7.18.6" @@ -428,19 +364,19 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz" integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz" - integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== - -"@babel/helper-plugin-utils@^7.18.6": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz" integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== +"@babel/helper-plugin-utils@^7.19.0": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + "@babel/helper-remap-async-to-generator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz#fa1f81acd19daee9d73de297c0308783cd3cfc23" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz" integrity sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -448,20 +384,9 @@ "@babel/helper-wrap-function" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-replace-supers@^7.16.7": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz" - integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== - dependencies: - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/helper-replace-supers@^7.18.6": +"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz#efedf51cfccea7b7b8c0f00002ab317e7abfe420" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz" integrity sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g== dependencies: "@babel/helper-environment-visitor" "^7.18.6" @@ -470,19 +395,12 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-simple-access@^7.16.7", "@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz" - integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== - dependencies: - "@babel/types" "^7.18.2" - -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== +"@babel/helper-simple-access@^7.16.7", "@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.6", "@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" @@ -493,53 +411,41 @@ "@babel/helper-skip-transparent-expression-wrappers@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz#7dff00a5320ca4cf63270e5a0eca4b268b7380d9" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz" integrity sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-split-export-declaration@^7.18.6": +"@babel/helper-split-export-declaration@^7.16.7", "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== -"@babel/helper-validator-option@^7.18.6": +"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== "@babel/helper-wrap-function@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz#ec44ea4ad9d8988b90c3e465ba2382f4de81a073" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz" integrity sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw== dependencies: "@babel/helper-function-name" "^7.18.6" @@ -547,76 +453,53 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helpers@^7.16.7", "@babel/helpers@^7.18.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz" - integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/helpers@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" - integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== +"@babel/helpers@^7.16.7", "@babel/helpers@^7.18.2", "@babel/helpers@^7.20.1": + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.0" "@babel/helpers@^7.19.0": version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz" integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== dependencies: "@babel/template" "^7.18.10" "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" -"@babel/highlight@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz" - integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.18.6": +"@babel/highlight@^7.16.7", "@babel/highlight@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0": - version "7.18.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz" - integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.16.12", "@babel/parser@^7.18.0", "@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.2.tgz" + integrity sha512-afk318kh2uKbo7BEj2QtEi8HVCGrwHUffrYDy7dgVcSa2j9lY3LDjPzcyGdpX7xgm35aWqvciZJ4WKmdF/SxYg== -"@babel/parser@^7.18.10", "@babel/parser@^7.19.1": +"@babel/parser@^7.19.1": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz" integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== -"@babel/parser@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" - integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz" integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -625,7 +508,7 @@ "@babel/plugin-proposal-async-generator-functions@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz" integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== dependencies: "@babel/helper-environment-visitor" "^7.18.6" @@ -641,17 +524,9 @@ "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-properties@^7.13.0": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz" - integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -659,7 +534,7 @@ "@babel/plugin-proposal-class-static-block@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -676,7 +551,7 @@ "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -692,7 +567,7 @@ "@babel/plugin-proposal-export-namespace-from@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz" integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -700,7 +575,7 @@ "@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -716,7 +591,7 @@ "@babel/plugin-proposal-logical-assignment-operators@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz" integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -730,17 +605,9 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz" - integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -756,7 +623,7 @@ "@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -764,7 +631,7 @@ "@babel/plugin-proposal-object-rest-spread@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz" integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== dependencies: "@babel/compat-data" "^7.18.6" @@ -775,7 +642,7 @@ "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -790,18 +657,9 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" - integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.6": +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz" integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -818,7 +676,7 @@ "@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -836,7 +694,7 @@ "@babel/plugin-proposal-private-property-in-object@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -844,22 +702,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.18.6": +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz" - integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-async-generators@7.8.4", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" @@ -911,7 +761,7 @@ "@babel/plugin-syntax-import-assertions@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz" integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -932,7 +782,7 @@ "@babel/plugin-syntax-jsx@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -1002,21 +852,28 @@ "@babel/plugin-syntax-typescript@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz" integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-syntax-typescript@^7.20.0": + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-transform-arrow-functions@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-async-to-generator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== dependencies: "@babel/helper-module-imports" "^7.18.6" @@ -1025,21 +882,21 @@ "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz" integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-classes@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz#3501a8f3f4c7d5697c27a3eedbee71d68312669f" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz" integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -1053,44 +910,36 @@ "@babel/plugin-transform-computed-properties@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz" integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-destructuring@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz" integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-dotall-regex@^7.18.6": +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-duplicate-keys@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz" integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" @@ -1106,14 +955,14 @@ "@babel/plugin-transform-for-of@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz#e0fdb813be908e91ccc9ec87b30cc2eabf046f7c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz" integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-function-name@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz" integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== dependencies: "@babel/helper-compilation-targets" "^7.18.6" @@ -1122,21 +971,21 @@ "@babel/plugin-transform-literals@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz" integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz" integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== dependencies: "@babel/helper-module-transforms" "^7.18.6" @@ -1153,19 +1002,9 @@ "@babel/helper-simple-access" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.13.8": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz" - integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-simple-access" "^7.18.2" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.18.6": +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz" integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== dependencies: "@babel/helper-module-transforms" "^7.18.6" @@ -1175,7 +1014,7 @@ "@babel/plugin-transform-modules-systemjs@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz" integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== dependencies: "@babel/helper-hoist-variables" "^7.18.6" @@ -1186,7 +1025,7 @@ "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: "@babel/helper-module-transforms" "^7.18.6" @@ -1194,7 +1033,7 @@ "@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz" integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -1202,14 +1041,14 @@ "@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -1217,35 +1056,35 @@ "@babel/plugin-transform-parameters@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz#cbe03d5a4c6385dd756034ac1baa63c04beab8dc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz" integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-display-name@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-development@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" "@babel/plugin-transform-react-jsx@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz#2721e96d31df96e3b7ad48ff446995d26bc028ff" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz" integrity sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -1256,7 +1095,7 @@ "@babel/plugin-transform-react-pure-annotations@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -1264,7 +1103,7 @@ "@babel/plugin-transform-regenerator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -1272,21 +1111,21 @@ "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz" integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -1294,26 +1133,26 @@ "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz" integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-typeof-symbol@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz" integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-typescript@^7.16.7", "@babel/plugin-transform-typescript@^7.17.12": +"@babel/plugin-transform-typescript@^7.16.7": version "7.18.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.4.tgz" integrity sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw== @@ -1324,7 +1163,7 @@ "@babel/plugin-transform-typescript@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.6.tgz#8f4ade1a9cf253e5cf7c7c20173082c2c08a50a7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.6.tgz" integrity sha512-ijHNhzIrLj5lQCnI6aaNVRtGVuUZhOXFLRVFs7lLrkXTHip4FKty5oAuQdk4tywG0/WjXmjTfQCWmuzrvFer1w== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -1333,14 +1172,14 @@ "@babel/plugin-transform-unicode-escapes@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz" integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -1348,7 +1187,7 @@ "@babel/preset-env@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.6.tgz#953422e98a5f66bc56cd0b9074eaea127ec86ace" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz" integrity sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw== dependencies: "@babel/compat-data" "^7.18.6" @@ -1449,7 +1288,7 @@ "@babel/preset-react@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -1468,18 +1307,9 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/preset-typescript@^7.13.0": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" - integrity sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-typescript" "^7.17.12" - -"@babel/preset-typescript@^7.18.6": +"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -1505,89 +1335,55 @@ core-js-pure "^3.16.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.16.3", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.16.3", "@babel/runtime@^7.9.2": version "7.16.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz" integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.4", "@babel/runtime@^7.5.5": +"@babel/runtime@^7.10.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4": version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz" integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== dependencies: regenerator-runtime "^0.13.4" "@babel/runtime@^7.18.9": version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz" integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/template@^7.18.10": +"@babel/template@^7.16.7", "@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== dependencies: "@babel/code-frame" "^7.18.6" "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/template@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" - integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz" - integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.0" - "@babel/types" "^7.18.2" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" - integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.6", "@babel/traverse@^7.20.1", "@babel/traverse@^7.7.2": + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz" + integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" + "@babel/generator" "^7.20.1" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/parser" "^7.20.1" + "@babel/types" "^7.20.0" debug "^4.1.0" globals "^11.1.0" "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz" integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== dependencies: "@babel/code-frame" "^7.18.6" @@ -1601,29 +1397,13 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz" - integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.18.10", "@babel/types@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.10", "@babel/types@^7.18.2", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz" + integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.18.6", "@babel/types@^7.18.7": - version "7.18.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.7.tgz#a4a2c910c15040ea52cdd1ddb1614a65c8041726" - integrity sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1633,7 +1413,7 @@ "@changesets/apply-release-plan@^6.0.0": version "6.0.0" - resolved "https://registry.yarnpkg.com/@changesets/apply-release-plan/-/apply-release-plan-6.0.0.tgz#6c663ff99d919bba3902343d76c35cbbbb046520" + resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.0.0.tgz" integrity sha512-gp6nIdVdfYdwKww2+f8whckKmvfE4JEm4jJgBhTmooi0uzHWhnxvk6JIzQi89qEAMINN0SeVNnXiAtbFY0Mj3w== dependencies: "@babel/runtime" "^7.10.4" @@ -1652,7 +1432,7 @@ "@changesets/assemble-release-plan@^5.1.3": version "5.1.3" - resolved "https://registry.yarnpkg.com/@changesets/assemble-release-plan/-/assemble-release-plan-5.1.3.tgz#b415c5db64e5a30c53aed8c1adc5ab4c4aaad283" + resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.1.3.tgz" integrity sha512-I+TTkUoqvxBEuDLoJfJYKDXIJ+nyiTbVJ8KGhpXEsLq4N/ms/AStSbouJwF2d/p3cB+RCPr5+gXh31GSN4kA7w== dependencies: "@babel/runtime" "^7.10.4" @@ -1664,14 +1444,14 @@ "@changesets/changelog-git@^0.1.11": version "0.1.11" - resolved "https://registry.yarnpkg.com/@changesets/changelog-git/-/changelog-git-0.1.11.tgz#80eb45d3562aba2164f25ccc31ac97b9dcd1ded3" + resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.11.tgz" integrity sha512-sWJvAm+raRPeES9usNpZRkooeEB93lOpUN0Lmjz5vhVAb7XGIZrHEJ93155bpE1S0c4oJ5Di9ZWgzIwqhWP/Wg== dependencies: "@changesets/types" "^5.0.0" "@changesets/cli@^2.23.0": version "2.23.0" - resolved "https://registry.yarnpkg.com/@changesets/cli/-/cli-2.23.0.tgz#e325b2d1b0484188671f684773b8cd5d42d068f1" + resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.23.0.tgz" integrity sha512-Gi3tMi0Vr6eNd8GX6q73tbOm9XOzGfuLEm4PYVeWG2neg5DlRGNOjYwrFULJ/An3N9MHtHn4r5h1Qvnju9Ijug== dependencies: "@babel/runtime" "^7.10.4" @@ -1710,7 +1490,7 @@ "@changesets/config@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@changesets/config/-/config-2.0.0.tgz#1770fdfeba2155cf07154c37e96b55cbd27969f0" + resolved "https://registry.npmjs.org/@changesets/config/-/config-2.0.0.tgz" integrity sha512-r5bIFY6CN3K6SQ+HZbjyE3HXrBIopONR47mmX7zUbORlybQXtympq9rVAOzc0Oflbap8QeIexc+hikfZoREXDg== dependencies: "@changesets/errors" "^0.1.4" @@ -1723,14 +1503,14 @@ "@changesets/errors@^0.1.4": version "0.1.4" - resolved "https://registry.yarnpkg.com/@changesets/errors/-/errors-0.1.4.tgz#f79851746c43679a66b383fdff4c012f480f480d" + resolved "https://registry.npmjs.org/@changesets/errors/-/errors-0.1.4.tgz" integrity sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q== dependencies: extendable-error "^0.1.5" "@changesets/get-dependents-graph@^1.3.2": version "1.3.2" - resolved "https://registry.yarnpkg.com/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.2.tgz#f3ec7ce75f4afb6e3e4b6a87fde065f552c85998" + resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.2.tgz" integrity sha512-tsqA6qZRB86SQuApSoDvI8yEWdyIlo/WLI4NUEdhhxLMJ0dapdeT6rUZRgSZzK1X2nv5YwR0MxQBbDAiDibKrg== dependencies: "@changesets/types" "^5.0.0" @@ -1741,7 +1521,7 @@ "@changesets/get-github-info@^0.5.1": version "0.5.1" - resolved "https://registry.yarnpkg.com/@changesets/get-github-info/-/get-github-info-0.5.1.tgz#5a20328b26f301b2193717abb32e73651e8811b7" + resolved "https://registry.npmjs.org/@changesets/get-github-info/-/get-github-info-0.5.1.tgz" integrity sha512-w2yl3AuG+hFuEEmT6j1zDlg7GQLM/J2UxTmk0uJBMdRqHni4zXGe/vUlPfLom5KfX3cRfHc0hzGvloDPjWFNZw== dependencies: dataloader "^1.4.0" @@ -1749,7 +1529,7 @@ "@changesets/get-release-plan@^3.0.9": version "3.0.9" - resolved "https://registry.yarnpkg.com/@changesets/get-release-plan/-/get-release-plan-3.0.9.tgz#d445660f3679cb65e05e02adfbca037a25b45943" + resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.9.tgz" integrity sha512-5C1r4DcOjVxcCvPmXpymeyT6mdSTLCNiB2L+5uf19BRkDKndJdIQorH5Fe2XBR2nHUcZQFT+2TXDzCepat969w== dependencies: "@babel/runtime" "^7.10.4" @@ -1762,12 +1542,12 @@ "@changesets/get-version-range-type@^0.3.2": version "0.3.2" - resolved "https://registry.yarnpkg.com/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz#8131a99035edd11aa7a44c341cbb05e668618c67" + resolved "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz" integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== "@changesets/git@^1.3.2": version "1.3.2" - resolved "https://registry.yarnpkg.com/@changesets/git/-/git-1.3.2.tgz#336051d9a6d965806b1bc473559a9a2cc70773a6" + resolved "https://registry.npmjs.org/@changesets/git/-/git-1.3.2.tgz" integrity sha512-p5UL+urAg0Nnpt70DLiBe2iSsMcDubTo9fTOD/61krmcJ466MGh71OHwdAwu1xG5+NKzeysdy1joRTg8CXcEXA== dependencies: "@babel/runtime" "^7.10.4" @@ -1779,14 +1559,14 @@ "@changesets/logger@^0.0.5": version "0.0.5" - resolved "https://registry.yarnpkg.com/@changesets/logger/-/logger-0.0.5.tgz#68305dd5a643e336be16a2369cb17cdd8ed37d4c" + resolved "https://registry.npmjs.org/@changesets/logger/-/logger-0.0.5.tgz" integrity sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw== dependencies: chalk "^2.1.0" "@changesets/parse@^0.3.13": version "0.3.13" - resolved "https://registry.yarnpkg.com/@changesets/parse/-/parse-0.3.13.tgz#82788c1fc18da4750b07357a7a06142d0d975aa1" + resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.13.tgz" integrity sha512-wh9Ifa0dungY6d2nMz6XxF6FZ/1I7j+mEgPAqrIyKS64nifTh1Ua82qKKMMK05CL7i4wiB2NYc3SfnnCX3RVeA== dependencies: "@changesets/types" "^5.0.0" @@ -1794,7 +1574,7 @@ "@changesets/pre@^1.0.11": version "1.0.11" - resolved "https://registry.yarnpkg.com/@changesets/pre/-/pre-1.0.11.tgz#46a56790fdceabd03407559bbf91340c8e83fb6a" + resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.11.tgz" integrity sha512-CXZnt4SV9waaC9cPLm7818+SxvLKIDHUxaiTXnJYDp1c56xIexx1BNfC1yMuOdzO2a3rAIcZua5Odxr3dwSKfg== dependencies: "@babel/runtime" "^7.10.4" @@ -1805,7 +1585,7 @@ "@changesets/read@^0.5.5": version "0.5.5" - resolved "https://registry.yarnpkg.com/@changesets/read/-/read-0.5.5.tgz#9ed90ef3e9f1ba3436ba5580201854a3f4163058" + resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.5.tgz" integrity sha512-bzonrPWc29Tsjvgh+8CqJ0apQOwWim0zheeD4ZK44ApSa/GudnZJTODtA3yNOOuQzeZmL0NUebVoHIurtIkA7w== dependencies: "@babel/runtime" "^7.10.4" @@ -1819,17 +1599,17 @@ "@changesets/types@^4.0.1": version "4.1.0" - resolved "https://registry.yarnpkg.com/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0" + resolved "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz" integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== "@changesets/types@^5.0.0": version "5.0.0" - resolved "https://registry.yarnpkg.com/@changesets/types/-/types-5.0.0.tgz#d5eb52d074bc0358ce47d54bca54370b907812a0" + resolved "https://registry.npmjs.org/@changesets/types/-/types-5.0.0.tgz" integrity sha512-IT1kBLSbAgTS4WtpU6P5ko054hq12vk4tgeIFRVE7Vnm4a/wgbNvBalgiKP0MjEXbCkZbItiGQHkCGxYWR55sA== "@changesets/write@^0.1.8": version "0.1.8" - resolved "https://registry.yarnpkg.com/@changesets/write/-/write-0.1.8.tgz#feed408f644c496bc52afc4dd1353670b4152ecb" + resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.8.tgz" integrity sha512-oIHeFVMuP6jf0TPnKPpaFpvvAf3JBc+s2pmVChbeEgQTBTALoF51Z9kqxQfG4XONZPHZnqkmy564c7qohhhhTQ== dependencies: "@babel/runtime" "^7.10.4" @@ -1889,17 +1669,17 @@ "@edge-runtime/format@^1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@edge-runtime/format/-/format-1.0.0.tgz#c97183d1c85de3dc384f524f90f8d9ff5b13fdcb" + resolved "https://registry.npmjs.org/@edge-runtime/format/-/format-1.0.0.tgz" integrity sha512-mxi0n00nJwnjaXUQIfTS7l64yvwGXs435gEjuDhzTHZyrmnCYdELXdJr3Q+6v4DO1mmmtNTYFHUvIlpCmMUC6g== "@edge-runtime/primitives@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-1.0.1.tgz#2bcdb6e37997b17e9f0be473f0644c84ade9b9d2" + resolved "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-1.0.1.tgz" integrity sha512-a5rouOhbkLHJZeXQZs5QppI8DwFsAyK7gzCIg6sWVTZnF5WxN0oQ85iEgSIjvQaHPbAAHDJ2WwKwP07CWv8SUA== "@edge-runtime/vm@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@edge-runtime/vm/-/vm-1.0.1.tgz#0285efd9ccc12efbbbd725c70721b39b9812c300" + resolved "https://registry.npmjs.org/@edge-runtime/vm/-/vm-1.0.1.tgz" integrity sha512-kkPeYBCGgeoyBxKdHwRy8zKtpGFS3aviPnDaRKNx/NaWFr/EwG8TTdv9T+VP3JzuFC48me0VF4fnnIEARrI/7Q== dependencies: "@edge-runtime/primitives" "^1.0.1" @@ -1914,7 +1694,7 @@ "@eslint/eslintrc@^1.3.2": version "1.3.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz" integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== dependencies: ajv "^6.12.4" @@ -1939,7 +1719,7 @@ "@humanwhocodes/config-array@^0.10.4": version "0.10.4" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz" integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" @@ -1948,17 +1728,17 @@ "@humanwhocodes/gitignore-to-minimatch@^1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" + resolved "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz" integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@istanbuljs/load-nyc-config@^1.0.0": @@ -2146,18 +1926,9 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: "@jridgewell/set-array" "^1.0.1" @@ -2169,14 +1940,9 @@ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz" integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== -"@jridgewell/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== - "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/sourcemap-codec@^1.4.10": @@ -2206,7 +1972,7 @@ "@manypkg/find-root@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" + resolved "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz" integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== dependencies: "@babel/runtime" "^7.5.5" @@ -2216,7 +1982,7 @@ "@manypkg/get-packages@^1.1.3": version "1.1.3" - resolved "https://registry.yarnpkg.com/@manypkg/get-packages/-/get-packages-1.1.3.tgz#e184db9bba792fa4693de4658cfb1463ac2c9c47" + resolved "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz" integrity sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A== dependencies: "@babel/runtime" "^7.5.5" @@ -2228,7 +1994,7 @@ "@mcansh/remark-definition-links@2.4.1": version "2.4.1" - resolved "https://registry.npmjs.org/@mcansh/remark-definition-links/-/remark-definition-links-2.4.1.tgz#1bd45d90fcb0a6dc64c3e16a4770acbaad1ea94c" + resolved "https://registry.npmjs.org/@mcansh/remark-definition-links/-/remark-definition-links-2.4.1.tgz" integrity sha512-SMlxBrpraic11Fu+Aw6V7jh6edIShh7Ijzg1nevaUFjh1tB9hTYyIkYRXQ45w729MFoTmSNg0b/leVQcdUKr0A== dependencies: "@sindresorhus/slugify" "2.1.0" @@ -2264,7 +2030,7 @@ "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== dependencies: eslint-scope "5.1.1" @@ -2421,7 +2187,7 @@ "@pkgr/utils@^2.3.1": version "2.3.1" - resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" + resolved "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz" integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw== dependencies: cross-spawn "^7.0.3" @@ -2473,7 +2239,7 @@ "@remix-run/changelog-github@^0.0.5": version "0.0.5" - resolved "https://registry.yarnpkg.com/@remix-run/changelog-github/-/changelog-github-0.0.5.tgz#d0eecaea45102b35b1c8fd41bb74fd1c38f7f70f" + resolved "https://registry.npmjs.org/@remix-run/changelog-github/-/changelog-github-0.0.5.tgz" integrity sha512-43tqwUqWqirbv6D9uzo55ASPsCJ61Ein1k/M8qn+Qpros0MmbmuzjLVPmtaxfxfe2ANX0LefLvCD0pAgr1tp4g== dependencies: "@changesets/errors" "^0.1.4" @@ -2491,7 +2257,7 @@ "@remix-run/web-fetch@^4.3.1": version "4.3.1" - resolved "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.3.1.tgz#afc88e133bed1a6aecb9d09b1b02127fc844da47" + resolved "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.3.1.tgz" integrity sha512-TOpuJo3jI7/qJAY0yTnvNJRQl4hlWAOHUHYKAbEddcLFLydv+0/WGT6OaIurJKsBFJJTjooe3FbKiP74sUIB/g== dependencies: "@remix-run/web-blob" "^3.0.4" @@ -2511,7 +2277,7 @@ "@remix-run/web-form-data@^3.0.3": version "3.0.3" - resolved "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.0.3.tgz#f89a7f971aaf1084d2da87affbb7f4e01c32b8ce" + resolved "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.0.3.tgz" integrity sha512-wL4veBtVPazSpXfPMzrbmeV3IxuxCfcQYPerQ8BXRO5ahAEVw23tv7xS+yoX0XDO5j+vpRaSbhHJK1H5gF7eYQ== dependencies: web-encoding "1.1.5" @@ -2525,7 +2291,7 @@ "@rollup/plugin-babel@^5.2.2": version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" @@ -2533,14 +2299,14 @@ "@rollup/plugin-json@^4.1.0": version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz" integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== dependencies: "@rollup/pluginutils" "^3.0.8" "@rollup/plugin-node-resolve@^11.0.1": version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -2552,7 +2318,7 @@ "@rollup/plugin-replace@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz#e34c457d6a285f0213359740b43f39d969b38a67" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz" integrity sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -2577,7 +2343,7 @@ "@rushstack/eslint-patch@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz" integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== "@sindresorhus/is@^4.0.0": @@ -2587,7 +2353,7 @@ "@sindresorhus/slugify@2.1.0": version "2.1.0" - resolved "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.1.0.tgz#1e252117008cd1121e4cdea9fc67767dd1653d25" + resolved "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.1.0.tgz" integrity sha512-gU3Gdm/V167BmUwIn8APHZ3SeeRVRUSOdXxnt7Q/JkUHLXaaTA/prYmoRumwsSitJZWUDYMzDWdWgrOdvE8IRQ== dependencies: "@sindresorhus/transliterate" "^1.0.0" @@ -2595,7 +2361,7 @@ "@sindresorhus/transliterate@^1.0.0": version "1.5.0" - resolved "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.5.0.tgz#841109db51fe3158787c42a91c45c3ffea7589be" + resolved "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.5.0.tgz" integrity sha512-/sfSkoNelLq5riqNRp5uBjHIKBi1MWZk9ubRT1WiBQuTfmDf7BeQkph2DJzRB83QagMPHk2VDjuvpy0VuwyzdA== dependencies: escape-string-regexp "^5.0.0" @@ -2646,7 +2412,7 @@ "@testing-library/dom@^8.5.0": version "8.16.0" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.16.0.tgz#d6fc50250aed17b1035ca1bd64655e342db3936a" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.16.0.tgz" integrity sha512-uxF4zmnLHHDlmW4l+0WDjcgLVwCvH+OVLpD8Dfp+Bjfz85prwxWGbwXgJdLtkgjD0qfOzkJF9SmA6YZPsMYX4w== dependencies: "@babel/code-frame" "^7.10.4" @@ -2675,7 +2441,7 @@ "@testing-library/react@^13.3.0": version "13.3.0" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-13.3.0.tgz#bf298bfbc5589326bbcc8052b211f3bb097a97c5" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-13.3.0.tgz" integrity sha512-DB79aA426+deFgGSjnf5grczDPiL4taK3hFaa+M5q7q20Kcve9eQottOG5kZ74KEr55v0tU2CQormSSDK87zYQ== dependencies: "@babel/runtime" "^7.12.5" @@ -2689,7 +2455,7 @@ "@ts-morph/common@~0.11.0": version "0.11.1" - resolved "https://registry.npmjs.org/@ts-morph/common/-/common-0.11.1.tgz#281af2a0642b19354d8aa07a0d50dfdb4aa8164e" + resolved "https://registry.npmjs.org/@ts-morph/common/-/common-0.11.1.tgz" integrity sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g== dependencies: fast-glob "^3.2.7" @@ -2833,7 +2599,7 @@ "@types/eslint@^8.4.6": version "8.4.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz" integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== dependencies: "@types/estree" "*" @@ -2889,7 +2655,7 @@ "@types/glob@*", "@types/glob@7.2.0", "@types/glob@^7.1.1": version "7.2.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" @@ -2931,7 +2697,7 @@ "@types/is-ci@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/is-ci/-/is-ci-3.0.0.tgz#7e8910af6857601315592436f030aaa3ed9783c3" + resolved "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.0.tgz" integrity sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ== dependencies: ci-info "^3.1.0" @@ -2978,7 +2744,7 @@ "@types/jsesc@^3.0.1": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/jsesc/-/jsesc-3.0.1.tgz#ed1720ae08eae2f64341452e1693a84324029d99" + resolved "https://registry.npmjs.org/@types/jsesc/-/jsesc-3.0.1.tgz" integrity sha512-F2g93pJlhV0RlW9uSUAM/hIxywlwlZcuRB/nZ82GaMPaO8mdexYbJ8Qt3UGbUS1M19YFQykEetrWW004M+vPCg== "@types/json-schema@*", "@types/json-schema@^7.0.9": @@ -2988,7 +2754,7 @@ "@types/json-schema@^7.0.6": version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": @@ -2998,7 +2764,7 @@ "@types/jsonfile@^6.1.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.0.tgz#c413d113ae28619f418b8a6ce7a1dec29e8f8a1c" + resolved "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-zQPywzif9EycCkvECjYT9dbbttT0dkk657zcLb/803ZOXHsBA963jzEPF/Jnh1zOdBbgFJvUE8kcvZverAoK1w== dependencies: "@types/node" "*" @@ -3024,14 +2790,9 @@ dependencies: "@types/lodash" "*" -"@types/lodash@*": - version "4.14.174" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.174.tgz" - integrity sha512-KMBLT6+g9qrGXpDt7ohjWPUD34WA/jasrtjTEHStF0NPdEwJ1N9SZ+4GaMVDeuk/y0+X5j9xFm6mNiXS7UoaLQ== - -"@types/lodash@^4.14.182": +"@types/lodash@*", "@types/lodash@^4.14.182": version "4.14.182" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz" integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== "@types/mdast@^3.0.0": @@ -3063,7 +2824,7 @@ "@types/minimist@^1.2.0": version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/morgan@^1.9.2": @@ -3093,7 +2854,7 @@ "@types/node@^12.7.1": version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^14.14.31": @@ -3103,7 +2864,7 @@ "@types/normalize-package-data@^2.4.0": version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/npmcli__package-json@^2.0.0": @@ -3133,14 +2894,14 @@ "@types/react-dom@^18.0.0", "@types/react-dom@^18.0.6": version "18.0.6" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz#36652900024842b74607a17786b6662dd1e103a1" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz" integrity sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA== dependencies: "@types/react" "*" "@types/react-test-renderer@^18.0.0": version "18.0.0" - resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz#7b7f69ca98821ea5501b21ba24ea7b6139da2243" + resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz" integrity sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ== dependencies: "@types/react" "*" @@ -3156,7 +2917,7 @@ "@types/react@^18.0.15": version "18.0.15" - resolved "https://registry.npmjs.org/@types/react/-/react-18.0.15.tgz#d355644c26832dc27f3e6cbf0c4f4603fc4ab7fe" + resolved "https://registry.npmjs.org/@types/react/-/react-18.0.15.tgz" integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow== dependencies: "@types/prop-types" "*" @@ -3189,7 +2950,7 @@ "@types/semver@^6.0.0": version "6.2.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.3.tgz#5798ecf1bec94eaa64db39ee52808ec0693315aa" + resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.3.tgz" integrity sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A== "@types/semver@^7.3.4": @@ -3326,7 +3087,7 @@ "@typescript-eslint/eslint-plugin@^5.38.0": version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz#ac919a199548861012e8c1fb2ec4899ac2bc22ae" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz" integrity sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ== dependencies: "@typescript-eslint/scope-manager" "5.38.0" @@ -3340,7 +3101,7 @@ "@typescript-eslint/parser@^5.38.0": version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.0.tgz#5a59a1ff41a7b43aacd1bb2db54f6bf1c02b2ff8" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz" integrity sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA== dependencies: "@typescript-eslint/scope-manager" "5.38.0" @@ -3358,7 +3119,7 @@ "@typescript-eslint/scope-manager@5.38.0": version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz#8f0927024b6b24e28671352c93b393a810ab4553" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz" integrity sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA== dependencies: "@typescript-eslint/types" "5.38.0" @@ -3366,7 +3127,7 @@ "@typescript-eslint/type-utils@5.38.0": version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz#c8b7f681da825fcfc66ff2b63d70693880496876" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz" integrity sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA== dependencies: "@typescript-eslint/typescript-estree" "5.38.0" @@ -3381,7 +3142,7 @@ "@typescript-eslint/types@5.38.0": version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.38.0.tgz#8cd15825e4874354e31800dcac321d07548b8a5f" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz" integrity sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA== "@typescript-eslint/typescript-estree@5.12.1": @@ -3399,7 +3160,7 @@ "@typescript-eslint/typescript-estree@5.38.0": version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz#89f86b2279815c6fb7f57d68cf9b813f0dc25d98" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz" integrity sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg== dependencies: "@typescript-eslint/types" "5.38.0" @@ -3412,7 +3173,7 @@ "@typescript-eslint/utils@5.38.0", "@typescript-eslint/utils@^5.13.0": version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.38.0.tgz#5b31f4896471818153790700eb02ac869a1543f4" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz" integrity sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA== dependencies: "@types/json-schema" "^7.0.9" @@ -3444,7 +3205,7 @@ "@typescript-eslint/visitor-keys@5.38.0": version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz#60591ca3bf78aa12b25002c0993d067c00887e34" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz" integrity sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w== dependencies: "@typescript-eslint/types" "5.38.0" @@ -3452,17 +3213,17 @@ "@vercel/build-utils@5.0.1": version "5.0.1" - resolved "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.0.1.tgz#d5e7fe5e11f0320c5aca4d99c23b3c10465e3cdb" + resolved "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.0.1.tgz" integrity sha512-+fZl9xZiI+7tGTdE7vblizpNfuNMHBzKJBOvNaC9uVqajQosD0KEWLf1hFRVnzHfKYLkbwmW94g4bBZHgkYAeQ== "@vercel/node-bridge@3.0.0", "@vercel/node-bridge@^3.0.0": version "3.0.0" - resolved "https://registry.npmjs.org/@vercel/node-bridge/-/node-bridge-3.0.0.tgz#443655b74713ec65531726fb5a30c5c528c804bf" + resolved "https://registry.npmjs.org/@vercel/node-bridge/-/node-bridge-3.0.0.tgz" integrity sha512-TNQK6cufwrhd8ASDk5YHHenH8Xhp9sY8xUjOTKnQQI37KLk+Sw2HlHhT5rzUFN23ahosUlkY8InwtYUmSNb9kw== "@vercel/node@^2.4.2": version "2.4.2" - resolved "https://registry.npmjs.org/@vercel/node/-/node-2.4.2.tgz#5a2b112851db0003e4b0973b33240746077146b0" + resolved "https://registry.npmjs.org/@vercel/node/-/node-2.4.2.tgz" integrity sha512-4U1W3TH94KbrA6Wg0ixH7XNk787GuqzhnK1UBLQb/YwcGE0R3TemrndYnZgWsin5Ie1Qt1bjRw2TpLftQhg7pQ== dependencies: "@types/node" "*" @@ -3478,7 +3239,7 @@ "@vercel/static-config@2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@vercel/static-config/-/static-config-2.0.1.tgz#40a04f89669d58ea5d1dd67eb729b5f9e39a2782" + resolved "https://registry.npmjs.org/@vercel/static-config/-/static-config-2.0.1.tgz" integrity sha512-J3l3H0iE6FC0KHIlkY1Em291uwWmW22QIN8Cb8nLo9P5BW6a3r0kypmk86UGEWhfWxzt4Hnmb+6JEwkVNnv8/Q== dependencies: ajv "8.6.3" @@ -3497,7 +3258,7 @@ "@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.11": version "3.0.0-rc.11" - resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.11.tgz#5cd829662b916a3dbbdc5a76913380f1913d2b65" + resolved "https://registry.npmjs.org/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.11.tgz" integrity sha512-uwTdgbw9XIisx7oxqHrX7GFjsObxo5EhUYGjIg17TdHyAqgwZV6Ca7rqTjKZryLFoxkCFyMloxkclyze0onpQQ== dependencies: tslib "^1.13.0" @@ -3542,7 +3303,7 @@ acorn-globals@^6.0.0: acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^7.1.1: @@ -3552,7 +3313,7 @@ acorn-walk@^7.1.1: acorn-walk@^8.2.0: version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^7.1.1: @@ -3560,16 +3321,16 @@ acorn@^7.1.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.0, acorn@^8.2.4: +acorn@^8.0.0, acorn@^8.7.0, acorn@^8.8.0: + version "8.8.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +acorn@^8.2.4: version "8.5.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz" integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== -acorn@^8.7.0, acorn@^8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" @@ -3587,7 +3348,7 @@ aggregate-error@^3.0.0: ajv@8.6.3: version "8.6.3" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz" integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== dependencies: fast-deep-equal "^3.1.1" @@ -3722,7 +3483,7 @@ ansi-colors@^4.1.1: ansi-colors@^4.1.3: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-cyan@^0.1.1: @@ -3896,7 +3657,7 @@ arg@^4.1.0: arg@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz" integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== argparse@^1.0.7: @@ -3964,7 +3725,7 @@ array-includes@^3.1.3, array-includes@^3.1.4: array-includes@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== dependencies: call-bind "^1.0.2" @@ -3985,7 +3746,7 @@ array-unique@^0.3.2: array.prototype.flat@^1.2.3: version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== dependencies: call-bind "^1.0.2" @@ -4004,7 +3765,7 @@ array.prototype.flat@^1.2.5: array.prototype.flatmap@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz" integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== dependencies: call-bind "^1.0.2" @@ -4014,7 +3775,7 @@ array.prototype.flatmap@^1.3.0: arrify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== asn1@~0.2.3: @@ -4046,9 +3807,16 @@ ast-types@0.14.2, ast-types@^0.14.1: dependencies: tslib "^2.0.1" +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + ast-types@^0.13.2: version "0.13.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== dependencies: tslib "^2.0.1" @@ -4115,7 +3883,7 @@ aws4@^1.8.0: axe-core@^4.4.3: version "4.4.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz" integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== axobject-query@^2.2.0: @@ -4274,7 +4042,7 @@ before-after-hook@^2.2.0: better-path-resolve@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d" + resolved "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz" integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g== dependencies: is-windows "^1.0.0" @@ -4346,7 +4114,7 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" @@ -4376,7 +4144,7 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: breakword@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/breakword/-/breakword-1.0.5.tgz#fd420a417f55016736b5b615161cae1c8f819810" + resolved "https://registry.npmjs.org/breakword/-/breakword-1.0.5.tgz" integrity sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg== dependencies: wcwidth "^1.0.1" @@ -4393,20 +4161,9 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" -browserslist@^4.20.2, browserslist@^4.20.3: - version "4.20.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz" - integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== - dependencies: - caniuse-lite "^1.0.30001349" - electron-to-chromium "^1.4.147" - escalade "^3.1.1" - node-releases "^2.0.5" - picocolors "^1.0.0" - -browserslist@^4.21.3: +browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.3: version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: caniuse-lite "^1.0.30001400" @@ -4450,7 +4207,7 @@ buffer@^5.5.0, buffer@^5.6.0: builtin-modules@^3.1.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== bytes@3.0.0: @@ -4540,7 +4297,7 @@ callsites@^3.0.0: camelcase-keys@^6.2.2: version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: camelcase "^5.3.1" @@ -4549,7 +4306,7 @@ camelcase-keys@^6.2.2: camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: @@ -4557,15 +4314,10 @@ camelcase@^6.2.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001349: - version "1.0.30001349" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001349.tgz" - integrity sha512-VFaWW3jeo6DLU5rwdiasosxhYSduJgSGil4cSyX3/85fbctlE58pXAkWyuRmVA0r2RxsOSVYUTZcySJ8WpbTxw== - caniuse-lite@^1.0.30001400: - version "1.0.30001409" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz#6135da9dcab34cd9761d9cdb12a68e6740c5e96e" - integrity sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ== + version "1.0.30001430" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz" + integrity sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg== caseless@~0.12.0: version "0.12.0" @@ -4574,7 +4326,7 @@ caseless@~0.12.0: ccount@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== chalk@4.1.1: @@ -4720,7 +4472,7 @@ chownr@^2.0.0: ci-info@^3.1.0: version "3.3.2" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz" integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== ci-info@^3.2.0: @@ -4784,7 +4536,7 @@ cli-width@^3.0.0: cliui@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: string-width "^4.2.0" @@ -4838,7 +4590,7 @@ co@^4.6.0: code-block-writer@^10.1.1: version "10.1.1" - resolved "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz#ad5684ed4bfb2b0783c8b131281ae84ee640a42f" + resolved "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz" integrity sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw== collect-v8-coverage@^1.0.0: @@ -4983,7 +4735,7 @@ content-type@~1.0.4: convert-hrtime@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-3.0.0.tgz#62c7593f5809ca10be8da858a6d2f702bcda00aa" + resolved "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-3.0.0.tgz" integrity sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA== convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: @@ -5038,7 +4790,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0: cross-spawn@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== dependencies: lru-cache "^4.0.1" @@ -5128,22 +4880,22 @@ csstype@^3.0.2: csv-generate@^3.4.3: version "3.4.3" - resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" + resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz" integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== csv-parse@^4.16.3: version "4.16.3" - resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" + resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz" integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== csv-stringify@^5.6.5: version "5.6.5" - resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" + resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz" integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== csv@^5.5.0: version "5.5.3" - resolved "https://registry.yarnpkg.com/csv/-/csv-5.5.3.tgz#cd26c1e45eae00ce6a9b7b27dcb94955ec95207d" + resolved "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz" integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== dependencies: csv-generate "^3.4.3" @@ -5201,7 +4953,7 @@ cypress@^9.6.0: damerau-levenshtein@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== dashdash@^1.12.0: @@ -5227,7 +4979,7 @@ data-urls@^2.0.0: dataloader@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" + resolved "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz" integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== date-fns@^2.16.1: @@ -5271,14 +5023,14 @@ debug@^3.0.1, debug@^3.1.0, debug@^3.2.7: debug@^4.3.4: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" decamelize-keys@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz" integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== dependencies: decamelize "^1.1.0" @@ -5286,7 +5038,7 @@ decamelize-keys@^1.1.0: decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decimal.js@^10.2.1: @@ -5347,7 +5099,7 @@ define-properties@^1.1.3: define-properties@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: has-property-descriptors "^1.0.0" @@ -5377,7 +5129,7 @@ define-property@^2.0.2: degenerator@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.2.tgz#6a61fcc42a702d6e50ff6023fe17bff435f68235" + resolved "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz" integrity sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ== dependencies: ast-types "^0.13.2" @@ -5407,7 +5159,7 @@ deprecation@^2.0.0, deprecation@^2.3.1: dequal@^2.0.0: version "2.0.2" - resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz" integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== destroy@~1.0.4: @@ -5437,7 +5189,7 @@ diff@^4.0.1: diff@^5.0.0: version "5.1.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== dir-glob@^3.0.1: @@ -5515,7 +5267,7 @@ dotenv@^16.0.0: dotenv@^8.0.0, dotenv@^8.1.0: version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== duplexify@^3.5.0, duplexify@^3.6.0: @@ -5538,7 +5290,7 @@ ecc-jsbn@~0.1.1: edge-runtime@1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/edge-runtime/-/edge-runtime-1.0.1.tgz#d6d7f17a7c575c857dddb262e640a6996e08ef02" + resolved "https://registry.npmjs.org/edge-runtime/-/edge-runtime-1.0.1.tgz" integrity sha512-1/7ZlGy7LUWufVoWPdphYvyOiNFiN1u/hIyWDBeJjoFAKQGjl70A0SdG2cwVd1UhcPlA95ieYly1B4h0/8MPog== dependencies: "@edge-runtime/format" "^1.0.0" @@ -5556,15 +5308,10 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.4.147: - version "1.4.148" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.148.tgz" - integrity sha512-8MJk1bcQUAYkuvCyWZxaldiwoDG0E0AMzBGA6cv3WfuvJySiPgfidEPBFCRRH3cZm6SVZwo/oRlK1ehi1QNEIQ== - electron-to-chromium@^1.4.251: - version "1.4.256" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.256.tgz#c735032f412505e8e0482f147a8ff10cfca45bf4" - integrity sha512-x+JnqyluoJv8I0U9gVe+Sk2st8vF0CzMt78SXxuoWCooLLY2k5VerIBdpvG7ql6GKI4dzNnPjmqgDJ76EdaAKw== + version "1.4.284" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== emittery@^0.8.1: version "0.8.1" @@ -5600,7 +5347,7 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: enhanced-resolve@^5.10.0: version "5.10.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== dependencies: graceful-fs "^4.2.4" @@ -5608,7 +5355,7 @@ enhanced-resolve@^5.10.0: enquirer@^2.3.0, enquirer@^2.3.6: version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" @@ -5658,7 +5405,7 @@ es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: es-abstract@^1.19.2, es-abstract@^1.19.5: version "1.20.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz" integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== dependencies: call-bind "^1.0.2" @@ -5687,7 +5434,7 @@ es-abstract@^1.19.2, es-abstract@^1.19.5: es-shim-unscopables@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: has "^1.0.3" @@ -5733,12 +5480,12 @@ esbuild-darwin-64@0.14.51: esbuild-darwin-arm64@0.14.47: version "0.14.47" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.47.tgz#cd40fd49a672fca581ed202834239dfe540a9028" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.47.tgz" integrity sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw== esbuild-darwin-arm64@0.14.51: version "0.14.51" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz#d77b4366a71d84e530ba019d540b538b295d494a" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz" integrity sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow== esbuild-freebsd-64@0.14.47: @@ -5908,7 +5655,7 @@ esbuild-windows-arm64@0.14.51: esbuild@0.14.47: version "0.14.47" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.47.tgz#0d6415f6bd8eb9e73a58f7f9ae04c5276cda0e4d" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.47.tgz" integrity sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA== optionalDependencies: esbuild-android-64 "0.14.47" @@ -5934,7 +5681,7 @@ esbuild@0.14.47: esbuild@0.14.51: version "0.14.51" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz#1c8ecbc8db3710da03776211dc3ee3448f7aa51e" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz" integrity sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw== optionalDependencies: esbuild-android-64 "0.14.51" @@ -5985,12 +5732,12 @@ escape-string-regexp@^4.0.0: escape-string-regexp@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== escodegen@^1.8.1: version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: esprima "^4.0.1" @@ -6022,7 +5769,7 @@ eslint-import-resolver-node@0.3.6, eslint-import-resolver-node@^0.3.6: eslint-import-resolver-typescript@^3.5.1: version "3.5.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.1.tgz#c72634da072eebd04fe73007fa58a62c333c8147" + resolved "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.1.tgz" integrity sha512-U7LUjNJPYjNsHvAUAkt/RU3fcTSpbllA0//35B4eLYTX74frmOepbt7F7J3D1IGtj9k21buOpaqtDd4ZlS/BYQ== dependencies: debug "^4.3.4" @@ -6035,7 +5782,7 @@ eslint-import-resolver-typescript@^3.5.1: eslint-module-utils@^2.7.3: version "2.7.4" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: debug "^3.2.7" @@ -6050,7 +5797,7 @@ eslint-plugin-es@^3.0.0: eslint-plugin-import@^2.26.0: version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: array-includes "^3.1.4" @@ -6069,7 +5816,7 @@ eslint-plugin-import@^2.26.0: eslint-plugin-jest-dom@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-4.0.2.tgz#9d3e2f51055f74c74e745d89c4b1a9781e0ec7a9" + resolved "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-4.0.2.tgz" integrity sha512-Jo51Atwyo2TdcUncjmU+UQeSTKh3sc2LF/M5i/R3nTU0Djw9V65KGJisdm/RtuKhy2KH/r7eQ1n6kwYFPNdHlA== dependencies: "@babel/runtime" "^7.16.3" @@ -6078,14 +5825,14 @@ eslint-plugin-jest-dom@^4.0.2: eslint-plugin-jest@^26.9.0: version "26.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz#7931c31000b1c19e57dbfb71bbf71b817d1bf949" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz" integrity sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng== dependencies: "@typescript-eslint/utils" "^5.10.0" eslint-plugin-jsx-a11y@^6.6.1: version "6.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz" integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== dependencies: "@babel/runtime" "^7.18.9" @@ -6130,12 +5877,12 @@ eslint-plugin-prefer-let@^3.0.1: eslint-plugin-react-hooks@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react@^7.31.8: version "7.31.8" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz" integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== dependencies: array-includes "^3.1.5" @@ -6155,7 +5902,7 @@ eslint-plugin-react@^7.31.8: eslint-plugin-testing-library@^5.6.4: version "5.6.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.6.4.tgz#9dffd9feafbb08a36240f88156357685b56f0b8a" + resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.6.4.tgz" integrity sha512-0oW3tC5NNT2WexmJ3848a/utawOymw4ibl3/NkwywndVAz2hT9+ab70imA7ccg3RaScQgMvJT60OL00hpmJvrg== dependencies: "@typescript-eslint/utils" "^5.13.0" @@ -6170,7 +5917,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-scope@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: esrecurse "^4.3.0" @@ -6207,12 +5954,12 @@ eslint-visitor-keys@^3.0.0: eslint-visitor-keys@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@^8.23.1: version "8.23.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.1.tgz#cfd7b3f7fdd07db8d16b4ac0516a29c8d8dca5dc" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz" integrity sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg== dependencies: "@eslint/eslintrc" "^1.3.2" @@ -6257,7 +6004,7 @@ eslint@^8.23.1: espree@^9.4.0: version "9.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" + resolved "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz" integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== dependencies: acorn "^8.8.0" @@ -6399,7 +6146,7 @@ execa@4.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^5.0.0: +execa@5.1.1, execa@^5.0.0: version "5.1.1" resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -6524,12 +6271,12 @@ extend@^3.0.0, extend@~3.0.2: extendable-error@^0.1.5: version "0.1.7" - resolved "https://registry.yarnpkg.com/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96" + resolved "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz" integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== external-editor@^3.0.3, external-editor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" @@ -6573,7 +6320,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: fast-glob@3.2.11, fast-glob@^3.0.3, fast-glob@^3.2.7, fast-glob@^3.2.9: version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -6584,7 +6331,7 @@ fast-glob@3.2.11, fast-glob@^3.0.3, fast-glob@^3.2.7, fast-glob@^3.2.9: fast-glob@^3.2.11: version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -6657,7 +6404,7 @@ file-uri-to-path@1.0.0: file-uri-to-path@2: version "2.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz" integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== fill-range@^4.0.0: @@ -6716,7 +6463,7 @@ find-up@^4.0.0, find-up@^4.1.0: find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -6724,7 +6471,7 @@ find-up@^5.0.0: find-yarn-workspace-root2@1.2.16: version "1.2.16" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" + resolved "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz" integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== dependencies: micromatch "^4.0.2" @@ -6836,7 +6583,7 @@ fs-extra@^10.0.0: fs-extra@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" @@ -6881,7 +6628,7 @@ fsevents@^2.3.2, fsevents@~2.3.2: ftp@^0.3.10: version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + resolved "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz" integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== dependencies: readable-stream "1.1.x" @@ -6894,7 +6641,7 @@ function-bind@^1.1.1: function.prototype.name@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== dependencies: call-bind "^1.0.2" @@ -6904,7 +6651,7 @@ function.prototype.name@^1.1.5: functions-have-names@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== gensync@^1.0.0-beta.2: @@ -6958,12 +6705,12 @@ get-symbol-description@^1.0.0: get-tsconfig@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.2.0.tgz#ff368dd7104dab47bf923404eb93838245c66543" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz" integrity sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg== get-uri@3: version "3.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" + resolved "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz" integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== dependencies: "@tootallnate/once" "1" @@ -7013,7 +6760,7 @@ glob-parent@^6.0.1: glob@8.0.3: version "8.0.3" - resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz" integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" @@ -7048,14 +6795,14 @@ globals@^11.1.0: globals@^13.15.0: version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + resolved "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== dependencies: type-fest "^0.20.2" globalyzer@0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" + resolved "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz" integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== globby@10.0.0: @@ -7088,7 +6835,7 @@ globby@10.0.1: globby@^11.0.0, globby@^11.0.4, globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -7100,7 +6847,7 @@ globby@^11.0.0, globby@^11.0.4, globby@^11.1.0: globby@^13.1.2: version "13.1.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" + resolved "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz" integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== dependencies: dir-glob "^3.0.1" @@ -7111,7 +6858,7 @@ globby@^13.1.2: globrex@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + resolved "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz" integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== got@^11.0.0: @@ -7138,12 +6885,12 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.1.5: version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== grapheme-splitter@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphql@^16.3.0: @@ -7165,7 +6912,7 @@ gunzip-maybe@^1.4.2: hard-rejection@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== has-bigints@^1.0.1: @@ -7175,7 +6922,7 @@ has-bigints@^1.0.1: has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: @@ -7190,7 +6937,7 @@ has-flag@^4.0.0: has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: get-intrinsic "^1.1.1" @@ -7202,7 +6949,7 @@ has-symbols@^1.0.1, has-symbols@^1.0.2: has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: @@ -7332,7 +7079,7 @@ http-errors@1.8.1: http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -7361,7 +7108,7 @@ http-signature@~1.3.6: http-status@~1.5.0: version "1.5.2" - resolved "https://registry.npmjs.org/http-status/-/http-status-1.5.2.tgz#22e6ea67b4b5e2a366f49cb1759dc5479cad2fd6" + resolved "https://registry.npmjs.org/http-status/-/http-status-1.5.2.tgz" integrity sha512-HzxX+/hV/8US1Gq4V6R6PgUmJ5Pt/DGATs4QhdEOpG8LrdS9/3UG2nnOvkqUpRks04yjVtV5p/NODjO+wvf6vg== http2-wrapper@^1.0.0-beta.5.2: @@ -7374,7 +7121,7 @@ http2-wrapper@^1.0.0-beta.5.2: https-proxy-agent@5: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -7390,7 +7137,7 @@ https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: human-id@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/human-id/-/human-id-1.0.2.tgz#e654d4b2b0d8b07e45da9f6020d8af17ec0a5df3" + resolved "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz" integrity sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw== human-signals@^1.1.1: @@ -7520,7 +7267,7 @@ ip@^1.1.5: ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== ipaddr.js@1.9.1: @@ -7620,14 +7367,14 @@ is-callable@^1.1.4, is-callable@^1.2.4: is-ci@^3.0.0, is-ci@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: ci-info "^3.2.0" is-core-module@^2.10.0, is-core-module@^2.9.0: version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz" integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== dependencies: has "^1.0.3" @@ -7784,7 +7531,7 @@ is-negative-zero@^2.0.1: is-negative-zero@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-node-process@^1.0.1: @@ -7828,7 +7575,7 @@ is-plain-obj@2.1.0: is-plain-obj@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-plain-obj@^3.0.0: @@ -7890,7 +7637,7 @@ is-shared-array-buffer@^1.0.1: is-shared-array-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: call-bind "^1.0.2" @@ -7909,7 +7656,7 @@ is-string@^1.0.5, is-string@^1.0.7: is-subdir@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4" + resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz" integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== dependencies: better-path-resolve "1.0.0" @@ -7951,14 +7698,14 @@ is-weakref@^1.0.1: is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^2.2.0: @@ -7970,7 +7717,7 @@ is-wsl@^2.2.0: isarray@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: @@ -7980,7 +7727,7 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: isbot@^3.5.1: version "3.5.1" - resolved "https://registry.yarnpkg.com/isbot/-/isbot-3.5.1.tgz#a4c9360e3f34c0458c6a168dde5bf00a1914191a" + resolved "https://registry.npmjs.org/isbot/-/isbot-3.5.1.tgz" integrity sha512-IJrUiLudoYIhbNa9EuR7foEyXYPyWDe5Nnd1pTKTyPZKlDA0K5XcVzJEwvNLLstz37KokXP1pZWVKuyW34c4xQ== isexe@^2.0.0: @@ -8501,7 +8248,7 @@ js-levenshtein@^1.1.6: js-sdsl@^4.1.4: version "4.1.4" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.4.tgz#78793c90f80e8430b7d8dc94515b6c77d98a26a6" + resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz" integrity sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: @@ -8511,7 +8258,7 @@ js-sdsl@^4.1.4: js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.6.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -8619,7 +8366,7 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: json-schema-to-ts@1.6.4: version "1.6.4" - resolved "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-1.6.4.tgz#63e4fe854dff093923be9e8b59b39ee9a7971ba4" + resolved "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-1.6.4.tgz" integrity sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA== dependencies: "@types/json-schema" "^7.0.6" @@ -8632,7 +8379,7 @@ json-schema-traverse@^0.4.1: json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-schema@0.4.0: @@ -8698,7 +8445,7 @@ jsprim@^2.0.2: jsx-ast-utils@^3.3.2: version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: array-includes "^3.1.5" @@ -8732,7 +8479,7 @@ kind-of@^5.0.0, kind-of@^5.0.2: kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: @@ -8742,7 +8489,7 @@ kleur@^3.0.3: kleur@^4.0.3, kleur@^4.1.4: version "4.1.4" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" + resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz" integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== koalas@^1.0.2: @@ -8855,7 +8602,7 @@ load-json-file@^4.0.0: load-yaml-file@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d" + resolved "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz" integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== dependencies: graceful-fs "^4.1.5" @@ -8889,7 +8636,7 @@ locate-path@^5.0.0: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" @@ -8901,7 +8648,7 @@ lodash.debounce@^4.0.8: lodash.deburr@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b" + resolved "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz" integrity sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ== lodash.merge@^4.6.2: @@ -8916,7 +8663,7 @@ lodash.once@^4.1.1: lodash.startcase@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== lodash@^4.17.15, lodash@^4.17.21, lodash@^4.7.0: @@ -8982,7 +8729,7 @@ lowercase-keys@^2.0.0: lru-cache@^4.0.1: version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" @@ -8990,7 +8737,7 @@ lru-cache@^4.0.1: lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" @@ -9007,16 +8754,9 @@ lz-string@^1.4.4: resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= -magic-string@^0.25.3: - version "0.25.7" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -magic-string@^0.25.7: +magic-string@^0.25.3, magic-string@^0.25.7: version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: sourcemap-codec "^1.4.8" @@ -9038,7 +8778,7 @@ make-dir@^3.0.0: make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== makeerror@1.0.x: @@ -9055,12 +8795,12 @@ map-cache@^0.2.2: map-obj@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== map-obj@^4.0.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== map-visit@^1.0.0: @@ -9077,7 +8817,7 @@ markdown-extensions@^1.0.0: markdown-table@^3.0.0: version "3.0.2" - resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz" integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== mdast-util-definitions@^5.0.0: @@ -9091,7 +8831,7 @@ mdast-util-definitions@^5.0.0: mdast-util-find-and-replace@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.0.tgz#6167edf16c2fd79e7213024544575f304151953f" + resolved "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.0.tgz" integrity sha512-bz8hUWkMX7UcasORORcyBEsTKJ+dBiFwRPrm43hHC9NMRylIMLbfO5rwfeCN+UtY4AAi7s8WqXftb9eX6ZsqCg== dependencies: escape-string-regexp "^5.0.0" @@ -9135,7 +8875,7 @@ mdast-util-frontmatter@^1.0.0: mdast-util-gfm-autolink-literal@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz#4032dcbaddaef7d4f2f3768ed830475bb22d3970" + resolved "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz" integrity sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg== dependencies: "@types/mdast" "^3.0.0" @@ -9145,7 +8885,7 @@ mdast-util-gfm-autolink-literal@^1.0.0: mdast-util-gfm-footnote@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe" + resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz" integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw== dependencies: "@types/mdast" "^3.0.0" @@ -9154,7 +8894,7 @@ mdast-util-gfm-footnote@^1.0.0: mdast-util-gfm-strikethrough@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789" + resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz" integrity sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg== dependencies: "@types/mdast" "^3.0.0" @@ -9162,7 +8902,7 @@ mdast-util-gfm-strikethrough@^1.0.0: mdast-util-gfm-table@^1.0.0: version "1.0.4" - resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz#0dbb25f04fd9c0877dc63b76203ecbdf5d945755" + resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz" integrity sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w== dependencies: markdown-table "^3.0.0" @@ -9171,7 +8911,7 @@ mdast-util-gfm-table@^1.0.0: mdast-util-gfm-task-list-item@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c" + resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz" integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA== dependencies: "@types/mdast" "^3.0.0" @@ -9179,7 +8919,7 @@ mdast-util-gfm-task-list-item@^1.0.0: mdast-util-gfm@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz#16fcf70110ae689a06d77e8f4e346223b64a0ea6" + resolved "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz" integrity sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ== dependencies: mdast-util-from-markdown "^1.0.0" @@ -9260,7 +9000,7 @@ mdast-util-to-markdown@^1.0.0: mdast-util-to-markdown@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" + resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz" integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA== dependencies: "@types/mdast" "^3.0.0" @@ -9298,7 +9038,7 @@ memorystream@^0.3.1: meow@^6.0.0: version "6.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" + resolved "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz" integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== dependencies: "@types/minimist" "^1.2.0" @@ -9365,7 +9105,7 @@ micromark-extension-frontmatter@^1.0.0: micromark-extension-gfm-autolink-literal@^1.0.0: version "1.0.3" - resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz" integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg== dependencies: micromark-util-character "^1.0.0" @@ -9376,7 +9116,7 @@ micromark-extension-gfm-autolink-literal@^1.0.0: micromark-extension-gfm-footnote@^1.0.0: version "1.0.4" - resolved "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz#cbfd8873b983e820c494498c6dac0105920818d5" + resolved "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz" integrity sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg== dependencies: micromark-core-commonmark "^1.0.0" @@ -9390,7 +9130,7 @@ micromark-extension-gfm-footnote@^1.0.0: micromark-extension-gfm-strikethrough@^1.0.0: version "1.0.4" - resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18" + resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz" integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ== dependencies: micromark-util-chunked "^1.0.0" @@ -9402,7 +9142,7 @@ micromark-extension-gfm-strikethrough@^1.0.0: micromark-extension-gfm-table@^1.0.0: version "1.0.5" - resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz" integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg== dependencies: micromark-factory-space "^1.0.0" @@ -9413,14 +9153,14 @@ micromark-extension-gfm-table@^1.0.0: micromark-extension-gfm-tagfilter@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" + resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz" integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA== dependencies: micromark-util-types "^1.0.0" micromark-extension-gfm-task-list-item@^1.0.0: version "1.0.3" - resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" + resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz" integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q== dependencies: micromark-factory-space "^1.0.0" @@ -9431,7 +9171,7 @@ micromark-extension-gfm-task-list-item@^1.0.0: micromark-extension-gfm@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz#40f3209216127a96297c54c67f5edc7ef2d1a2a2" + resolved "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz" integrity sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA== dependencies: micromark-extension-gfm-autolink-literal "^1.0.0" @@ -9724,7 +9464,7 @@ micromatch@^3.1.10: micromatch@^4.0.2: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -9794,21 +9534,21 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: version "5.1.0" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== dependencies: brace-expansion "^2.0.1" minimist-options@^4.0.2: version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" @@ -9874,7 +9614,7 @@ mixin-object@^2.0.1: mixme@^0.5.1: version "0.5.4" - resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.4.tgz#8cb3bd0cd32a513c161bf1ca99d143f0bcf2eff3" + resolved "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz" integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== mkdirp-classic@^0.5.2: @@ -9900,7 +9640,7 @@ morgan@^1.10.0: mri@1.2.0, mri@^1.1.0: version "1.2.0" - resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== mrmime@^1.0.0: @@ -9992,7 +9732,7 @@ neo-async@^2.5.0: netmask@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== nice-try@^1.0.4: @@ -10014,12 +9754,12 @@ node-dir@^0.1.17: node-fetch@2.6.1: version "2.6.1" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== node-fetch@^2.5.0, node-fetch@^2.6.7: version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" @@ -10045,14 +9785,9 @@ node-mocks-http@^1.10.1: range-parser "^1.2.0" type-is "^1.6.18" -node-releases@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz" - integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== - node-releases@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== node-webtokens@^1.0.4: @@ -10062,7 +9797,7 @@ node-webtokens@^1.0.4: normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -10135,7 +9870,7 @@ object-inspect@^1.11.0, object-inspect@^1.9.0: object-inspect@^1.12.0: version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== object-keys@^1.0.12, object-keys@^1.1.1: @@ -10162,7 +9897,7 @@ object.assign@^4.1.0, object.assign@^4.1.2: object.assign@^4.1.3: version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: call-bind "^1.0.2" @@ -10190,7 +9925,7 @@ object.fromentries@^2.0.5: object.hasown@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz" integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== dependencies: define-properties "^1.1.4" @@ -10298,7 +10033,7 @@ ospath@^1.2.2: outdent@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" + resolved "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz" integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== outvariant@^1.2.1: @@ -10313,7 +10048,7 @@ p-cancelable@^2.0.0: p-filter@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz" integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== dependencies: p-map "^2.0.0" @@ -10327,7 +10062,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" @@ -10348,14 +10083,14 @@ p-locate@^4.1.0: p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== p-map@^4.0.0: @@ -10372,7 +10107,7 @@ p-try@^2.0.0: pac-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" + resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz" integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== dependencies: "@tootallnate/once" "1" @@ -10387,7 +10122,7 @@ pac-proxy-agent@^5.0.0: pac-resolver@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" + resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz" integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== dependencies: degenerator "^3.0.2" @@ -10440,7 +10175,7 @@ parse-json@^4.0.0: parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -10477,7 +10212,7 @@ pascalcase@^0.1.1: path-browserify@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== path-exists@^3.0.0: @@ -10571,7 +10306,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pidtree@^0.3.0: @@ -10671,7 +10406,7 @@ posix-character-classes@^0.1.0: preferred-pm@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.0.3.tgz#1b6338000371e3edbce52ef2e4f65eb2e73586d6" + resolved "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.0.3.tgz" integrity sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ== dependencies: find-up "^5.0.0" @@ -10691,12 +10426,12 @@ prelude-ls@~1.1.2: prettier@2.7.1: version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== prettier@^1.19.1: version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== pretty-bytes@5.6.0, pretty-bytes@^5.6.0: @@ -10810,7 +10545,7 @@ prompts@^2.0.1, prompts@^2.2.1: prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -10841,7 +10576,7 @@ proxy-addr@~2.0.7: proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" + resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz" integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== dependencies: agent-base "^6.0.0" @@ -10865,7 +10600,7 @@ proxy-from-env@1.1.0, proxy-from-env@^1.0.0: pseudomap@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== psl@^1.1.28, psl@^1.1.33: @@ -10930,7 +10665,7 @@ queue-microtask@^1.2.2: quick-lru@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== quick-lru@^5.1.1: @@ -10969,7 +10704,7 @@ raw-body@2.4.3: raw-body@^2.2.0: version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -10979,7 +10714,7 @@ raw-body@^2.2.0: react-dom@^18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: loose-envify "^1.1.0" @@ -10987,7 +10722,7 @@ react-dom@^18.2.0: react-is@^16.13.1: version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^17.0.1: @@ -10997,7 +10732,7 @@ react-is@^17.0.1: react-router-dom@6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz" integrity sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw== dependencies: history "^5.2.0" @@ -11005,21 +10740,21 @@ react-router-dom@6.3.0: react-router@6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557" + resolved "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz" integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ== dependencies: history "^5.2.0" react@^18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" read-pkg-up@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" @@ -11037,7 +10772,7 @@ read-pkg@^3.0.0: read-pkg@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" @@ -11047,7 +10782,7 @@ read-pkg@^5.2.0: read-yaml-file@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8" + resolved "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz" integrity sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA== dependencies: graceful-fs "^4.1.5" @@ -11057,7 +10792,7 @@ read-yaml-file@^1.1.0: readable-stream@1.1.x: version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== dependencies: core-util-is "~1.0.0" @@ -11129,6 +10864,16 @@ recast@^0.20.3, recast@^0.20.4: source-map "~0.6.1" tslib "^2.0.1" +recast@^0.21.5: + version "0.21.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" @@ -11178,7 +10923,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" @@ -11190,21 +10935,9 @@ regexpp@^3.0.0, regexpp@^3.2.0: resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - regexpu-core@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz" integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== dependencies: regenerate "^1.4.2" @@ -11228,7 +10961,7 @@ regjsparser@^0.8.2: remark-frontmatter@4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz#84560f7ccef114ef076d3d3735be6d69f8922309" + resolved "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz" integrity sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA== dependencies: "@types/mdast" "^3.0.0" @@ -11238,7 +10971,7 @@ remark-frontmatter@4.0.1: remark-gfm@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f" + resolved "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz" integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== dependencies: "@types/mdast" "^3.0.0" @@ -11277,7 +11010,7 @@ remark-rehype@^9.0.0: remark-stringify@^10.0.0: version "10.0.2" - resolved "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.2.tgz#50414a6983f5008eb9e72eed05f980582d1f69d7" + resolved "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.2.tgz" integrity sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw== dependencies: "@types/mdast" "^3.0.0" @@ -11286,7 +11019,7 @@ remark-stringify@^10.0.0: remark@14.0.2: version "14.0.2" - resolved "https://registry.npmjs.org/remark/-/remark-14.0.2.tgz#4a1833f7441a5c29e44b37bb1843fb820797b40f" + resolved "https://registry.npmjs.org/remark/-/remark-14.0.2.tgz" integrity sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA== dependencies: "@types/mdast" "^3.0.0" @@ -11318,12 +11051,12 @@ require-directory@^2.1.1: require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-main-filename@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== requireindex@^1.2.0, requireindex@~1.2.0: @@ -11374,7 +11107,7 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.19 resolve@^1.22.0: version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: is-core-module "^2.9.0" @@ -11445,7 +11178,7 @@ rndm@1.2.0: rollup-plugin-copy@^3.3.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz#f1228a3ffb66ffad8606e2f3fb7ff23141ed3286" + resolved "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz" integrity sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ== dependencies: "@types/fs-extra" "^8.0.1" @@ -11472,14 +11205,14 @@ rollup-plugin-node-polyfills@^0.2.1: rollup-pluginutils@^2.8.1: version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" rollup@^2.36.1: version "2.75.7" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz" integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== optionalDependencies: fsevents "~2.3.2" @@ -11517,7 +11250,7 @@ rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.5: sade@^1.7.3: version "1.8.1" - resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz" integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== dependencies: mri "^1.1.0" @@ -11558,7 +11291,7 @@ saxes@^5.0.1: scheduler@^0.23.0: version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: loose-envify "^1.1.0" @@ -11578,16 +11311,9 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.7: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7: version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" @@ -11623,7 +11349,7 @@ serve-static@1.14.2: set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-cookie-parser@^2.4.6, set-cookie-parser@^2.4.8: @@ -11749,7 +11475,7 @@ slash@^3.0.0: slash@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== slice-ansi@^3.0.0: @@ -11777,7 +11503,7 @@ smart-buffer@^4.2.0: smartwrap@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-2.0.2.tgz#7e25d3dd58b51c6ca4aba3a9e391650ea62698a4" + resolved "https://registry.npmjs.org/smartwrap/-/smartwrap-2.0.2.tgz" integrity sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA== dependencies: array.prototype.flat "^1.2.3" @@ -11819,7 +11545,7 @@ snapdragon@^0.8.1: socks-proxy-agent@5, socks-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz" integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== dependencies: agent-base "^6.0.2" @@ -11837,7 +11563,7 @@ socks-proxy-agent@6.1.1: socks@^2.3.3: version "2.7.0" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.0.tgz#f9225acdb841e874dca25f870e9130990f3913d0" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz" integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA== dependencies: ip "^2.0.0" @@ -11922,9 +11648,9 @@ source-map@^0.7.0, source-map@^0.7.3: resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: +sourcemap-codec@^1.4.8: version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== space-separated-tokens@^2.0.0: @@ -11939,7 +11665,7 @@ spawn-command@^0.0.2-1: spawndamnit@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/spawndamnit/-/spawndamnit-2.0.0.tgz#9f762ac5c3476abb994b42ad592b5ad22bb4b0ad" + resolved "https://registry.npmjs.org/spawndamnit/-/spawndamnit-2.0.0.tgz" integrity sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA== dependencies: cross-spawn "^5.1.0" @@ -12042,7 +11768,7 @@ stream-slice@^0.1.2: stream-transform@^2.1.3: version "2.1.3" - resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-2.1.3.tgz#a1c3ecd72ddbf500aa8d342b0b9df38f5aa598e3" + resolved "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz" integrity sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ== dependencies: mixme "^0.5.1" @@ -12081,7 +11807,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: string.prototype.matchall@^4.0.7: version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== dependencies: call-bind "^1.0.2" @@ -12112,7 +11838,7 @@ string.prototype.trimend@^1.0.4: string.prototype.trimend@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== dependencies: call-bind "^1.0.2" @@ -12129,7 +11855,7 @@ string.prototype.trimstart@^1.0.4: string.prototype.trimstart@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== dependencies: call-bind "^1.0.2" @@ -12145,7 +11871,7 @@ string_decoder@^1.1.1, string_decoder@~1.1.1: string_decoder@~0.10.x: version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== stringify-entities@^4.0.0: @@ -12280,7 +12006,7 @@ symbol-tree@^3.2.4: synckit@^0.8.3: version "0.8.4" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.4.tgz#0e6b392b73fafdafcde56692e3352500261d64ec" + resolved "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz" integrity sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw== dependencies: "@pkgr/utils" "^2.3.1" @@ -12288,7 +12014,7 @@ synckit@^0.8.3: tapable@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar-fs@^2.1.1: @@ -12333,7 +12059,7 @@ temp@^0.8.4: term-size@^2.1.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== terminal-link@^2.0.0: @@ -12392,7 +12118,7 @@ through@^2.3.6, through@^2.3.8: time-span@4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/time-span/-/time-span-4.0.0.tgz#fe74cd50a54e7998712f90ddfe47109040c985c4" + resolved "https://registry.npmjs.org/time-span/-/time-span-4.0.0.tgz" integrity sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g== dependencies: convert-hrtime "^3.0.0" @@ -12404,7 +12130,7 @@ time-stamp@^1.0.1: tiny-glob@^0.2.9: version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + resolved "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz" integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== dependencies: globalyzer "0.1.0" @@ -12473,7 +12199,7 @@ to-regex@^3.0.1, to-regex@^3.0.2: to-vfile@7.2.3: version "7.2.3" - resolved "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.3.tgz#4e54ad10878901703f1a956a33ba4f131c31eef7" + resolved "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.3.tgz" integrity sha512-QO0A9aE6Z/YkmQadJ0syxpmNXtcQiu0qAtCKYKD5cS3EfgfFTAXfgLX6AOaBrSfWSek5nfsMf3gBZ9KGVFcLuw== dependencies: is-buffer "^2.0.0" @@ -12532,7 +12258,7 @@ tree-kill@^1.2.2: trim-newlines@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== trough@^2.0.0: @@ -12542,7 +12268,7 @@ trough@^2.0.0: ts-morph@12.0.0: version "12.0.0" - resolved "https://registry.npmjs.org/ts-morph/-/ts-morph-12.0.0.tgz#a601c3538703755cbfa2d42b62c52df73e9dbbd7" + resolved "https://registry.npmjs.org/ts-morph/-/ts-morph-12.0.0.tgz" integrity sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA== dependencies: "@ts-morph/common" "~0.11.0" @@ -12561,12 +12287,12 @@ ts-node@8.9.1: ts-toolbelt@^6.15.5: version "6.15.5" - resolved "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz#cb3b43ed725cb63644782c64fbcad7d8f28c0a83" + resolved "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz" integrity sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A== tsconfig-paths@^3.14.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" @@ -12595,7 +12321,7 @@ tslib@^2.0.1, tslib@^2.1.0, tslib@^2.2.0: tslib@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== tsscmp@1.0.6: @@ -12612,7 +12338,7 @@ tsutils@^3.21.0: tty-table@^4.1.5: version "4.1.6" - resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.1.6.tgz#6bd58338f36c94cce478c3337934d8a65ab40a73" + resolved "https://registry.npmjs.org/tty-table/-/tty-table-4.1.6.tgz" integrity sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw== dependencies: chalk "^4.1.2" @@ -12656,7 +12382,7 @@ type-detect@4.0.8: type-fest@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== type-fest@^0.20.2: @@ -12671,12 +12397,12 @@ type-fest@^0.21.3: type-fest@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== type-fest@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-fest@^1.2.2: @@ -12686,7 +12412,7 @@ type-fest@^1.2.2: type-fest@^2.16.0: version "2.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.16.0.tgz#1250fbd64dafaf4c8e405e393ef3fb16d9651db2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.16.0.tgz" integrity sha512-qpaThT2HQkFb83gMOrdKVsfCN7LKxP26Yq+smPzY1FqoHRjqmjqHXA7n5Gkxi8efirtbeEUxzfEdePthQWCuHw== type-is@^1.6.18, type-is@~1.6.18: @@ -12711,7 +12437,7 @@ typescript@4.3.4: typescript@^4.7.4: version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== uid-safe@2.1.5, uid-safe@^2.1.5: @@ -12733,7 +12459,7 @@ unbox-primitive@^1.0.1: unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -12779,7 +12505,7 @@ unified@^10.0.0: unified@^10.1.2: version "10.1.2" - resolved "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" + resolved "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz" integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== dependencies: "@types/unist" "^2.0.0" @@ -12933,9 +12659,9 @@ untildify@^4.0.0: integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== update-browserslist-db@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" - integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== + version "1.0.10" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -13004,7 +12730,7 @@ uuid@^8.3.2: uvu@^0.5.0: version "0.5.3" - resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz#3d83c5bc1230f153451877bfc7f4aea2392219ae" + resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz" integrity sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw== dependencies: dequal "^2.0.0" @@ -13073,7 +12799,7 @@ vfile@^5.0.0: vfile@^5.1.0: version "5.3.2" - resolved "https://registry.npmjs.org/vfile/-/vfile-5.3.2.tgz#b499fbc50197ea50ad3749e9b60beb16ca5b7c54" + resolved "https://registry.npmjs.org/vfile/-/vfile-5.3.2.tgz" integrity sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA== dependencies: "@types/unist" "^2.0.0" @@ -13083,7 +12809,7 @@ vfile@^5.1.0: vm2@^3.9.8: version "3.9.11" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.11.tgz#a880f510a606481719ec3f9803b940c5805a06fe" + resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz" integrity sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg== dependencies: acorn "^8.7.0" @@ -13193,12 +12919,12 @@ which-boxed-primitive@^1.0.2: which-module@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== which-pm@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae" + resolved "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz" integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w== dependencies: load-yaml-file "^0.2.0" @@ -13349,7 +13075,7 @@ xmlchars@^2.2.0: xregexp@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + resolved "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz" integrity sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA== xtend@~4.0.1: @@ -13359,7 +13085,7 @@ xtend@~4.0.1: y18n@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: @@ -13369,12 +13095,12 @@ y18n@^5.0.5: yallist@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== yallist@^3.0.2: version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yallist@^4.0.0: @@ -13384,7 +13110,7 @@ yallist@^4.0.0: yargs-parser@^18.1.2, yargs-parser@^18.1.3: version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" @@ -13402,7 +13128,7 @@ yargs-parser@^21.0.0: yargs@^15.1.0: version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: cliui "^6.0.0" @@ -13432,7 +13158,7 @@ yargs@^16.2.0: yargs@^17.1.1: version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz" integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== dependencies: cliui "^7.0.2" @@ -13478,7 +13204,7 @@ yn@3.1.1: yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== zwitch@^2.0.0: From 0e2c0b6660cad845f3a59d76e98e145bb4256da5 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Sun, 13 Nov 2022 22:04:00 -0500 Subject: [PATCH 5/9] test(dev): restore fixture this fixture was incorrectly included as part of dependency upgrades: - https://github.com/remix-run/remix/pull/3917 - https://github.com/remix-run/remix/pull/3929 it should not have been updated since it is supposed to represent a Remix 1.3.x codebase --- .../app/db.server.ts | 0 .../app/entry.client.tsx | 0 .../app/entry.server.tsx | 0 .../app/models/note.server.ts | 0 .../app/models/post.server.ts | 0 .../app/models/user.server.ts | 0 .../app/root.tsx | 0 .../app/routes/healthcheck.tsx | 0 .../app/routes/index.tsx | 0 .../app/routes/join.tsx | 0 .../app/routes/login.tsx | 0 .../app/routes/logout.tsx | 0 .../app/routes/notes.tsx | 0 .../app/routes/notes/$noteId.tsx | 0 .../app/routes/notes/index.tsx | 0 .../app/routes/notes/new.tsx | 0 .../app/routes/posts/$slug.tsx | 0 .../app/routes/posts/admin.tsx | 0 .../app/routes/posts/admin/index.tsx | 0 .../app/routes/posts/admin/new.tsx | 0 .../app/routes/posts/index.tsx | 0 .../app/session.server.ts | 0 .../app/utils.test.ts | 0 .../app/utils.ts | 0 .../package.json | 10 +++++----- .../public/favicon.ico | Bin .../remix.config.js | 0 .../remix.env.d.ts | 0 .../tailwind.config.js | 0 .../tsconfig.json | 4 +++- 30 files changed, 8 insertions(+), 6 deletions(-) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/db.server.ts (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/entry.client.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/entry.server.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/models/note.server.ts (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/models/post.server.ts (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/models/user.server.ts (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/root.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/healthcheck.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/index.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/join.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/login.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/logout.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/notes.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/notes/$noteId.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/notes/index.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/notes/new.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/posts/$slug.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/posts/admin.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/posts/admin/index.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/posts/admin/new.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/routes/posts/index.tsx (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/session.server.ts (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/utils.test.ts (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/app/utils.ts (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/package.json (91%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/public/favicon.ico (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/remix.config.js (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/remix.env.d.ts (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/tailwind.config.js (100%) rename packages/remix-dev/__tests__/fixtures/{replace-remix-imports => replace-remix-magic-imports}/tsconfig.json (86%) diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/db.server.ts b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/db.server.ts similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/db.server.ts rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/db.server.ts diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/entry.client.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/entry.client.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/entry.client.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/entry.client.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/entry.server.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/entry.server.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/entry.server.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/entry.server.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/models/note.server.ts b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/models/note.server.ts similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/models/note.server.ts rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/models/note.server.ts diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/models/post.server.ts b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/models/post.server.ts similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/models/post.server.ts rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/models/post.server.ts diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/models/user.server.ts b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/models/user.server.ts similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/models/user.server.ts rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/models/user.server.ts diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/root.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/root.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/root.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/root.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/healthcheck.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/healthcheck.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/healthcheck.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/healthcheck.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/index.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/index.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/index.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/index.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/join.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/join.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/join.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/join.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/login.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/login.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/login.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/login.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/logout.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/logout.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/logout.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/logout.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/notes.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/notes.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/notes.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/notes.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/notes/$noteId.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/notes/$noteId.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/notes/$noteId.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/notes/$noteId.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/notes/index.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/notes/index.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/notes/index.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/notes/index.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/notes/new.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/notes/new.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/notes/new.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/notes/new.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/$slug.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/$slug.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/$slug.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/$slug.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/admin.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/admin.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/admin.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/admin.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/admin/index.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/admin/index.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/admin/index.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/admin/index.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/admin/new.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/admin/new.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/admin/new.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/admin/new.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/index.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/index.tsx similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/routes/posts/index.tsx rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/routes/posts/index.tsx diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/session.server.ts b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/session.server.ts similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/session.server.ts rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/session.server.ts diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/utils.test.ts b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/utils.test.ts similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/utils.test.ts rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/utils.test.ts diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/utils.ts b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/utils.ts similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/app/utils.ts rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/utils.ts diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/package.json b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/package.json similarity index 91% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/package.json rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/package.json index d3d2fb6f589..26719f308b3 100644 --- a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/package.json +++ b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/package.json @@ -24,8 +24,8 @@ "@remix-run/react": "1.3.4", "@remix-run/serve": "1.3.4", "marked": "^4.0.12", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", "remix": "1.3.4", "tiny-invariant": "^1.2.0" }, @@ -35,12 +35,12 @@ "@remix-run/eslint-config": "1.3.4", "@testing-library/cypress": "^8.0.2", "@testing-library/jest-dom": "^5.16.2", - "@testing-library/react": "^13.3.0", + "@testing-library/react": "^12.1.4", "@testing-library/user-event": "^13.5.0", "@types/eslint": "^8.4.6", "@types/marked": "^4.0.2", - "@types/react": "^18.0.15", - "@types/react-dom": "^18.0.6", + "@types/react": "^17.0.40", + "@types/react-dom": "^17.0.13", "@vitejs/plugin-react": "^1.2.0", "c8": "^7.11.0", "cross-env": "^7.0.3", diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/public/favicon.ico b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/public/favicon.ico similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/public/favicon.ico rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/public/favicon.ico diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/remix.config.js b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/remix.config.js similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/remix.config.js rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/remix.config.js diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/remix.env.d.ts b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/remix.env.d.ts similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/remix.env.d.ts rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/remix.env.d.ts diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/tailwind.config.js b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/tailwind.config.js similarity index 100% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/tailwind.config.js rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/tailwind.config.js diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/tsconfig.json b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/tsconfig.json similarity index 86% rename from packages/remix-dev/__tests__/fixtures/replace-remix-imports/tsconfig.json rename to packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/tsconfig.json index 3e3ff6f488b..22118c18c9e 100644 --- a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/tsconfig.json +++ b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/tsconfig.json @@ -19,6 +19,8 @@ "skipLibCheck": true, // Remix takes care of building everything in `remix build`. - "noEmit": true + "noEmit": true, + "allowJs": true, + "forceConsistentCasingInFileNames": true } } From a0e0dca67c1a0a0758a16f670710a208df94fd4b Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Sun, 13 Nov 2022 22:07:27 -0500 Subject: [PATCH 6/9] test(dev): add tests for generic codemods and specifically for `replace-remix-magic-imports` --- .../codemod-replaceRemixMagicImports-test.ts | 92 +++++++++++++ packages/remix-dev/__tests__/codemod-test.ts | 56 ++++++++ .../__tests__/replace-remix-imports-test.ts | 123 ------------------ ...transform-replaceRemixMagicImports-test.ts | 86 ++++++++++++ .../remix-dev/__tests__/utils/captureError.ts | 14 ++ packages/remix-dev/__tests__/utils/cli.ts | 101 ++++++++++++++ packages/remix-dev/__tests__/utils/eol.ts | 2 + packages/remix-dev/__tests__/utils/git.ts | 18 +++ packages/remix-dev/__tests__/utils/withApp.ts | 24 ++++ 9 files changed, 393 insertions(+), 123 deletions(-) create mode 100644 packages/remix-dev/__tests__/codemod-replaceRemixMagicImports-test.ts create mode 100644 packages/remix-dev/__tests__/codemod-test.ts delete mode 100644 packages/remix-dev/__tests__/replace-remix-imports-test.ts create mode 100644 packages/remix-dev/__tests__/transform-replaceRemixMagicImports-test.ts create mode 100644 packages/remix-dev/__tests__/utils/captureError.ts create mode 100644 packages/remix-dev/__tests__/utils/cli.ts create mode 100644 packages/remix-dev/__tests__/utils/eol.ts create mode 100644 packages/remix-dev/__tests__/utils/git.ts create mode 100644 packages/remix-dev/__tests__/utils/withApp.ts diff --git a/packages/remix-dev/__tests__/codemod-replaceRemixMagicImports-test.ts b/packages/remix-dev/__tests__/codemod-replaceRemixMagicImports-test.ts new file mode 100644 index 00000000000..044f88e819c --- /dev/null +++ b/packages/remix-dev/__tests__/codemod-replaceRemixMagicImports-test.ts @@ -0,0 +1,92 @@ +import NpmCliPackageJson from "@npmcli/package-json"; +import fs from "fs"; +import glob from "fast-glob"; +import path from "path"; +import shell from "shelljs"; +import stripAnsi from "strip-ansi"; + +import { readConfig } from "../config"; +import * as cli from "./utils/cli"; +import * as eol from "./utils/eol"; +import * as git from "./utils/git"; +import withApp from "./utils/withApp"; + +let CODEMOD = "replace-remix-magic-imports"; +let FIXTURE = path.join(__dirname, "fixtures/replace-remix-magic-imports"); + +it("replaces `remix` magic imports", async () => { + await withApp(FIXTURE, async (projectDir) => { + await git.initialCommit(projectDir); + let result = await cli.run(["codemod", CODEMOD, projectDir]); + let stderr = stripAnsi(result.stderr); + expect(result.exitCode).toBe(0); + + let successes = [ + `โœ” Found codemod: ${CODEMOD}`, + "โœ” No Remix server adapter detected", + "โœ” Detected Remix server runtime: node", + "โœ” Removed magic `remix` package from dependencies", + "โœ” Removed `remix setup` from postinstall script", + "โœ” Replaced magic `remix` imports | 24/24 files", + ]; + for (let success of successes) { + expect(stderr).toContain(success); + } + + expect(result.stdout).toContain( + "๐Ÿ‘‰ To update your lockfile, run `yarn install`" + ); + + let pkg = await NpmCliPackageJson.load(projectDir); + let packageJson = pkg.content; + + // check that `remix` dependency was removed + expect(packageJson.dependencies).not.toContain("remix"); + expect(packageJson.devDependencies).not.toContain("remix"); + + // check that Remix packages were standardized + expect(packageJson.dependencies).toEqual( + expect.objectContaining({ + "@remix-run/node": "1.3.4", + "@remix-run/react": "1.3.4", + "@remix-run/serve": "1.3.4", + }) + ); + expect(packageJson.devDependencies).toEqual( + expect.objectContaining({ + "@remix-run/dev": "1.3.4", + }) + ); + + // check that postinstall was removed + expect(packageJson.scripts).not.toContain("postinstall"); + + // check that `from "remix"` magic imports were removed + let config = await readConfig(projectDir); + let files = await glob("**/*.{js,jsx,ts,tsx}", { + cwd: config.appDirectory, + absolute: true, + }); + let remixMagicImports = shell.grep("-l", /from ('remix'|"remix")/, files); + expect(remixMagicImports.code).toBe(0); + expect(remixMagicImports.stdout.trim()).toBe(""); + expect(remixMagicImports.stderr).toBeNull(); + + // check that imports look good for a specific file + let loginRoute = eol.normalize( + fs.readFileSync(path.join(projectDir, "app/routes/login.tsx"), "utf8") + ); + expect(loginRoute).toContain( + [ + "import {", + " type ActionFunction,", + " type LoaderFunction,", + " type MetaFunction,", + " json,", + " redirect,", + '} from "@remix-run/node";', + 'import { Form, Link, useActionData, useSearchParams } from "@remix-run/react";', + ].join("\n") + ); + }); +}); diff --git a/packages/remix-dev/__tests__/codemod-test.ts b/packages/remix-dev/__tests__/codemod-test.ts new file mode 100644 index 00000000000..1a79432bd92 --- /dev/null +++ b/packages/remix-dev/__tests__/codemod-test.ts @@ -0,0 +1,56 @@ +import fs from "fs"; +import path from "path"; + +import * as cli from "./utils/cli"; +import * as git from "./utils/git"; +import withApp from "./utils/withApp"; + +let FIXTURE = path.join(__dirname, "fixtures/replace-remix-magic-imports"); + +it("checks that project is a clean git repository", async () => { + await withApp(FIXTURE, async (projectDir) => { + // ensure project is a git repository + let error1 = await cli.shouldError([ + "codemod", + "some-codemod-name", + projectDir, + ]); + expect(error1.exitCode).not.toBe(0); + expect(error1.stderr).toContain(`${projectDir} is not a git repository`); + expect(error1.stdout).toContain( + "To override this safety check, use the --force flag" + ); + + // initialize git repo in project + await git.initialCommit(projectDir); + + // make some uncommitted changes + fs.appendFileSync(path.join(projectDir, "package.json"), "change"); + + // ensure project has no uncommitted changes + let error2 = await cli.shouldError([ + "codemod", + "some-codemod-name", + projectDir, + ]); + expect(error2.exitCode).not.toBe(0); + expect(error2.stderr).toContain(`${projectDir} has uncommitted changes`); + expect(error2.stdout).toContain( + "Stash or commit your changes before running codemods" + ); + expect(error2.stdout).toContain( + "To override this safety check, use the --force flag" + ); + }); +}); + +it("checks that the specified codemod exists", async () => { + await withApp(FIXTURE, async (projectDir) => { + await git.initialCommit(projectDir); + + let codemodName = "invalid-codemod-name"; + let error = await cli.shouldError(["codemod", codemodName, projectDir]); + expect(error.exitCode).toBe(1); + expect(error.stderr).toContain(`Unrecognized codemod: ${codemodName}`); + }); +}); diff --git a/packages/remix-dev/__tests__/replace-remix-imports-test.ts b/packages/remix-dev/__tests__/replace-remix-imports-test.ts deleted file mode 100644 index a36927a3832..00000000000 --- a/packages/remix-dev/__tests__/replace-remix-imports-test.ts +++ /dev/null @@ -1,123 +0,0 @@ -import os from "os"; -import path from "path"; -import fse from "fs-extra"; -import glob from "fast-glob"; -import shell from "shelljs"; -import stripAnsi from "strip-ansi"; -import type { PackageJson } from "type-fest"; - -import { run } from "../cli/run"; -import { readConfig } from "../config"; - -let output: string; -const ORIGINAL_IO = { - log: console.log, - warn: console.warn, - error: console.error, -}; -function mockLog(message: unknown = "", ...rest: Array) { - // if you need to debug stuff, then use: - // console.log('debug:', 'whatever you need to say'); - if (typeof message === "string" && message.startsWith("debug:")) { - return ORIGINAL_IO.log(message, ...rest); - } - let messageString = - typeof message === "string" ? message : JSON.stringify(message, null, 2); - if (rest[0]) { - throw new Error( - "Our tests are not set up to handle multiple arguments to console.log." - ); - } - output += "\n" + stripAnsi(messageString); -} - -const FIXTURE = path.join(__dirname, "fixtures/replace-remix-imports"); - -const TEMP_DIR = path.join( - fse.realpathSync(os.tmpdir()), - `remix-tests-${Math.random().toString(32).slice(2)}` -); - -jest.setTimeout(30_000); -beforeEach(async () => { - output = ""; - console.log = mockLog; - console.warn = mockLog; - console.error = mockLog; - - await fse.remove(TEMP_DIR); - await fse.ensureDir(TEMP_DIR); -}); - -afterEach(async () => { - console.log = ORIGINAL_IO.log; - console.warn = ORIGINAL_IO.warn; - console.error = ORIGINAL_IO.error; - - await fse.remove(TEMP_DIR); -}); - -const makeApp = () => { - let projectDir = path.join(TEMP_DIR, "replace-remix-imports"); - fse.copySync(FIXTURE, projectDir); - return projectDir; -}; - -const replaceRemixImports = async (projectDir: string) => { - await run([ - "migrate", - "--migration", - "replace-remix-imports", - projectDir, - "--force", - ]); -}; - -describe("`replace-remix-imports` migration", () => { - it("runs successfully", async () => { - let projectDir = makeApp(); - let config = await readConfig(projectDir); - await replaceRemixImports(projectDir); - - expect(output).toContain("detected `@remix-run/node`"); - expect(output).toContain("detected `@remix-run/serve`"); - - expect(output).toContain("detected `1.3.4`"); - expect(output).toContain("โœ… Your Remix dependencies look good!"); - let packageJson: PackageJson = fse.readJSONSync( - path.join(projectDir, "package.json") - ); - expect(packageJson.dependencies).not.toContain("remix"); - expect(packageJson.devDependencies).not.toContain("remix"); - expect(packageJson.dependencies).toEqual( - expect.objectContaining({ - "@remix-run/node": "1.3.4", - "@remix-run/react": "1.3.4", - "@remix-run/serve": "1.3.4", - }) - ); - expect(packageJson.devDependencies).toEqual( - expect.objectContaining({ - "@remix-run/dev": "1.3.4", - }) - ); - expect(output).toContain( - "๐Ÿ—‘ I'm removing `remix setup` from your `postinstall` script." - ); - expect(output).toContain("โœ… Your `package.json` scripts looks good!"); - expect(packageJson.scripts).not.toContain("postinstall"); - - expect(output).toContain("โœ… Your Remix imports look good!"); - - let files = glob.sync("**/*.@(ts|tsx|js|jsx)", { - cwd: config.appDirectory, - absolute: true, - }); - let result = shell.grep("-l", 'from "remix"', files); - expect(result.stdout.trim()).toBe(""); - expect(result.stderr).toBeNull(); - expect(result.code).toBe(0); - - expect(output).toContain("successfully migrated"); - }, 200_000); -}); diff --git a/packages/remix-dev/__tests__/transform-replaceRemixMagicImports-test.ts b/packages/remix-dev/__tests__/transform-replaceRemixMagicImports-test.ts new file mode 100644 index 00000000000..e508c792dfe --- /dev/null +++ b/packages/remix-dev/__tests__/transform-replaceRemixMagicImports-test.ts @@ -0,0 +1,86 @@ +import replaceRemixMagicImports from "../codemod/replace-remix-magic-imports/transform"; +import * as eol from "./utils/eol"; + +it("replaces single-specifier imports", async () => { + let code = [ + 'import { json } from "remix"', + 'import type { GetLoadContextFunction } from "remix"', + 'import { type LinkProps } from "remix"', + ].join("\n"); + let transform = replaceRemixMagicImports({ + runtime: "node", + adapter: "express", + }); + let result = eol.normalize(transform(code, "fake.tsx")); + expect(result).toBe( + [ + 'import { type GetLoadContextFunction } from "@remix-run/express";', + 'import { json } from "@remix-run/node";', + 'import { type LinkProps } from "@remix-run/react";', + ].join("\n") + ); +}); + +it("replaces single-kind, multi-specifier imports", async () => { + let code = [ + 'import { json, createRequestHandler, Form } from "remix"', + 'import type { ActionFunction, GetLoadContextFunction, LinkProps } from "remix"', + 'import { type Cookie, type RequestHandler, type NavLinkProps } from "remix"', + ].join("\n"); + let transform = replaceRemixMagicImports({ + runtime: "node", + adapter: "express", + }); + let result = eol.normalize(transform(code, "fake.tsx")); + expect(result).toBe( + [ + 'import { type GetLoadContextFunction, type RequestHandler, createRequestHandler } from "@remix-run/express";', + 'import { type ActionFunction, type Cookie, json } from "@remix-run/node";', + 'import { type LinkProps, type NavLinkProps, Form } from "@remix-run/react";', + ].join("\n") + ); +}); + +it("replaces multi-kind, multi-specifier imports", async () => { + let code = [ + 'import { json, type ActionFunction, createRequestHandler, type GetLoadContextFunction, Form, type LinkProps } from "remix"', + ].join("\n"); + let transform = replaceRemixMagicImports({ + runtime: "node", + adapter: "express", + }); + let result = eol.normalize(transform(code, "fake.tsx")); + expect(result).toBe( + [ + 'import { type GetLoadContextFunction, createRequestHandler } from "@remix-run/express";', + 'import { type ActionFunction, json } from "@remix-run/node";', + 'import { type LinkProps, Form } from "@remix-run/react";', + ].join("\n") + ); +}); + +it("replaces runtime-specific and adapter-specific imports", async () => { + let code = [ + 'import { json, createCloudflareKVSessionStorage, createRequestHandler, createPagesFunctionHandler, Form } from "remix"', + 'import type { ActionFunction, GetLoadContextFunction, createPagesFunctionHandlerParams, LinkProps } from "remix"', + ].join("\n"); + let transform = replaceRemixMagicImports({ + runtime: "cloudflare", + adapter: "cloudflare-pages", + }); + let result = eol.normalize(transform(code, "fake.tsx")); + expect(result).toBe( + [ + 'import { type ActionFunction, createCloudflareKVSessionStorage, json } from "@remix-run/cloudflare";', + "", // recast adds a newline here https://github.com/benjamn/recast/issues/39 + "import {", + " type GetLoadContextFunction,", + " type createPagesFunctionHandlerParams,", + " createPagesFunctionHandler,", + " createRequestHandler,", + '} from "@remix-run/cloudflare-pages";', + "", // recast adds a newline here https://github.com/benjamn/recast/issues/39 + 'import { type LinkProps, Form } from "@remix-run/react";', + ].join("\n") + ); +}); diff --git a/packages/remix-dev/__tests__/utils/captureError.ts b/packages/remix-dev/__tests__/utils/captureError.ts new file mode 100644 index 00000000000..f29f0bafae0 --- /dev/null +++ b/packages/remix-dev/__tests__/utils/captureError.ts @@ -0,0 +1,14 @@ +class NoErrorThrownError extends Error {} + +export default async ( + erroring: Promise | (() => Promise) +) => { + try { + let promise = typeof erroring === "function" ? erroring() : erroring; + await promise; + throw new NoErrorThrownError(); + } catch (error: unknown) { + if (error instanceof NoErrorThrownError) throw error; + return error; + } +}; diff --git a/packages/remix-dev/__tests__/utils/cli.ts b/packages/remix-dev/__tests__/utils/cli.ts new file mode 100644 index 00000000000..d4860947d07 --- /dev/null +++ b/packages/remix-dev/__tests__/utils/cli.ts @@ -0,0 +1,101 @@ +import execa from "execa"; +import path from "path"; +import glob from "fast-glob"; +import fse from "fs-extra"; + +import captureError from "./captureError"; + +export const isExecaError = (error: unknown): error is execa.ExecaError => { + if (!(error instanceof Error)) return false; + return "exitCode" in error; +}; + +/** + * Read the details (`stat`) for a file or directory, + * or return `undefined` if the file or directory does not exist. + */ +const safeStat = (fileOrDir: string): fse.Stats | undefined => { + try { + return fse.statSync(fileOrDir); + } catch (error: unknown) { + let systemError = error as { code?: string }; + if (!systemError.code) throw error; + if (systemError.code !== "ENOENT") throw error; + throw error; + } +}; + +/** + * Find the latest modified time (`mtime`) across all files (recursively) in a directory. + */ +const mtimeDir = async (dir: string): Promise => { + let files = await glob(`**/*.{js,jsx,ts,tsx}`, { + cwd: dir, + ignore: [ + "**/node_modules/**", + "**/dist/**", + "**/.git/**", + "**/__tests__/**", + ], + }); + + let maxMtime: Date = new Date(0); + if (files.length === 0) return maxMtime; + for (let file of files) { + let filepath = path.resolve(dir, file); + let stat = safeStat(filepath); + if (stat === undefined) continue; + if (stat.mtime > maxMtime) { + maxMtime = stat.mtime; + } + } + return maxMtime; +}; + +export const run = async (args: string[], options: execa.Options = {}) => { + // // Running build `.js` is ~8x faster than running source `.ts` via `esbuild-register`, + // // so unless source code changes are not yet reflected in the build, prefer running the built `.js`. + // // To get speed ups in dev, make sure you build before running tests or are running `yarn watch` + let sourceDir = path.resolve(__dirname, "../.."); + let sourceTS = path.resolve(sourceDir, "cli.ts"); + // // when the most recent change happened _anywhere_ within `packages/remix-dev/` + + let sourceModified = await mtimeDir(sourceDir); + + let buildDir = path.resolve( + __dirname, + "../../../../build/node_modules/@remix-run/dev" + ); + let builtJS = path.resolve(buildDir, "dist/cli.js"); + let buildModified = await mtimeDir(buildDir); + + // sometimes `yarn watch` is so fast that the build mtime is reported + // to be _before_ the mtime for the change in source that _caused_ the build + // so we only use source if changes there are at least 5ms newer than latest build change + let thresholdMs = 5; + let isBuildUpToDate = + buildModified.valueOf() + thresholdMs >= sourceModified.valueOf(); + + let result = await execa( + "node", + [ + ...(isBuildUpToDate + ? [builtJS] + : ["--require", require.resolve("esbuild-register"), sourceTS]), + ...args, + ], + { + ...options, + env: { ...process.env, NO_COLOR: "1", ...(options?.env ?? {}) }, + } + ); + return result; +}; + +export const shouldError = async (args: string[]) => { + let error = await captureError(async () => { + await run(args); + }); + if (!isExecaError(error)) throw error; + return error; +}; diff --git a/packages/remix-dev/__tests__/utils/eol.ts b/packages/remix-dev/__tests__/utils/eol.ts new file mode 100644 index 00000000000..bb39313511c --- /dev/null +++ b/packages/remix-dev/__tests__/utils/eol.ts @@ -0,0 +1,2 @@ +export const normalize = (text: string, normalized = "\n") => + text.replace(/\r?\n/g, normalized); diff --git a/packages/remix-dev/__tests__/utils/git.ts b/packages/remix-dev/__tests__/utils/git.ts new file mode 100644 index 00000000000..8fdb2f27433 --- /dev/null +++ b/packages/remix-dev/__tests__/utils/git.ts @@ -0,0 +1,18 @@ +import execa from "execa"; + +export const initialCommit = async (projectDir: string) => { + let run = (cmd: string, args: string[]) => + execa(cmd, args, { cwd: projectDir }); + let commands = [ + ["init"], + + ["config", "user.name", '"github-actions[bot]"'], + ["config", "user.email", '"github-actions[bot]@users.noreply.github.com"'], + + ["add", "."], + ["commit", "--message", '"initial commit"'], + ]; + for (let command of commands) { + await run("git", command); + } +}; diff --git a/packages/remix-dev/__tests__/utils/withApp.ts b/packages/remix-dev/__tests__/utils/withApp.ts new file mode 100644 index 00000000000..7c4a82a3bbf --- /dev/null +++ b/packages/remix-dev/__tests__/utils/withApp.ts @@ -0,0 +1,24 @@ +import os from "os"; +import path from "path"; +import fse from "fs-extra"; + +export default async ( + fixture: string, + callback: (projectDir: string) => Promise +): Promise => { + let TEMP_DIR = path.join( + fse.realpathSync(os.tmpdir()), + `remix-tests-${Math.random().toString(32).slice(2)}` + ); + + let projectDir = path.join(TEMP_DIR); + await fse.remove(TEMP_DIR); + await fse.ensureDir(TEMP_DIR); + fse.copySync(fixture, projectDir); + try { + let result = await callback(projectDir); + return result; + } finally { + await fse.remove(TEMP_DIR); + } +}; From a6ce3266f6a0ec282faa9bbb84914b43d8e7df52 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Mon, 14 Nov 2022 19:57:03 -0500 Subject: [PATCH 7/9] ci: run build before primary tests some tests can make use of the built javascript artifacts (e.g. `cli.js`) to run 8-10x faster than running with source Typescript (e.g. `cli.ts`) --- .github/workflows/reusable-test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/reusable-test.yml b/.github/workflows/reusable-test.yml index b06080710f6..ec783338578 100644 --- a/.github/workflows/reusable-test.yml +++ b/.github/workflows/reusable-test.yml @@ -68,6 +68,10 @@ jobs: - name: ๐Ÿ“ฅ Install deps run: yarn --frozen-lockfile + # It's faster to use the built `cli.js` in tests if its available and up-to-date + - name: ๐Ÿ— Build + run: yarn build + - name: ๐Ÿงช Run Primary Tests run: "yarn test:primary" From e58d1d32927f6d011593773421d8cccfb3b4a555 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Mon, 14 Nov 2022 21:12:37 -0500 Subject: [PATCH 8/9] test(dev): retry temp dir removal for windows ci Windows sometimes throws `EBUSY: resource busy or locked, rmdir` errors when attempting to removing the temporary directory. Retrying a couple times seems to get it to succeed. See https://github.com/jprichardson/node-fs-extra/issues?q=EBUSY%3A+resource+busy+or+locked%2C+rmdir --- packages/remix-dev/__tests__/utils/withApp.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/remix-dev/__tests__/utils/withApp.ts b/packages/remix-dev/__tests__/utils/withApp.ts index 7c4a82a3bbf..c711a009a67 100644 --- a/packages/remix-dev/__tests__/utils/withApp.ts +++ b/packages/remix-dev/__tests__/utils/withApp.ts @@ -2,6 +2,19 @@ import os from "os"; import path from "path"; import fse from "fs-extra"; +const retry = async ( + callback: () => Promise, + times: number, + delayMs: number = 0 +) => { + try { + await callback(); + } catch (error) { + if (times === 0) throw error; + setTimeout(() => retry(callback, times - 1), delayMs); + } +}; + export default async ( fixture: string, callback: (projectDir: string) => Promise @@ -19,6 +32,10 @@ export default async ( let result = await callback(projectDir); return result; } finally { - await fse.remove(TEMP_DIR); + // Windows sometimes throws `EBUSY: resource busy or locked, rmdir` + // errors when attempting to removing the temporary directory. + // Retrying a couple times seems to get it to succeed. + // See https://github.com/jprichardson/node-fs-extra/issues?q=EBUSY%3A+resource+busy+or+locked%2C+rmdir + retry(async () => await fse.remove(TEMP_DIR), 3, 200); } }; From fd5742f9657cacfde2139072be8a250089133cb9 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Tue, 15 Nov 2022 13:41:13 -0500 Subject: [PATCH 9/9] Create long-colts-remain.md --- .changeset/long-colts-remain.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .changeset/long-colts-remain.md diff --git a/.changeset/long-colts-remain.md b/.changeset/long-colts-remain.md new file mode 100644 index 00000000000..86e621bd5e7 --- /dev/null +++ b/.changeset/long-colts-remain.md @@ -0,0 +1,10 @@ +--- +"remix": patch +"@remix-run/dev": patch +--- + +Replace migrations with codemods. Specifically, `npx @remix-run/dev migrate` is now `@remix-run/dev codemod`. + +Under the hood, codemods are now written via Babel's Visitor API instead of jscodeshift. +Also `replace-remix-magic-imports` is now faster as it no longer depends on a network connection +and does not incur the overhead of spinning up workers for jscodeshift.