diff --git a/.github/workflows/setup.sh b/.github/workflows/setup.sh
index eced0a747..0669de0aa 100644
--- a/.github/workflows/setup.sh
+++ b/.github/workflows/setup.sh
@@ -5,7 +5,7 @@ echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc
set -ex
-npm i --silent -g pnpm@6 esbuild@0.8.53 --unsafe-perm
+npm i --silent -g pnpm@6 --unsafe-perm
pnpm i --no-prefer-frozen-lockfile --ignore-scripts
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
deleted file mode 100644
index 554899478..000000000
--- a/.github/workflows/test.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-name: test
-
-on:
- push:
- branches:
- - main
- paths-ignore:
- - '*.md'
- pull_request:
- paths-ignore:
- - '*.md'
-
-jobs:
- fetch-engine:
- timeout-minutes: 10
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
-
- - uses: actions/setup-node@v3
- with:
- node-version: '14'
-
- - run: bash .github/workflows/setup.sh
- env:
- CI: true
-
- - run: pnpm run test
- name: 'fetch-engine'
- working-directory: packages/fetch-engine
- env:
- CI: true
- SKIP_GIT: true
- GITHUB_CONTEXT: ${{ toJson(github) }}
- get-platform:
- timeout-minutes: 10
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
-
- - uses: actions/setup-node@v3
- with:
- node-version: '14'
-
- - run: bash .github/workflows/setup.sh
- env:
- CI: true
-
- - run: pnpm run test
- name: 'get-platform'
- working-directory: packages/get-platform
- env:
- CI: true
- SKIP_GIT: true
- GITHUB_CONTEXT: ${{ toJson(github) }}
diff --git a/README.md b/README.md
index d311c91dd..feb34d71f 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,14 @@
-# Prisma Engines Wrapper
+# Prisma Engines Version
-
@prisma/engines
-
-
-
-
@prisma/engines-version
-
@prisma/fetch-engine
-
-
-
-
-
@prisma/get-platform
-
-
-
-
-This repository contains the code for packages `@prisma/engines`, `@prisma/engines-version`, `@prisma/fetch-engine` and `@prisma/get-platform`. They are wrapping the [Prisma Rust Engines](https://github.com/prisma/prisma-engines) in npm packages to be used by the [Prisma CLI, the Client](https://github.com/prisma/prisma), and other tooling.
+It is used to get the hash of the [Prisma Rust Engines](https://github.com/prisma/prisma-engines) for downloading via the [Prisma CLI, the Client](https://github.com/prisma/prisma), and other tooling.
[The automated publish pipeline](https://github.com/prisma/engines-wrapper/actions/workflows/publish-engines.yml) is triggered during the publish process of [`prisma-engines`](https://github.com/prisma/prisma-engines) by the [engineer CLI](https://github.com/prisma/engineer/blob/main/src/trigger/mod.rs).
-This `engines-wrapper` GitHub Actions workflow informs other repositories (e.g. [`prisma/prisma`](https://github.com/prisma/prisma) and [`prisma/prisma-fmt-wasm`](https://github.com/prisma/prisma-fmt-wasm)) of these published npm packages.
+This `engines-version` GitHub Actions workflow informs other repositories (e.g. [`prisma/prisma`](https://github.com/prisma/prisma) and [`prisma/prisma-fmt-wasm`](https://github.com/prisma/prisma-fmt-wasm)) of these published npm packages.
diff --git a/package.json b/package.json
index 17643af84..ff8af91e0 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "engines-wrapper",
"version": "1.0.0",
- "description": "This repository contains the packages `@prisma/engines` and `@prisma/engines-version`. They are wrapping our [Rust Engines](https://github.com/prisma/prisma-engines) in npm packages.",
+ "description": "It is used to get the hash of the [Prisma Rust Engines](https://github.com/prisma/prisma-engines) for downloading via the [Prisma CLI, the Client](https://github.com/prisma/prisma), and other tooling.",
"private": true,
"devDependencies": {
"@sindresorhus/slugify": "1.1.2",
diff --git a/packages/engines/.gitignore b/packages/engines/.gitignore
deleted file mode 100644
index 761e67834..000000000
--- a/packages/engines/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-introspection-engine*
-query-engine*
-migration-engine*
-prisma-fmt*
-libquery_engine*
\ No newline at end of file
diff --git a/packages/engines/README.md b/packages/engines/README.md
deleted file mode 100644
index 81f520e1f..000000000
--- a/packages/engines/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# `@prisma/engines`
-
-This package ships the Prisma Engines, namely the Query Engine, Migration Engine, Introspection Engine and Prisma Format.
-It has a one to one mapping to the engine releases in its version.
-In the postinall hook of this package, all engines available for the current platform are downloaded from the Prisma CDN.
-
-You should probably not use this package directly, but instead use one of these:
-
-- [`prisma` CLI](https://www.npmjs.com/package/prisma)
-- [`@prisma/client`](https://www.npmjs.com/package/@prisma/client)
diff --git a/packages/engines/package.json b/packages/engines/package.json
deleted file mode 100644
index 770d2a20f..000000000
--- a/packages/engines/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "@prisma/engines",
- "version": "4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0",
- "main": "dist/index.js",
- "types": "dist/index.d.ts",
- "license": "Apache-2.0",
- "author": "Tim Suchanek ",
- "devDependencies": {
- "@prisma/debug": "3.15.2",
- "@prisma/engines-version": "workspace:4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0",
- "@prisma/fetch-engine": "workspace:4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0",
- "@types/node": "16.11.41",
- "execa": "5.1.1",
- "typescript": "4.7.4"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/prisma/engines-wrapper.git",
- "directory": "packages/engines"
- },
- "scripts": {
- "build": "node scripts/build.js",
- "prepublishOnly": "pnpm run build",
- "postinstall": "node download/index.js"
- },
- "files": [
- "dist",
- "download"
- ]
-}
\ No newline at end of file
diff --git a/packages/engines/scripts/build.js b/packages/engines/scripts/build.js
deleted file mode 100644
index edb6dd760..000000000
--- a/packages/engines/scripts/build.js
+++ /dev/null
@@ -1,37 +0,0 @@
-const execa = require('execa')
-const chalk = require('chalk')
-
-async function main() {
- const before = Date.now()
-
- // TODO: Combine download.ts and index.ts together to save space
- await Promise.all([
- run('tsc -d', true),
- run(
- 'esbuild src/download.ts --outfile=download/index.js --bundle --platform=node --target=node14 --minify --sourcemap',
- false,
- ),
- run(
- 'esbuild src/index.ts --outfile=dist/index.js --bundle --platform=node --target=node14',
- false,
- ),
- ])
-
- const after = Date.now()
- console.log(
- chalk.blueBright(
- `\nDone with @prisma/engines build in ${chalk.bold(
- ((after - before) / 1000).toFixed(1),
- )}s`,
- ),
- )
-}
-
-function run(command, preferLocal = true) {
- return execa.command(command, { preferLocal, shell: true, stdio: 'inherit' })
-}
-
-main().catch((e) => {
- console.error(e)
- process.exit(1)
-})
diff --git a/packages/engines/src/__tests__/all-exist.test.ts b/packages/engines/src/__tests__/all-exist.test.ts
deleted file mode 100644
index 70b786d12..000000000
--- a/packages/engines/src/__tests__/all-exist.test.ts
+++ /dev/null
@@ -1 +0,0 @@
-// TODO
diff --git a/packages/engines/src/download.ts b/packages/engines/src/download.ts
deleted file mode 100644
index f75f2743f..000000000
--- a/packages/engines/src/download.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-import Debug from '@prisma/debug'
-import { enginesVersion } from '@prisma/engines-version'
-import {
- BinaryDownloadConfiguration,
- BinaryType,
- download,
-} from '@prisma/fetch-engine'
-import fs from 'fs'
-import path from 'path'
-import { getCliQueryEngineBinaryType } from '.'
-const debug = Debug('prisma:download')
-
-const binaryDir = path.join(__dirname, '../')
-
-const lockFile = path.join(binaryDir, 'download-lock')
-
-let createdLockFile = false
-async function main() {
- if (
- fs.existsSync(lockFile) &&
- parseInt(fs.readFileSync(lockFile, 'utf-8'), 10) > Date.now() - 20000
- ) {
- debug(
- `Lock file already exists, so we're skipping the download of the prisma binaries`,
- )
- } else {
- createLockFile()
- let binaryTargets = undefined
- if (process.env.PRISMA_CLI_BINARY_TARGETS) {
- binaryTargets = process.env.PRISMA_CLI_BINARY_TARGETS.split(',')
- }
- const cliQueryEngineBinaryType = getCliQueryEngineBinaryType()
-
- const binaries: BinaryDownloadConfiguration = {
- [cliQueryEngineBinaryType]: binaryDir,
- [BinaryType.migrationEngine]: binaryDir,
- [BinaryType.introspectionEngine]: binaryDir,
- [BinaryType.prismaFmt]: binaryDir,
- }
-
- await download({
- binaries,
- showProgress: true,
- version: enginesVersion,
- failSilent: true,
- binaryTargets,
- }).catch((e) => debug(e))
-
- cleanupLockFile()
- }
-}
-
-function createLockFile() {
- createdLockFile = true
- fs.writeFileSync(lockFile, Date.now().toString())
-}
-
-function cleanupLockFile() {
- if (createdLockFile) {
- try {
- if (fs.existsSync(lockFile)) {
- fs.unlinkSync(lockFile)
- }
- } catch (e) {
- debug(e)
- }
- }
-}
-
-main().catch((e) => debug(e))
-
-// if we are in a Now context, ensure that `prisma generate` is in the postinstall hook
-process.on('beforeExit', () => {
- cleanupLockFile()
-})
-
-process.once('SIGINT', () => {
- cleanupLockFile()
- process.exit()
-})
diff --git a/packages/engines/src/index.ts b/packages/engines/src/index.ts
deleted file mode 100644
index d3f6d1c26..000000000
--- a/packages/engines/src/index.ts
+++ /dev/null
@@ -1,107 +0,0 @@
-import Debug from '@prisma/debug'
-import { enginesVersion } from '@prisma/engines-version'
-import { BinaryType, download } from '@prisma/fetch-engine'
-import path from 'path'
-const debug = Debug('prisma:engines')
-export function getEnginesPath() {
- return path.join(__dirname, '../')
-}
-export const DEFAULT_CLI_QUERY_ENGINE_BINARY_TYPE = BinaryType.libqueryEngine // TODO: name not clear
-/**
- * Checks if the env override `PRISMA_CLI_QUERY_ENGINE_TYPE` is set to `library` or `binary`
- * Otherwise returns the default
- */
-export function getCliQueryEngineBinaryType():
- | BinaryType.libqueryEngine
- | BinaryType.queryEngine {
- const envCliQueryEngineType = process.env.PRISMA_CLI_QUERY_ENGINE_TYPE
- if (envCliQueryEngineType) {
- if (envCliQueryEngineType === 'binary') {
- return BinaryType.queryEngine
- }
- if (envCliQueryEngineType === 'library') {
- return BinaryType.libqueryEngine
- }
- }
- return DEFAULT_CLI_QUERY_ENGINE_BINARY_TYPE
-}
-export async function ensureBinariesExist() {
- const binaryDir = path.join(__dirname, '../')
- let binaryTargets = undefined
- if (process.env.PRISMA_CLI_BINARY_TARGETS) {
- binaryTargets = process.env.PRISMA_CLI_BINARY_TARGETS.split(',')
- }
-
- const cliQueryEngineBinaryType = getCliQueryEngineBinaryType()
-
- const binaries = {
- [cliQueryEngineBinaryType]: binaryDir,
- [BinaryType.migrationEngine]: binaryDir,
- [BinaryType.introspectionEngine]: binaryDir,
- [BinaryType.prismaFmt]: binaryDir,
- }
- debug(`binaries to download ${Object.keys(binaries).join(', ')}`)
- await download({
- binaries: binaries,
- showProgress: true,
- version: enginesVersion,
- failSilent: false,
- binaryTargets,
- })
-}
-
-export { enginesVersion } from '@prisma/engines-version'
-
-/**
- * This annotation is used for `node-file-trace`
- * See https://github.com/zeit/node-file-trace/issues/104
- * It's necessary to run this package standalone or within the sdk in Vercel
- * And needed for https://github.com/vercel/pkg#detecting-assets-in-source-code
- */
-
-path.join(__dirname, '../query-engine-darwin')
-path.join(__dirname, '../introspection-engine-darwin')
-path.join(__dirname, '../prisma-fmt-darwin')
-
-path.join(__dirname, '../query-engine-darwin-arm64')
-path.join(__dirname, '../introspection-engine-darwin-arm64')
-path.join(__dirname, '../prisma-fmt-darwin-arm64')
-
-path.join(__dirname, '../query-engine-debian-openssl-1.0.x')
-path.join(__dirname, '../introspection-engine-debian-openssl-1.0.x')
-path.join(__dirname, '../prisma-fmt-debian-openssl-1.0.x')
-
-path.join(__dirname, '../query-engine-debian-openssl-1.1.x')
-path.join(__dirname, '../introspection-engine-debian-openssl-1.1.x')
-path.join(__dirname, '../prisma-fmt-debian-openssl-1.1.x')
-
-path.join(__dirname, '../query-engine-debian-openssl-3.0.x')
-path.join(__dirname, '../introspection-engine-debian-openssl-3.0.x')
-path.join(__dirname, '../prisma-fmt-debian-openssl-3.0.x')
-
-path.join(__dirname, '../query-engine-rhel-openssl-1.0.x')
-path.join(__dirname, '../introspection-engine-rhel-openssl-1.0.x')
-path.join(__dirname, '../prisma-fmt-rhel-openssl-1.0.x')
-
-path.join(__dirname, '../query-engine-rhel-openssl-1.1.x')
-path.join(__dirname, '../introspection-engine-rhel-openssl-1.1.x')
-path.join(__dirname, '../prisma-fmt-rhel-openssl-1.1.x')
-
-path.join(__dirname, '../query-engine-rhel-openssl-3.0.x')
-path.join(__dirname, '../introspection-engine-rhel-openssl-3.0.x')
-path.join(__dirname, '../prisma-fmt-rhel-openssl-3.0.x')
-
-// Node API
-path.join(__dirname, '../libquery_engine-darwin.dylib.node')
-path.join(__dirname, '../libquery_engine-darwin-arm64.dylib.node')
-path.join(__dirname, '../libquery_engine-debian-openssl-1.0.x.so.node')
-path.join(__dirname, '../libquery_engine-debian-openssl-1.1.x.so.node')
-path.join(__dirname, '../libquery_engine-debian-openssl-3.0.x.so.node')
-path.join(__dirname, '../libquery_engine-linux-arm64-openssl-1.0.x.so.node')
-path.join(__dirname, '../libquery_engine-linux-arm64-openssl-1.1.x.so.node')
-path.join(__dirname, '../libquery_engine-linux-arm64-openssl-3.0.x.so.node')
-path.join(__dirname, '../libquery_engine-linux-musl.so.node')
-path.join(__dirname, '../libquery_engine-rhel-openssl-1.0.x.so.node')
-path.join(__dirname, '../libquery_engine-rhel-openssl-1.1.x.so.node')
-path.join(__dirname, '../libquery_engine-rhel-openssl-3.0.x.so.node')
-path.join(__dirname, '../query_engine-windows.dll.node')
diff --git a/packages/engines/tsconfig.json b/packages/engines/tsconfig.json
deleted file mode 100644
index 4e721d860..000000000
--- a/packages/engines/tsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "compilerOptions": {
- "lib": ["esnext"],
- "module": "commonjs",
- "target": "es2018",
- "strict": false,
- "esModuleInterop": true,
- "sourceMap": true,
- "noImplicitAny": false,
- "outDir": "dist",
- "rootDir": "src",
- "declaration": true,
- "incremental": true
- },
- "exclude": ["src/__tests__", "dist", "build", "scripts"]
-}
diff --git a/packages/fetch-engine/.eslintignore b/packages/fetch-engine/.eslintignore
deleted file mode 100644
index b6e5f2b64..000000000
--- a/packages/fetch-engine/.eslintignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-dist
-scripts
\ No newline at end of file
diff --git a/packages/fetch-engine/.eslintrc.js b/packages/fetch-engine/.eslintrc.js
deleted file mode 100644
index 6dace2a12..000000000
--- a/packages/fetch-engine/.eslintrc.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const path = require('path')
-const config = require('../../../.eslintrc.js')
-
-config.parserOptions.project.push(path.join(__dirname, 'tsconfig.eslint.json'))
-
-module.exports = config
diff --git a/packages/fetch-engine/.gitignore b/packages/fetch-engine/.gitignore
deleted file mode 100644
index 51f5db6df..000000000
--- a/packages/fetch-engine/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-node_modules
-dist
-build
-runtime
-download
-cli
-.DS_Store
-prisma
-schema-inferrer-bin
-test
-sandbox
-pnpm-lock.yaml
diff --git a/packages/fetch-engine/.prettierignore b/packages/fetch-engine/.prettierignore
deleted file mode 100644
index 53c37a166..000000000
--- a/packages/fetch-engine/.prettierignore
+++ /dev/null
@@ -1 +0,0 @@
-dist
\ No newline at end of file
diff --git a/packages/fetch-engine/.prettierrc.yml b/packages/fetch-engine/.prettierrc.yml
deleted file mode 100644
index bbaf47227..000000000
--- a/packages/fetch-engine/.prettierrc.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-tabWidth: 2
-trailingComma: all
-singleQuote: true
-semi: false
-printWidth: 80
diff --git a/packages/fetch-engine/README.md b/packages/fetch-engine/README.md
deleted file mode 100644
index 92a8840f9..000000000
--- a/packages/fetch-engine/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# @prisma/fetch-engine
-
-Responsible for downloading and caching the latest Rust binary
-
-⚠️ **Warning**: This package is intended for Prisma's internal use.
-Its release cycle does not follow SemVer, which means we might release breaking changes (change APIs, remove functionality) without any prior warning.
-
-If you are using this package, it would be helpful if you could help us gain an understanding where, how and why you are using it. Your feedback will be valuable to us to define a better API. Please share this information at https://github.com/prisma/prisma/discussions/13877 - Thanks!
diff --git a/packages/fetch-engine/jest.config.js b/packages/fetch-engine/jest.config.js
deleted file mode 100644
index 721c2961a..000000000
--- a/packages/fetch-engine/jest.config.js
+++ /dev/null
@@ -1,9 +0,0 @@
-module.exports = {
- preset: 'ts-jest',
- testEnvironment: 'node',
- collectCoverage: process.env.CI ? true : false,
- coverageReporters: ['clover'],
- coverageDirectory: 'src/__tests__/coverage',
- testMatch: ['**/src/__tests__/**/*.test.ts'],
- collectCoverageFrom: ['src/**/*.ts', '!**/__tests__/**/*'],
-}
diff --git a/packages/fetch-engine/package.json b/packages/fetch-engine/package.json
deleted file mode 100644
index 482c6dd65..000000000
--- a/packages/fetch-engine/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "name": "@prisma/fetch-engine",
- "version": "4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0",
- "main": "dist/index.js",
- "types": "dist/index.d.ts",
- "license": "Apache-2.0",
- "author": "Tim Suchanek ",
- "homepage": "https://www.prisma.io",
- "repository": "git@github.com:prisma/prisma.git",
- "maintainers": [
- "Tim Suchanek ",
- "Joël Galeran ",
- "William Luke "
- ],
- "bugs": "https://github.com/prisma/prisma/issues",
- "devDependencies": {
- "@prisma/engines-version": "workspace:4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0",
- "@types/find-cache-dir": "3.2.1",
- "@types/jest": "27.5.2",
- "@types/node": "16.11.41",
- "@types/node-fetch": "2.6.2",
- "@types/progress": "2.0.5",
- "@typescript-eslint/eslint-plugin": "5.30.0",
- "@typescript-eslint/parser": "5.30.0",
- "del": "6.1.1",
- "eslint": "8.18.0",
- "eslint-config-prettier": "8.5.0",
- "eslint-plugin-eslint-comments": "3.2.0",
- "eslint-plugin-jest": "25.7.0",
- "eslint-plugin-prettier": "4.1.0",
- "jest": "27.5.1",
- "lint-staged": "11.2.6",
- "prettier": "2.7.1",
- "strip-ansi": "6.0.1",
- "ts-jest": "27.1.5",
- "typescript": "4.7.4"
- },
- "dependencies": {
- "@prisma/debug": "3.15.2",
- "@prisma/get-platform": "workspace:4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0",
- "chalk": "4.1.2",
- "execa": "5.1.1",
- "find-cache-dir": "3.3.2",
- "hasha": "5.2.2",
- "http-proxy-agent": "5.0.0",
- "https-proxy-agent": "5.0.1",
- "make-dir": "3.1.0",
- "node-fetch": "2.6.7",
- "p-filter": "2.1.0",
- "p-map": "4.0.0",
- "p-retry": "4.6.2",
- "progress": "2.0.3",
- "rimraf": "3.0.2",
- "temp-dir": "2.0.0",
- "tempy": "1.0.1"
- },
- "scripts": {
- "build": "tsc -d",
- "prepublishOnly": "pnpm run build",
- "format": "prettier --write .",
- "lint": "eslint --cache --fix --ext .ts .",
- "lint-ci": "eslint --ext .ts .",
- "test": "jest",
- "precommit": "lint-staged"
- },
- "files": [
- "README.md",
- "dist"
- ],
- "lint-staged": {
- "*.ts": [
- "eslint",
- "prettier --write"
- ]
- }
-}
\ No newline at end of file
diff --git a/packages/fetch-engine/scripts/test-getLatestAlpha.ts b/packages/fetch-engine/scripts/test-getLatestAlpha.ts
deleted file mode 100644
index 54a6f2afc..000000000
--- a/packages/fetch-engine/scripts/test-getLatestAlpha.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { getLatestTag } from '../src'
-
-getLatestTag().then((x) => console.log(x))
diff --git a/packages/fetch-engine/scripts/test.ts b/packages/fetch-engine/scripts/test.ts
deleted file mode 100644
index cdce2fc70..000000000
--- a/packages/fetch-engine/scripts/test.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { download } from '../src'
-import path from 'path'
-
-download({
- binaries: {
- 'query-engine': path.join(__dirname, '../test'),
- 'migration-engine': path.join(__dirname, '../test'),
- },
- binaryTargets: [
- 'darwin',
- 'windows',
- 'debian-openssl-1.0.x',
- 'debian-openssl-1.1.x',
- 'debian-openssl-3.0.x',
- 'rhel-openssl-1.0.x',
- 'rhel-openssl-1.1.x',
- 'rhel-openssl-3.0.x',
- 'linux-musl',
- ],
- showProgress: true,
-})
diff --git a/packages/fetch-engine/src/__tests__/.gitignore b/packages/fetch-engine/src/__tests__/.gitignore
deleted file mode 100644
index 251e47270..000000000
--- a/packages/fetch-engine/src/__tests__/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*engine*
-prisma-fmt*
\ No newline at end of file
diff --git a/packages/fetch-engine/src/__tests__/__utils__/getFiles.ts b/packages/fetch-engine/src/__tests__/__utils__/getFiles.ts
deleted file mode 100644
index 869892dd7..000000000
--- a/packages/fetch-engine/src/__tests__/__utils__/getFiles.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import fs from 'fs'
-import path from 'path'
-export function getFiles(dir: string): Array<{ name: string; size: number }> {
- const files = fs.readdirSync(dir, 'utf8')
- return files.map((name) => {
- const size = fs.statSync(path.join(dir, name)).size
-
- return { name, size }
- })
-}
diff --git a/packages/fetch-engine/src/__tests__/all/.gitkeep b/packages/fetch-engine/src/__tests__/all/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/packages/fetch-engine/src/__tests__/corruption/.gitkeep b/packages/fetch-engine/src/__tests__/corruption/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/packages/fetch-engine/src/__tests__/download.test.ts b/packages/fetch-engine/src/__tests__/download.test.ts
deleted file mode 100644
index 30cb1492f..000000000
--- a/packages/fetch-engine/src/__tests__/download.test.ts
+++ /dev/null
@@ -1,563 +0,0 @@
-import { enginesVersion } from '@prisma/engines-version'
-import { getPlatform } from '@prisma/get-platform'
-import del from 'del'
-import fs from 'fs'
-import path from 'path'
-import stripAnsi from 'strip-ansi'
-import { cleanupCache } from '../cleanupCache'
-import {
- checkVersionCommand,
- download,
- getBinaryName,
- getVersion,
-} from '../download'
-import { getFiles } from './__utils__/getFiles'
-
-const CURRENT_BINARIES_HASH = enginesVersion
-
-const FIXED_BINARIES_HASH = 'a10084a836a379babc008c28b143dc1c7e644453'
-
-jest.setTimeout(120_000)
-
-describe('download', () => {
- beforeEach(async () => {
- // completely clean up the cache and keep nothing
- await cleanupCache(0)
- await del(__dirname + '/**/*engine*')
- await del(__dirname + '/**/prisma-fmt*')
- })
- afterEach(() => delete process.env.PRISMA_QUERY_ENGINE_BINARY)
- test('basic download', async () => {
- const platform = await getPlatform()
- const queryEnginePath = path.join(
- __dirname,
- getBinaryName('query-engine', platform),
- )
- const introspectionEnginePath = path.join(
- __dirname,
- getBinaryName('introspection-engine', platform),
- )
- const migrationEnginePath = path.join(
- __dirname,
- getBinaryName('migration-engine', platform),
- )
- const prismafmtPath = path.join(
- __dirname,
- getBinaryName('prisma-fmt', platform),
- )
-
- await download({
- binaries: {
- 'query-engine': __dirname,
- 'introspection-engine': __dirname,
- 'migration-engine': __dirname,
- 'prisma-fmt': __dirname,
- },
- version: FIXED_BINARIES_HASH,
- })
-
- expect(await getVersion(queryEnginePath)).toMatchInlineSnapshot(
- `"query-engine a10084a836a379babc008c28b143dc1c7e644453"`,
- )
- expect(await getVersion(introspectionEnginePath)).toMatchInlineSnapshot(
- `"introspection-core a10084a836a379babc008c28b143dc1c7e644453"`,
- )
- expect(await getVersion(migrationEnginePath)).toMatchInlineSnapshot(
- `"migration-engine-cli a10084a836a379babc008c28b143dc1c7e644453"`,
- )
- expect(await getVersion(prismafmtPath)).toMatchInlineSnapshot(
- `"prisma-fmt a10084a836a379babc008c28b143dc1c7e644453"`,
- )
- })
-
- test('basic download all current binaries', async () => {
- const platform = await getPlatform()
- const queryEnginePath = path.join(
- __dirname,
- getBinaryName('query-engine', platform),
- )
- const introspectionEnginePath = path.join(
- __dirname,
- getBinaryName('introspection-engine', platform),
- )
- const migrationEnginePath = path.join(
- __dirname,
- getBinaryName('migration-engine', platform),
- )
- const prismafmtPath = path.join(
- __dirname,
- getBinaryName('prisma-fmt', platform),
- )
-
- await download({
- binaries: {
- 'query-engine': __dirname,
- 'introspection-engine': __dirname,
- 'migration-engine': __dirname,
- 'prisma-fmt': __dirname,
- },
- binaryTargets: [
- 'darwin',
- 'darwin-arm64',
- 'debian-openssl-1.0.x',
- 'debian-openssl-1.1.x',
- 'debian-openssl-3.0.x',
- 'linux-arm64-openssl-1.0.x',
- 'linux-arm64-openssl-1.1.x',
- 'linux-arm64-openssl-3.0.x',
- 'rhel-openssl-1.0.x',
- 'rhel-openssl-1.1.x',
- 'rhel-openssl-3.0.x',
- 'windows',
- 'linux-musl',
- ],
- version: CURRENT_BINARIES_HASH,
- })
-
- // Check that all binaries git hash are the same
- expect(await getVersion(queryEnginePath)).toContain(CURRENT_BINARIES_HASH)
- expect(await getVersion(introspectionEnginePath)).toContain(
- CURRENT_BINARIES_HASH,
- )
- expect(await getVersion(migrationEnginePath)).toContain(
- CURRENT_BINARIES_HASH,
- )
- expect(await getVersion(prismafmtPath)).toContain(CURRENT_BINARIES_HASH)
- })
-
- test('auto heal corrupt binary', async () => {
- const platform = await getPlatform()
- const baseDir = path.join(__dirname, 'corruption')
- const targetPath = path.join(
- baseDir,
- getBinaryName('query-engine', platform),
- )
- if (fs.existsSync(targetPath)) {
- try {
- fs.unlinkSync(targetPath)
- } catch (e) {
- console.error(e)
- }
- }
-
- await download({
- binaries: {
- 'query-engine': baseDir,
- },
- version: FIXED_BINARIES_HASH,
- })
-
- fs.writeFileSync(targetPath, 'incorrect-binary')
-
- // please heal it
- await download({
- binaries: {
- 'query-engine': baseDir,
- },
- version: FIXED_BINARIES_HASH,
- })
-
- expect(fs.existsSync(targetPath)).toBe(true)
-
- expect(await checkVersionCommand(targetPath)).toBe(true)
- })
-
- test('handle non-existent binary target', async () => {
- await expect(
- download({
- binaries: {
- 'query-engine': __dirname,
- },
- version: FIXED_BINARIES_HASH,
- binaryTargets: ['darwin', 'marvin'] as any, // eslint-disable-line @typescript-eslint/no-explicit-any
- }),
- ).rejects.toThrowErrorMatchingInlineSnapshot(
- `"Unknown binaryTarget marvin and no custom engine files were provided"`,
- )
- })
-
- test('handle non-existent binary target with missing custom binaries', async () => {
- expect.assertions(1)
- process.env.PRISMA_QUERY_ENGINE_BINARY = '../query-engine'
- try {
- await download({
- binaries: {
- 'query-engine': __dirname,
- },
- version: FIXED_BINARIES_HASH,
- binaryTargets: ['darwin', 'marvin'] as any, // eslint-disable-line @typescript-eslint/no-explicit-any
- })
- } catch (err: any) {
- expect(stripAnsi(err.message)).toMatchInlineSnapshot(
- `"Env var PRISMA_QUERY_ENGINE_BINARY is provided but provided path ../query-engine can't be resolved."`,
- )
- }
- })
-
- test('handle non-existent binary target with custom binaries', async () => {
- const e = await download({
- binaries: {
- 'query-engine': __dirname,
- },
- })
- const dummyPath = e['query-engine']![Object.keys(e['query-engine']!)[0]]!
- const targetPath = path.join(
- __dirname,
- // @ts-ignore
- getBinaryName('query-engine', 'marvin'),
- )
- fs.copyFileSync(dummyPath, targetPath)
- process.env.PRISMA_QUERY_ENGINE_BINARY = targetPath
-
- const testResult = await download({
- binaries: {
- 'query-engine': path.join(__dirname, 'all'),
- },
- binaryTargets: ['marvin'] as any, // eslint-disable-line @typescript-eslint/no-explicit-any
- })
- expect(testResult['query-engine']!['marvin']).toEqual(targetPath)
- })
-
- test('download all binaries & cache them', async () => {
- const baseDir = path.join(__dirname, 'all')
-
- const before0 = Date.now()
- await download({
- binaries: {
- 'query-engine': baseDir,
- 'introspection-engine': baseDir,
- 'migration-engine': baseDir,
- 'prisma-fmt': baseDir,
- },
- binaryTargets: [
- 'darwin',
- 'darwin-arm64',
- 'debian-openssl-1.0.x',
- 'debian-openssl-1.1.x',
- 'debian-openssl-3.0.x',
- 'linux-arm64-openssl-1.0.x',
- 'linux-arm64-openssl-1.1.x',
- 'linux-arm64-openssl-3.0.x',
- 'rhel-openssl-1.0.x',
- 'rhel-openssl-1.1.x',
- 'rhel-openssl-3.0.x',
- 'windows',
- 'linux-musl',
- ],
- version: FIXED_BINARIES_HASH,
- })
- const after0 = Date.now()
- const timeInMsToDownloadAll = after0 - before0
- console.debug(
- `1 - No Cache: first time, download everything.
-It took ${timeInMsToDownloadAll}ms to execute download() for all binaryTargets.`,
- )
-
- const files = getFiles(baseDir)
- expect(files).toMatchInlineSnapshot(`
- Array [
- Object {
- "name": ".gitkeep",
- "size": 0,
- },
- Object {
- "name": "introspection-engine-darwin",
- "size": 24650392,
- },
- Object {
- "name": "introspection-engine-darwin-arm64",
- "size": 22623570,
- },
- Object {
- "name": "introspection-engine-debian-openssl-1.0.x",
- "size": 32763352,
- },
- Object {
- "name": "introspection-engine-debian-openssl-1.1.x",
- "size": 30046976,
- },
- Object {
- "name": "introspection-engine-debian-openssl-3.0.x",
- "size": 30042880,
- },
- Object {
- "name": "introspection-engine-linux-arm64-openssl-1.0.x",
- "size": 30636624,
- },
- Object {
- "name": "introspection-engine-linux-arm64-openssl-1.1.x",
- "size": 31171104,
- },
- Object {
- "name": "introspection-engine-linux-arm64-openssl-3.0.x",
- "size": 33032912,
- },
- Object {
- "name": "introspection-engine-linux-musl",
- "size": 31989408,
- },
- Object {
- "name": "introspection-engine-rhel-openssl-1.0.x",
- "size": 32733872,
- },
- Object {
- "name": "introspection-engine-rhel-openssl-1.1.x",
- "size": 30042240,
- },
- Object {
- "name": "introspection-engine-rhel-openssl-3.0.x",
- "size": 30041920,
- },
- Object {
- "name": "introspection-engine-windows.exe",
- "size": 21052928,
- },
- Object {
- "name": "migration-engine-darwin",
- "size": 27220536,
- },
- Object {
- "name": "migration-engine-darwin-arm64",
- "size": 24909118,
- },
- Object {
- "name": "migration-engine-debian-openssl-1.0.x",
- "size": 33050208,
- },
- Object {
- "name": "migration-engine-debian-openssl-1.1.x",
- "size": 33022816,
- },
- Object {
- "name": "migration-engine-debian-openssl-3.0.x",
- "size": 33022816,
- },
- Object {
- "name": "migration-engine-linux-arm64-openssl-1.0.x",
- "size": 33031376,
- },
- Object {
- "name": "migration-engine-linux-arm64-openssl-1.1.x",
- "size": 33776744,
- },
- Object {
- "name": "migration-engine-linux-arm64-openssl-3.0.x",
- "size": 35630536,
- },
- Object {
- "name": "migration-engine-linux-musl",
- "size": 34831568,
- },
- Object {
- "name": "migration-engine-rhel-openssl-1.0.x",
- "size": 33030584,
- },
- Object {
- "name": "migration-engine-rhel-openssl-1.1.x",
- "size": 33017984,
- },
- Object {
- "name": "migration-engine-rhel-openssl-3.0.x",
- "size": 33017464,
- },
- Object {
- "name": "migration-engine-windows.exe",
- "size": 23660544,
- },
- Object {
- "name": "prisma-fmt-darwin",
- "size": 4830720,
- },
- Object {
- "name": "prisma-fmt-darwin-arm64",
- "size": 4487528,
- },
- Object {
- "name": "prisma-fmt-debian-openssl-1.0.x",
- "size": 9253888,
- },
- Object {
- "name": "prisma-fmt-debian-openssl-1.1.x",
- "size": 9253880,
- },
- Object {
- "name": "prisma-fmt-debian-openssl-3.0.x",
- "size": 9253880,
- },
- Object {
- "name": "prisma-fmt-linux-arm64-openssl-1.0.x",
- "size": 9126736,
- },
- Object {
- "name": "prisma-fmt-linux-arm64-openssl-1.1.x",
- "size": 9126720,
- },
- Object {
- "name": "prisma-fmt-linux-arm64-openssl-3.0.x",
- "size": 9126720,
- },
- Object {
- "name": "prisma-fmt-linux-musl",
- "size": 8856840,
- },
- Object {
- "name": "prisma-fmt-rhel-openssl-1.0.x",
- "size": 9253704,
- },
- Object {
- "name": "prisma-fmt-rhel-openssl-1.1.x",
- "size": 9253688,
- },
- Object {
- "name": "prisma-fmt-rhel-openssl-3.0.x",
- "size": 9253688,
- },
- Object {
- "name": "prisma-fmt-windows.exe",
- "size": 3839488,
- },
- Object {
- "name": "query-engine-darwin",
- "size": 36528712,
- },
- Object {
- "name": "query-engine-darwin-arm64",
- "size": 33495274,
- },
- Object {
- "name": "query-engine-debian-openssl-1.0.x",
- "size": 44315040,
- },
- Object {
- "name": "query-engine-debian-openssl-1.1.x",
- "size": 44277288,
- },
- Object {
- "name": "query-engine-debian-openssl-3.0.x",
- "size": 44276592,
- },
- Object {
- "name": "query-engine-linux-arm64-openssl-1.0.x",
- "size": 43422656,
- },
- Object {
- "name": "query-engine-linux-arm64-openssl-1.1.x",
- "size": 44142632,
- },
- Object {
- "name": "query-engine-linux-arm64-openssl-3.0.x",
- "size": 45996360,
- },
- Object {
- "name": "query-engine-linux-musl",
- "size": 45587904,
- },
- Object {
- "name": "query-engine-rhel-openssl-1.0.x",
- "size": 44291688,
- },
- Object {
- "name": "query-engine-rhel-openssl-1.1.x",
- "size": 44272184,
- },
- Object {
- "name": "query-engine-rhel-openssl-3.0.x",
- "size": 44271560,
- },
- Object {
- "name": "query-engine-windows.exe",
- "size": 33288704,
- },
- ]
- `)
-
- //
- // Cache test 1
- // 1- We delete the artifacts locally but not from the cache folder
- // 2- We measure how much time it takes to call download
- //
-
- // Delete all artifacts
- await del(baseDir + '/*engine*')
- await del(baseDir + '/prisma-fmt*')
-
- const before = Date.now()
- await download({
- binaries: {
- 'query-engine': baseDir,
- 'introspection-engine': baseDir,
- 'migration-engine': baseDir,
- 'prisma-fmt': baseDir,
- },
- binaryTargets: [
- 'darwin',
- 'darwin-arm64',
- 'debian-openssl-1.0.x',
- 'debian-openssl-1.1.x',
- 'debian-openssl-3.0.x',
- 'linux-arm64-openssl-1.0.x',
- 'linux-arm64-openssl-1.1.x',
- 'linux-arm64-openssl-3.0.x',
- 'rhel-openssl-1.0.x',
- 'rhel-openssl-1.1.x',
- 'rhel-openssl-3.0.x',
- 'windows',
- 'linux-musl',
- ],
- version: FIXED_BINARIES_HASH,
- })
- const after = Date.now()
- const timeInMsToDownloadAllFromCache1 = after - before
- console.debug(
- `2 - With cache1: We deleted the engines locally but not from the cache folder.
-It took ${timeInMsToDownloadAllFromCache1}ms to execute download() for all binaryTargets.`,
- )
-
- //
- // Cache test 1
- // 1- We keep all artifacts from previous download
- // 2- We measure how much time it takes to call download
- //
- const before2 = Date.now()
- await download({
- binaries: {
- 'query-engine': baseDir,
- 'introspection-engine': baseDir,
- 'migration-engine': baseDir,
- 'prisma-fmt': baseDir,
- },
- binaryTargets: [
- 'darwin',
- 'darwin-arm64',
- 'debian-openssl-1.0.x',
- 'debian-openssl-1.1.x',
- 'debian-openssl-3.0.x',
- 'linux-arm64-openssl-1.0.x',
- 'linux-arm64-openssl-1.1.x',
- 'linux-arm64-openssl-3.0.x',
- 'rhel-openssl-1.0.x',
- 'rhel-openssl-1.1.x',
- 'rhel-openssl-3.0.x',
- 'windows',
- 'linux-musl',
- ],
- version: FIXED_BINARIES_HASH,
- })
- const after2 = Date.now()
- const timeInMsToDownloadAllFromCache2 = after2 - before2
- console.debug(
- `3 - With cache2: Engines were already present
-It took ${timeInMsToDownloadAllFromCache2}ms to execute download() for all binaryTargets.`,
- )
-
- // This is a rather high number to avoid flakiness in CI
- expect(timeInMsToDownloadAllFromCache1).toBeLessThan(40_000)
- expect(timeInMsToDownloadAllFromCache2).toBeLessThan(40_000)
-
- // Using cache should be faster
- expect(timeInMsToDownloadAllFromCache1).toBeLessThan(timeInMsToDownloadAll)
- expect(timeInMsToDownloadAllFromCache2).toBeLessThan(
- timeInMsToDownloadAllFromCache1,
- )
- })
-})
diff --git a/packages/fetch-engine/src/__tests__/node-api.test.ts b/packages/fetch-engine/src/__tests__/node-api.test.ts
deleted file mode 100644
index c779d6990..000000000
--- a/packages/fetch-engine/src/__tests__/node-api.test.ts
+++ /dev/null
@@ -1,111 +0,0 @@
-import { enginesVersion } from '@prisma/engines-version'
-import del from 'del'
-import path from 'path'
-import { cleanupCache } from '../cleanupCache'
-import { download } from '../download'
-import { getFiles } from './__utils__/getFiles'
-
-const CURRENT_BINARIES_HASH = enginesVersion
-
-jest.setTimeout(120_000)
-
-describe('download', () => {
- beforeEach(async () => {
- // completely clean up the cache and keep nothing
- await cleanupCache(0)
- await del(__dirname + '/**/*engine*')
- await del(__dirname + '/**/prisma-fmt*')
- })
-
- afterEach(() => delete process.env.PRISMA_QUERY_ENGINE_BINARY)
-
- test('download all node-api libraries & cache them', async () => {
- // Channel and Version are currently hardcoded
- const baseDir = path.join(__dirname, 'node-api')
-
- await download({
- binaries: {
- 'libquery-engine': baseDir,
- },
- binaryTargets: [
- 'darwin',
- 'darwin-arm64',
- 'debian-openssl-1.0.x',
- 'debian-openssl-1.1.x',
- 'debian-openssl-3.0.x',
- 'linux-arm64-openssl-1.0.x',
- 'linux-arm64-openssl-1.1.x',
- 'linux-arm64-openssl-3.0.x',
- 'rhel-openssl-1.0.x',
- 'rhel-openssl-1.1.x',
- 'rhel-openssl-3.0.x',
- 'windows',
- 'linux-musl',
- ],
- version: CURRENT_BINARIES_HASH,
- })
-
- const files = getFiles(baseDir).map((f) => ({ ...f, size: 'X' }))
-
- expect(files).toMatchInlineSnapshot(`
-Array [
- Object {
- "name": ".gitkeep",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-darwin-arm64.dylib.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-darwin.dylib.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-debian-openssl-1.0.x.so.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-debian-openssl-1.1.x.so.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-debian-openssl-3.0.x.so.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-linux-arm64-openssl-1.0.x.so.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-linux-arm64-openssl-1.1.x.so.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-linux-arm64-openssl-3.0.x.so.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-linux-musl.so.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-rhel-openssl-1.0.x.so.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-rhel-openssl-1.1.x.so.node",
- "size": "X",
- },
- Object {
- "name": "libquery_engine-rhel-openssl-3.0.x.so.node",
- "size": "X",
- },
- Object {
- "name": "query_engine-windows.dll.node",
- "size": "X",
- },
-]
-`)
- })
-})
diff --git a/packages/fetch-engine/src/__tests__/node-api/.gitkeep b/packages/fetch-engine/src/__tests__/node-api/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/packages/fetch-engine/src/chmod.ts b/packages/fetch-engine/src/chmod.ts
deleted file mode 100644
index d9c54b80c..000000000
--- a/packages/fetch-engine/src/chmod.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as fs from 'fs'
-
-export default function (file): void {
- const s = fs.statSync(file)
- const newMode = s.mode | 64 | 8 | 1
- if (s.mode === newMode) return
- const base8 = newMode.toString(8).slice(-3)
- fs.chmodSync(file, base8)
-}
diff --git a/packages/fetch-engine/src/cleanupCache.ts b/packages/fetch-engine/src/cleanupCache.ts
deleted file mode 100644
index 3c8d319bd..000000000
--- a/packages/fetch-engine/src/cleanupCache.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import fs from 'fs'
-import path from 'path'
-import { getRootCacheDir } from './util'
-import rimraf from 'rimraf'
-import { promisify } from 'util'
-import pMap from 'p-map'
-
-import Debug from '@prisma/debug'
-const debug = Debug('cleanupCache')
-const del = promisify(rimraf)
-const readdir = promisify(fs.readdir)
-const stat = promisify(fs.stat)
-
-// TODO: why not have a n = 2 to have a smaller cache?
-export async function cleanupCache(n = 5): Promise {
- try {
- const rootCacheDir = await getRootCacheDir()
- if (!rootCacheDir) {
- debug('no rootCacheDir found')
- return
- }
- const channel = 'master'
- const cacheDir = path.join(rootCacheDir, channel)
- const dirs = await readdir(cacheDir)
- const dirsWithMeta = await Promise.all(
- dirs.map(async (dirName) => {
- const dir = path.join(cacheDir, dirName)
- const statResult = await stat(dir)
-
- return {
- dir,
- created: statResult.birthtime,
- }
- }),
- )
- dirsWithMeta.sort((a, b) => (a.created < b.created ? 1 : -1))
- const dirsToRemove = dirsWithMeta.slice(n)
- await pMap(dirsToRemove, (dir) => del(dir.dir), { concurrency: 20 })
- } catch (e) {
- // fail silently
- }
-}
diff --git a/packages/fetch-engine/src/download.ts b/packages/fetch-engine/src/download.ts
deleted file mode 100644
index 956f3c578..000000000
--- a/packages/fetch-engine/src/download.ts
+++ /dev/null
@@ -1,568 +0,0 @@
-import Debug from '@prisma/debug'
-import {
- getNodeAPIName,
- getos,
- getPlatform,
- isNodeAPISupported,
- Platform,
- platforms,
-} from '@prisma/get-platform'
-import chalk from 'chalk'
-import execa from 'execa'
-import fs from 'fs'
-import makeDir from 'make-dir'
-import pFilter from 'p-filter'
-import path from 'path'
-import tempDir from 'temp-dir'
-import { promisify } from 'util'
-import plusxSync from './chmod'
-import { cleanupCache } from './cleanupCache'
-import { downloadZip } from './downloadZip'
-import { flatMap } from './flatMap'
-import { getHash } from './getHash'
-import { getLatestTag } from './getLatestTag'
-import { getBar } from './log'
-import { getCacheDir, getDownloadUrl } from './util'
-
-const debug = Debug('prisma:download')
-const writeFile = promisify(fs.writeFile)
-const exists = promisify(fs.exists)
-const readFile = promisify(fs.readFile)
-const copyFile = promisify(fs.copyFile)
-const utimes = promisify(fs.utimes)
-
-const channel = 'master'
-export enum BinaryType {
- queryEngine = 'query-engine',
- libqueryEngine = 'libquery-engine',
- migrationEngine = 'migration-engine',
- introspectionEngine = 'introspection-engine',
- prismaFmt = 'prisma-fmt',
-}
-export type BinaryDownloadConfiguration = {
- [binary in BinaryType]?: string // that is a path to the binary download location
-}
-export type BinaryPaths = {
- [binary in BinaryType]?: { [binaryTarget in Platform]: string } // key: target, value: path
-}
-export interface DownloadOptions {
- binaries: BinaryDownloadConfiguration
- binaryTargets?: Platform[]
- showProgress?: boolean
- progressCb?: (progress: number) => void
- version?: string
- skipDownload?: boolean
- failSilent?: boolean
- ignoreCache?: boolean
- printVersion?: boolean
-}
-
-const BINARY_TO_ENV_VAR = {
- [BinaryType.migrationEngine]: 'PRISMA_MIGRATION_ENGINE_BINARY',
- [BinaryType.queryEngine]: 'PRISMA_QUERY_ENGINE_BINARY',
- [BinaryType.libqueryEngine]: 'PRISMA_QUERY_ENGINE_LIBRARY',
- [BinaryType.introspectionEngine]: 'PRISMA_INTROSPECTION_ENGINE_BINARY',
- [BinaryType.prismaFmt]: 'PRISMA_FMT_BINARY',
-}
-
-type BinaryDownloadJob = {
- binaryName: string
- targetFolder: string
- binaryTarget: Platform
- fileName: string
- targetFilePath: string
- envVarPath: string | null
-}
-
-export async function download(options: DownloadOptions): Promise {
- // get platform
- const platform = await getPlatform()
- const os = await getos()
-
- if (os.distro && ['nixos'].includes(os.distro)) {
- console.error(
- `${chalk.yellow('Warning')} Precompiled engine files are not available for ${
- os.distro
- }.`,
- )
- } else if (
- ['freebsd11', 'freebsd12', 'freebsd13', 'openbsd', 'netbsd'].includes(
- platform,
- )
- ) {
- console.error(
- `${chalk.yellow(
- 'Warning',
- )} Precompiled engine files are not available for ${platform}. Read more about building your own engines at https://pris.ly/d/build-engines`,
- )
- } else if (BinaryType.libqueryEngine in options.binaries) {
- await isNodeAPISupported()
- }
-
- // no need to do anything, if there are no binaries
- if (!options.binaries || Object.values(options.binaries).length === 0) {
- return {} // we don't download anything if nothing is provided
- }
-
- // merge options
- const opts = {
- ...options,
- binaryTargets: options.binaryTargets ?? [platform],
- version: options.version ?? 'latest',
- binaries: mapKeys(options.binaries, (key) =>
- engineTypeToBinaryType(key, platform),
- ), // just necessary to support both camelCase and hyphen-case
- }
-
- // creates a matrix of binaries x binary targets
- const binaryJobs = flatMap(
- Object.entries(opts.binaries),
- ([binaryName, targetFolder]: [string, string]) =>
- opts.binaryTargets.map((binaryTarget) => {
- const fileName =
- binaryName === BinaryType.libqueryEngine
- ? getNodeAPIName(binaryTarget, 'fs')
- : getBinaryName(binaryName, binaryTarget)
- const targetFilePath = path.join(targetFolder, fileName)
- return {
- binaryName,
- targetFolder,
- binaryTarget,
- fileName,
- targetFilePath,
- envVarPath: getBinaryEnvVarPath(binaryName),
- }
- }),
- )
-
- if (process.env.BINARY_DOWNLOAD_VERSION) {
- opts.version = process.env.BINARY_DOWNLOAD_VERSION
- }
-
- // TODO: look to remove latest, because we always pass a version
- if (opts.version === 'latest') {
- opts.version = await getLatestTag()
- }
-
- if (opts.printVersion) {
- console.log(`version: ${opts.version}`)
- }
-
- // filter out files, which don't yet exist or have to be created
- const binariesToDownload = await pFilter(binaryJobs, async (job) => {
- const needsToBeDownloaded = await binaryNeedsToBeDownloaded(
- job,
- platform,
- opts.version,
- opts.failSilent,
- )
- const isSupported = platforms.includes(job.binaryTarget as Platform)
- const shouldDownload =
- isSupported &&
- !job.envVarPath && // this is for custom binaries
- (opts.ignoreCache || needsToBeDownloaded) // TODO: do we need ignoreCache?
- if (needsToBeDownloaded && !isSupported) {
- throw new Error(
- `Unknown binaryTarget ${job.binaryTarget} and no custom engine files were provided`,
- )
- }
- return shouldDownload
- })
-
- if (binariesToDownload.length > 0) {
- const cleanupPromise = cleanupCache() // already start cleaning up while we download
-
- let finishBar: undefined | (() => void)
- let setProgress:
- | undefined
- | ((sourcePath: string) => (progress: number) => void)
-
- if (opts.showProgress) {
- const collectiveBar = getCollectiveBar(opts)
- finishBar = collectiveBar.finishBar
- setProgress = collectiveBar.setProgress
- }
-
- await Promise.all(
- binariesToDownload.map((job) =>
- downloadBinary({
- ...job,
- version: opts.version,
- failSilent: opts.failSilent,
- progressCb: setProgress ? setProgress(job.targetFilePath) : undefined,
- }),
- ),
- )
-
- await cleanupPromise // make sure, that cleanup finished
- if (finishBar) {
- finishBar()
- }
- }
-
- const binaryPaths = binaryJobsToBinaryPaths(binaryJobs)
- const dir = eval('__dirname')
-
- // this is necessary for pkg
- if (dir.startsWith('/snapshot/')) {
- for (const engineType in binaryPaths) {
- const binaryTargets = binaryPaths[engineType]
- for (const binaryTarget in binaryTargets) {
- const binaryPath = binaryTargets[binaryTarget]
- binaryTargets[binaryTarget] = await maybeCopyToTmp(binaryPath)
- }
- }
- }
-
- return binaryPaths
-}
-
-function getCollectiveBar(options: DownloadOptions): {
- finishBar: () => void
- setProgress: (sourcePath: string) => (progress: number) => void
-} {
- const hasNodeAPI = 'libquery-engine' in options.binaries
- const bar = getBar(
- `Downloading Prisma engines${
- hasNodeAPI ? ' for Node-API' : ''
- } for ${options.binaryTargets?.map((p) => chalk.bold(p)).join(' and ')}`,
- )
-
- const progressMap: { [key: string]: number } = {}
- // Object.values is faster than Object.keys
- const numDownloads =
- Object.values(options.binaries).length *
- Object.values(options?.binaryTargets ?? []).length
- const setProgress =
- (sourcePath: string) =>
- (progress): void => {
- progressMap[sourcePath] = progress
- const progressValues = Object.values(progressMap)
- const totalProgress =
- progressValues.reduce((acc, curr) => {
- return acc + curr
- }, 0) / numDownloads
- if (options.progressCb) {
- options.progressCb(totalProgress)
- }
- if (bar) {
- bar.update(totalProgress)
- }
- }
-
- return {
- setProgress,
- finishBar: (): void => {
- bar.update(1)
- bar.terminate()
- },
- }
-}
-
-function binaryJobsToBinaryPaths(jobs: BinaryDownloadJob[]): BinaryPaths {
- return jobs.reduce((acc, job) => {
- if (!acc[job.binaryName]) {
- acc[job.binaryName] = {}
- }
-
- // if an env var path has been provided, prefer that one
- acc[job.binaryName][job.binaryTarget] = job.envVarPath || job.targetFilePath
-
- return acc
- }, {} as BinaryPaths)
-}
-
-async function binaryNeedsToBeDownloaded(
- job: BinaryDownloadJob,
- nativePlatform: string,
- version: string,
- failSilent?: boolean,
-): Promise {
- // If there is an ENV Override and the file exists then it does not need to be downloaded
- if (job.envVarPath && fs.existsSync(job.envVarPath)) {
- return false
- }
- // 1. Check if file exists
- const targetExists = await exists(job.targetFilePath)
- // 2. If exists, check, if cached file exists and is up to date and has same hash as file.
- // If not, copy cached file over
- const cachedFile = await getCachedBinaryPath({
- ...job,
- version,
- failSilent,
- })
-
- if (cachedFile) {
- const sha256FilePath = cachedFile + '.sha256'
- if (await exists(sha256FilePath)) {
- const sha256File = await readFile(sha256FilePath, 'utf-8')
- const sha256Cache = await getHash(cachedFile)
- if (sha256File === sha256Cache) {
- if (!targetExists) {
- debug(`copying ${cachedFile} to ${job.targetFilePath}`)
-
- // TODO Remove when https://github.com/docker/for-linux/issues/1015 is fixed
- // Workaround for https://github.com/prisma/prisma/issues/7037
- await utimes(cachedFile, new Date(), new Date())
-
- await copyFile(cachedFile, job.targetFilePath)
- }
- const targetSha256 = await getHash(job.targetFilePath)
- if (sha256File !== targetSha256) {
- debug(
- `overwriting ${job.targetFilePath} with ${cachedFile} as hashes do not match`,
- )
- await copyFile(cachedFile, job.targetFilePath)
- }
- return false
- } else {
- return true
- }
- } else {
- return true
- }
- }
-
- // If there is no cache and the file doesn't exist, we for sure need to download it
- if (!targetExists) {
- debug(`file ${job.targetFilePath} does not exist and must be downloaded`)
- return true
- }
-
- // 3. If same platform, always check --version
- if (
- job.binaryTarget === nativePlatform &&
- job.binaryName !== BinaryType.libqueryEngine
- ) {
- const works = await checkVersionCommand(job.targetFilePath)
- return !works
- } // TODO: this is probably not useful anymore
-
- return false
-}
-
-export async function getVersion(enginePath: string): Promise {
- const result = await execa(enginePath, ['--version'])
-
- return result.stdout
-}
-
-export async function checkVersionCommand(
- enginePath: string,
-): Promise {
- try {
- const version = await getVersion(enginePath)
-
- return version.length > 0
- } catch (e) {
- return false
- }
-}
-
-export function getBinaryName(binaryName: string, platform: Platform): string {
- if (binaryName === BinaryType.libqueryEngine) {
- return `${getNodeAPIName(platform, 'url')}`
- }
- const extension = platform === 'windows' ? '.exe' : ''
- return `${binaryName}-${platform}${extension}`
-}
-
-type GetCachedBinaryOptions = BinaryDownloadJob & {
- version: string
- failSilent?: boolean
-}
-
-async function getCachedBinaryPath({
- version,
- binaryTarget,
- binaryName,
-}: GetCachedBinaryOptions): Promise {
- const cacheDir = await getCacheDir(channel, version, binaryTarget)
- if (!cacheDir) {
- return null
- }
-
- const cachedTargetPath = path.join(cacheDir, binaryName)
-
- if (!fs.existsSync(cachedTargetPath)) {
- return null
- }
-
- // All versions not called 'latest' are unique
- // only latest needs more checks
- if (version !== 'latest') {
- return cachedTargetPath
- }
-
- if (await exists(cachedTargetPath)) {
- return cachedTargetPath
- }
-
- return null
-}
-
-export function getBinaryEnvVarPath(binaryName: string): string | null {
- const envVar = BINARY_TO_ENV_VAR[binaryName]
- if (envVar && process.env[envVar]) {
- const envVarPath = path.resolve(
- process.cwd(),
- process.env[envVar] as string,
- )
- if (!fs.existsSync(envVarPath)) {
- throw new Error(
- `Env var ${chalk.bold(
- envVar,
- )} is provided but provided path ${chalk.underline(
- process.env[envVar],
- )} can't be resolved.`,
- )
- }
- debug(
- `Using env var ${chalk.bold(envVar)} for binary ${chalk.bold(
- binaryName,
- )}, which points to ${chalk.underline(process.env[envVar])}`,
- )
- return envVarPath
- }
-
- return null
-}
-
-type DownloadBinaryOptions = BinaryDownloadJob & {
- version: string
- progressCb?: (progress: number) => void
- failSilent?: boolean
-}
-
-async function downloadBinary(options: DownloadBinaryOptions): Promise {
- const { version, progressCb, targetFilePath, binaryTarget, binaryName } =
- options
- const downloadUrl = getDownloadUrl(
- 'all_commits',
- version,
- binaryTarget,
- binaryName,
- )
-
- const targetDir = path.dirname(targetFilePath)
-
- try {
- fs.accessSync(targetDir, fs.constants.W_OK)
- await makeDir(targetDir)
- } catch (e) {
- if (options.failSilent || (e as NodeJS.ErrnoException).code !== 'EACCES') {
- return
- } else {
- throw new Error(
- `Can't write to ${targetDir} please make sure you install "prisma" with the right permissions.`,
- )
- }
- }
-
- debug(`Downloading ${downloadUrl} to ${targetFilePath}`)
-
- if (progressCb) {
- progressCb(0)
- }
-
- const { sha256, zippedSha256 } = await downloadZip(
- downloadUrl,
- targetFilePath,
- progressCb,
- )
- if (progressCb) {
- progressCb(1)
- }
-
- if (process.platform !== 'win32') {
- plusxSync(targetFilePath)
- }
-
- // Cache result
- await saveFileToCache(options, version, sha256, zippedSha256)
-}
-
-async function saveFileToCache(
- job: BinaryDownloadJob,
- version: string,
- sha256: string,
- zippedSha256: string,
-): Promise {
- // always fail silent, as the cache is optional
- const cacheDir = await getCacheDir(channel, version, job.binaryTarget)
- if (!cacheDir) {
- return
- }
-
- const cachedTargetPath = path.join(cacheDir, job.binaryName)
- const cachedSha256Path = path.join(cacheDir, job.binaryName + '.sha256')
- const cachedSha256ZippedPath = path.join(
- cacheDir,
- job.binaryName + '.gz.sha256',
- )
-
- try {
- await copyFile(job.targetFilePath, cachedTargetPath)
- await writeFile(cachedSha256Path, sha256)
- await writeFile(cachedSha256ZippedPath, zippedSha256)
- } catch (e) {
- debug(e)
- // let this fail silently - the CI system may have reached the file size limit
- }
-}
-
-function engineTypeToBinaryType(
- engineType: string,
- binaryTarget: string,
-): string {
- if (BinaryType[engineType]) {
- return BinaryType[engineType]
- }
- if (engineType === 'native') {
- return binaryTarget
- }
-
- return engineType
-}
-
-function mapKeys(
- obj: T,
- mapper: (key: K) => string,
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
-) {
- return Object.entries(obj).reduce((acc, [key, value]) => {
- acc[mapper(key as K)] = value
- return acc
- }, {} as Record)
-}
-
-export async function maybeCopyToTmp(file: string): Promise {
- // in this case, we are in a "pkg" context with a virtual fs
- // to make this work, we need to copy the binary to /tmp and execute it from there
-
- const dir = eval('__dirname')
- if (dir.startsWith('/snapshot/')) {
- const targetDir = path.join(tempDir, 'prisma-binaries')
- await makeDir(targetDir)
- const target = path.join(targetDir, path.basename(file))
- const data = await readFile(file)
- await writeFile(target, data)
- // We have to read and write until https://github.com/zeit/pkg/issues/639
- // is resolved
- // await copyFile(file, target)
- plusX(target)
- return target
- }
-
- return file
-}
-
-export function plusX(file): void {
- const s = fs.statSync(file)
- const newMode = s.mode | 64 | 8 | 1
- if (s.mode === newMode) {
- return
- }
- const base8 = newMode.toString(8).slice(-3)
- fs.chmodSync(file, base8)
-}
diff --git a/packages/fetch-engine/src/downloadZip.ts b/packages/fetch-engine/src/downloadZip.ts
deleted file mode 100644
index e3dc8c390..000000000
--- a/packages/fetch-engine/src/downloadZip.ts
+++ /dev/null
@@ -1,131 +0,0 @@
-import zlib from 'zlib'
-import retry from 'p-retry'
-import fetch from 'node-fetch'
-import fs from 'fs'
-import { getProxyAgent } from './getProxyAgent'
-import tempy from 'tempy'
-import path from 'path'
-import Debug from '@prisma/debug'
-import hasha from 'hasha'
-import { promisify } from 'util'
-import rimraf from 'rimraf'
-const debug = Debug('prisma:downloadZip')
-const del = promisify(rimraf)
-
-export type DownloadResult = {
- lastModified: string
- sha256: string
- zippedSha256: string
-}
-
-async function fetchSha256(
- url: string,
-): Promise<{ sha256: string; zippedSha256: string }> {
- // We get a string like this:
- // "3c82ee6cd9fedaec18a5e7cd3fc41f8c6b3dd32575dc13443d96aab4bd018411 query-engine.gz\n"
- // So we split it by whitespace and just get the hash, as that's what we're interested in
- const [zippedSha256, sha256] = [
- (
- await fetch(`${url}.sha256`, {
- agent: getProxyAgent(url) as any,
- }).then((res) => res.text())
- ).split(/\s+/)[0],
- (
- await fetch(`${url.slice(0, url.length - 3)}.sha256`, {
- agent: getProxyAgent(url.slice(0, url.length - 3)) as any,
- }).then((res) => res.text())
- ).split(/\s+/)[0],
- ]
-
- return { sha256, zippedSha256 }
-}
-
-export async function downloadZip(
- url: string,
- target: string,
- progressCb?: (progress: number) => void,
-): Promise {
- const tmpDir = tempy.directory()
- const partial = path.join(tmpDir, 'partial')
- const { sha256, zippedSha256 } = await fetchSha256(url)
- const result = await retry(
- async () => {
- try {
- const resp = await fetch(url, {
- compress: false,
- agent: getProxyAgent(url) as any,
- })
-
- if (resp.status !== 200) {
- throw new Error(resp.statusText + ' ' + url)
- }
-
- const lastModified = resp.headers.get('last-modified')!
- const size = parseFloat(resp.headers.get('content-length') as string)
- const ws = fs.createWriteStream(partial)
-
- // eslint-disable-next-line @typescript-eslint/no-misused-promises, no-async-promise-executor
- return await new Promise(async (resolve, reject) => {
- let bytesRead = 0
-
- resp.body.on('error', reject).on('data', (chunk) => {
- bytesRead += chunk.length
-
- if (size && progressCb) {
- progressCb(bytesRead / size)
- }
- })
-
- const gunzip = zlib.createGunzip()
-
- gunzip.on('error', reject)
-
- const zipStream = resp.body.pipe(gunzip)
- const zippedHashPromise = hasha.fromStream(resp.body, {
- algorithm: 'sha256',
- })
- const hashPromise = hasha.fromStream(zipStream, {
- algorithm: 'sha256',
- })
- zipStream.pipe(ws)
-
- ws.on('error', reject).on('close', () => {
- resolve({ lastModified, sha256, zippedSha256 })
- })
-
- const hash = await hashPromise
- const zippedHash = await zippedHashPromise
-
- if (zippedHash !== zippedSha256) {
- throw new Error(
- `sha256 of ${url} (zipped) should be ${zippedSha256} but is ${zippedHash}`,
- )
- }
-
- if (hash !== sha256) {
- throw new Error(
- `sha256 of ${url} (uzipped) should be ${sha256} but is ${hash}`,
- )
- }
- })
- } finally {
- //
- }
- },
- {
- retries: 2,
- onFailedAttempt: (err) => debug(err),
- },
- )
- fs.copyFileSync(partial, target)
-
- // it's ok if the unlink fails
- try {
- await del(partial)
- await del(tmpDir)
- } catch (e) {
- debug(e)
- }
-
- return result as DownloadResult
-}
diff --git a/packages/fetch-engine/src/flatMap.ts b/packages/fetch-engine/src/flatMap.ts
deleted file mode 100644
index 91671cb9e..000000000
--- a/packages/fetch-engine/src/flatMap.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-function flatten(array: T[]): [] {
- // @ts-ignore
- return Array.prototype.concat.apply([], array)
-}
-
-export function flatMap(
- array: T[],
- callbackFn: (value: T, index: number, array: T[]) => U[],
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- thisArg?: any,
-): U[] {
- return flatten(array.map(callbackFn, thisArg))
-}
diff --git a/packages/fetch-engine/src/getHash.ts b/packages/fetch-engine/src/getHash.ts
deleted file mode 100644
index b6f60e5d8..000000000
--- a/packages/fetch-engine/src/getHash.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import crypto from 'crypto'
-import fs from 'fs'
-
-export function getHash(filePath: string): Promise {
- const hash = crypto.createHash('sha256')
- const input = fs.createReadStream(filePath)
- return new Promise((resolve) => {
- input.on('readable', () => {
- const data = input.read()
- if (data) {
- hash.update(data)
- } else {
- resolve(hash.digest('hex'))
- }
- })
- })
-}
diff --git a/packages/fetch-engine/src/getLatestTag.ts b/packages/fetch-engine/src/getLatestTag.ts
deleted file mode 100644
index 99060dab3..000000000
--- a/packages/fetch-engine/src/getLatestTag.ts
+++ /dev/null
@@ -1,220 +0,0 @@
-import { platforms } from '@prisma/get-platform'
-import chalk from 'chalk'
-import execa from 'execa'
-import fetch from 'node-fetch'
-import pMap from 'p-map'
-import { getProxyAgent } from './getProxyAgent'
-import { getDownloadUrl } from './util'
-
-export async function getLatestTag(): Promise {
- let branch = await getBranch()
- if (
- branch !== 'main' &&
- !isPatchBranch(branch) &&
- !branch.startsWith('integration/')
- ) {
- branch = 'main'
- }
-
- // remove the "integration/" part
- branch = branch.replace(/^integration\//, '')
- // console.log({ branch }, 'after replace')
-
- // first try to get the branch as it is
- // if it doesn't have an equivalent in the engines repo
- // default back to main
- let commits = await getCommits(branch)
- if (
- (!commits || !Array.isArray(commits)) &&
- branch !== 'main' &&
- !isPatchBranch(branch)
- ) {
- console.log(
- `Overwriting branch "${branch}" with "main" as it's not a branch we have binaries for`,
- )
- branch = 'main'
- commits = await getCommits(branch)
- }
-
- if (!Array.isArray(commits)) {
- console.error(commits)
- throw new Error(
- `Could not fetch commits from github: ${JSON.stringify(
- commits,
- null,
- 2,
- )}`,
- )
- }
-
- return getFirstFinishedCommit(branch, commits)
-}
-
-export function getAllUrls(branch: string, commit: string): string[] {
- const urls: string[] = []
-
- // these are the platforms we know exists but we don't compile for.
- // we need to exclude them here so that we don't try to download binaries for these.
- // They are known because we don't want to block custom binary usage for them.
- const excludedPlatforms = [
- 'freebsd',
- 'arm',
- 'linux-nixos',
- 'linux-arm-openssl-1.1.x',
- 'linux-arm-openssl-1.0.x',
- 'linux-arm-openssl-3.0.x',
- 'openbsd',
- 'netbsd',
- 'freebsd11',
- 'freebsd12',
- 'freebsd13',
- ]
- const relevantPlatforms = platforms.filter(
- (p) => !excludedPlatforms.includes(p),
- )
- for (const platform of relevantPlatforms) {
- for (const engine of [
- 'query-engine',
- 'introspection-engine',
- 'migration-engine',
- 'prisma-fmt',
- ]) {
- for (const extension of [
- '.gz',
- '.gz.sha256',
- '.gz.sig',
- '.sig',
- '.sha256',
- ]) {
- const downloadUrl = getDownloadUrl(
- branch,
- commit,
- platform,
- engine,
- extension,
- )
- urls.push(downloadUrl)
- }
- }
- }
-
- return urls
-}
-
-async function getFirstFinishedCommit(
- branch: string,
- commits: string[],
-): Promise {
- for (const commit of commits) {
- const urls = getAllUrls(branch, commit)
- // TODO: potential to speed things up
- // We don't always need to wait for the last commit
- const exist = await pMap(urls, urlExists, { concurrency: 10 })
- const hasMissing = exist.some((e) => !e)
-
- if (!hasMissing) {
- return commit
- } else {
- const missing = urls.filter((_, i) => !exist[i])
- // if all are missing, we don't have to talk about it
- // it might just be a broken commit or just still building
- if (missing.length !== urls.length) {
- console.log(
- `${chalk.blueBright(
- 'info',
- )} The engine commit ${commit} is not yet done. We're skipping it as we're in dev. Missing urls: ${
- missing.length
- }`,
- )
- }
- }
- }
-}
-
-export async function urlExists(url) {
- try {
- const res = await fetch(url, {
- method: 'HEAD',
- agent: getProxyAgent(url) as any,
- })
-
- const headers = fromEntries(res.headers.entries())
- if (res.status > 200) {
- // console.error(res, headers)
- }
- if (parseInt(headers['content-length']) > 0) {
- return res.status < 300
- }
- } catch (e) {
- //
- // console.error(e)
- }
- return false
-}
-
-function fromEntries(
- entries: IterableIterator<[string, T]>,
-): Record {
- const result = {}
- for (const [key, value] of entries) {
- result[key] = value
- }
- return result
-}
-
-async function getBranch() {
- if (process.env.NODE_ENV !== 'test') {
- if (process.env.PATCH_BRANCH) {
- return process.env.PATCH_BRANCH
- }
- if (process.env.BUILDKITE_BRANCH) {
- return process.env.BUILDKITE_BRANCH
- }
- if (process.env.GITHUB_CONTEXT) {
- const context = JSON.parse(process.env.GITHUB_CONTEXT)
- return context.head_ref
- }
- }
-
- // Need to be handled
- // for example it's used in https://github.com/prisma/binary-tester and the environment
- // is not a git repository so it fails
- try {
- const result = await execa.command('git rev-parse --abbrev-ref HEAD', {
- shell: true,
- stdio: 'pipe',
- })
- return result.stdout
- } catch (e) {
- console.error(e)
- }
-
- return
-}
-
-// TODO: Adjust this for stable release
-function isPatchBranch(version: string): boolean {
- return /^2\.(\d+)\.x/.test(version)
-}
-
-async function getCommits(branch: string): Promise {
- // A simple cache in front of GitHub API that was implemented to avoid a rate-limit error in the past
- // See https://dash.cloudflare.com/c72786e48b88e7492830a60584c2ac13/workers/services/view/github-cache/production
- const url = `https://github-cache.prisma.workers.dev/repos/prisma/prisma-engines/commits?sha=${branch}`
- const result = await fetch(url, {
- agent: getProxyAgent(url) as any,
- // Headers are not used by the worker
- // headers: {
- // Authorization: process.env.GITHUB_TOKEN
- // ? `token ${process.env.GITHUB_TOKEN}`
- // : undefined,
- // },
- } as any).then((res) => res.json())
-
- if (!Array.isArray(result)) {
- return result
- }
-
- const commits = result.map((r) => r.sha)
- return commits
-}
diff --git a/packages/fetch-engine/src/getProxyAgent.ts b/packages/fetch-engine/src/getProxyAgent.ts
deleted file mode 100644
index 7761f1f41..000000000
--- a/packages/fetch-engine/src/getProxyAgent.ts
+++ /dev/null
@@ -1,106 +0,0 @@
-import HttpsProxyAgent from 'https-proxy-agent'
-import HttpProxyAgent from 'http-proxy-agent'
-import Url from 'url'
-;('use strict')
-// code from https://raw.githubusercontent.com/request/request/5ba8eb44da7cd639ca21070ea9be20d611b85f66/lib/getProxyFromURI.js
-
-function formatHostname(hostname: string): string {
- // canonicalize the hostname, so that 'oogle.com' won't match 'google.com'
- return hostname.replace(/^\.*/, '.').toLowerCase()
-}
-
-function parseNoProxyZone(zone: string): {
- hostname: string
- port: string
- hasPort: boolean
-} {
- zone = zone.trim().toLowerCase()
-
- const zoneParts = zone.split(':', 2)
- const zoneHost = formatHostname(zoneParts[0])
- const zonePort = zoneParts[1]
- const hasPort = zone.includes(':')
-
- return { hostname: zoneHost, port: zonePort, hasPort: hasPort }
-}
-
-function uriInNoProxy(uri, noProxy): boolean {
- const port = uri.port || (uri.protocol === 'https:' ? '443' : '80')
- const hostname = formatHostname(uri.hostname)
- const noProxyList = noProxy.split(',')
-
- // iterate through the noProxyList until it finds a match.
- return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) {
- const isMatchedAt = hostname.indexOf(noProxyZone.hostname)
- const hostnameMatched =
- isMatchedAt > -1 &&
- isMatchedAt === hostname.length - noProxyZone.hostname.length
-
- if (noProxyZone.hasPort) {
- return port === noProxyZone.port && hostnameMatched
- }
-
- return hostnameMatched
- })
-}
-
-function getProxyFromURI(uri): string | null {
- // Decide the proper request proxy to use based on the request URI object and the
- // environmental variables (NO_PROXY, HTTP_PROXY, etc.)
- // respect NO_PROXY environment variables (see: http://lynx.isc.org/current/breakout/lynx_help/keystrokes/environments.html)
-
- const noProxy = process.env.NO_PROXY || process.env.no_proxy || ''
-
- // if the noProxy is a wildcard then return null
-
- if (noProxy === '*') {
- return null
- }
-
- // if the noProxy is not empty and the uri is found return null
-
- if (noProxy !== '' && uriInNoProxy(uri, noProxy)) {
- return null
- }
-
- // Check for HTTP or HTTPS Proxy in environment Else default to null
-
- if (uri.protocol === 'http:') {
- return process.env.HTTP_PROXY || process.env.http_proxy || null
- }
-
- if (uri.protocol === 'https:') {
- return (
- process.env.HTTPS_PROXY ||
- process.env.https_proxy ||
- process.env.HTTP_PROXY ||
- process.env.http_proxy ||
- null
- )
- }
-
- // if none of that works, return null
- // (What uri protocol are you using then?)
-
- return null
-}
-
-export function getProxyAgent(
- url: string,
-): HttpProxyAgent.HttpProxyAgent | HttpsProxyAgent.HttpsProxyAgent | undefined {
- const uri = Url.parse(url)
- const proxy = getProxyFromURI(uri)
- if (!proxy) {
- return undefined
- }
-
- if (uri.protocol === 'http:') {
- return HttpProxyAgent(proxy)
- }
-
- if (uri.protocol === 'https:') {
- return HttpsProxyAgent(proxy)
- }
-
- return undefined
-}
diff --git a/packages/fetch-engine/src/index.ts b/packages/fetch-engine/src/index.ts
deleted file mode 100644
index 7918840a6..000000000
--- a/packages/fetch-engine/src/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './download'
-export { getAllUrls, getLatestTag, urlExists } from './getLatestTag'
-export { getProxyAgent } from './getProxyAgent'
diff --git a/packages/fetch-engine/src/log.ts b/packages/fetch-engine/src/log.ts
deleted file mode 100644
index 3ba9c2f95..000000000
--- a/packages/fetch-engine/src/log.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Progress from 'progress'
-
-export function getBar(text): Progress {
- return new Progress(`> ${text} [:bar] :percent`, {
- stream: process.stdout,
- width: 20,
- complete: '=',
- incomplete: ' ',
- total: 100,
- head: '',
- clear: true,
- })
-}
diff --git a/packages/fetch-engine/src/util.ts b/packages/fetch-engine/src/util.ts
deleted file mode 100644
index ea4a2c19a..000000000
--- a/packages/fetch-engine/src/util.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import Debug from '@prisma/debug'
-import { getNodeAPIName, Platform } from '@prisma/get-platform'
-import findCacheDir from 'find-cache-dir'
-import fs from 'fs'
-import makeDir from 'make-dir'
-import os from 'os'
-import path from 'path'
-import { BinaryType } from './download'
-
-const debug = Debug('prisma:cache-dir')
-
-export async function getRootCacheDir(): Promise {
- if (os.platform() === 'win32') {
- const cacheDir = findCacheDir({ name: 'prisma', create: true })
- if (cacheDir) {
- return cacheDir
- }
- if (process.env.APPDATA) {
- return path.join(process.env.APPDATA, 'Prisma')
- }
- }
- // if this is lambda, nope
- if (process.env.AWS_LAMBDA_FUNCTION_VERSION) {
- try {
- await makeDir(`/tmp/prisma-download`)
- return `/tmp/prisma-download`
- } catch (e) {
- return null
- }
- }
- return path.join(os.homedir(), '.cache/prisma')
-}
-
-export async function getCacheDir(
- channel: string,
- version: string,
- platform: string,
-): Promise {
- const rootCacheDir = await getRootCacheDir()
- if (!rootCacheDir) {
- return null
- }
- const cacheDir = path.join(rootCacheDir, channel, version, platform)
- try {
- if (!fs.existsSync(cacheDir)) {
- await makeDir(cacheDir)
- }
- } catch (e) {
- debug('The following error is being caught and just there for debugging:')
- debug(e)
- return null
- }
- return cacheDir
-}
-
-export function getDownloadUrl(
- channel: string,
- version: string,
- platform: Platform,
- binaryName: string,
- extension = '.gz',
-): string {
- const baseUrl =
- process.env.PRISMA_BINARIES_MIRROR || // TODO: remove this
- process.env.PRISMA_ENGINES_MIRROR ||
- 'https://binaries.prisma.sh'
- const finalExtension =
- platform === 'windows' && BinaryType.libqueryEngine !== binaryName
- ? `.exe${extension}`
- : extension
- if (binaryName === BinaryType.libqueryEngine) {
- binaryName = getNodeAPIName(platform, 'url')
- }
-
- return `${baseUrl}/${channel}/${version}/${platform}/${binaryName}${finalExtension}`
-}
diff --git a/packages/fetch-engine/tsconfig.eslint.json b/packages/fetch-engine/tsconfig.eslint.json
deleted file mode 100644
index 2f038bd3f..000000000
--- a/packages/fetch-engine/tsconfig.eslint.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "extends": "./tsconfig",
- "include": ["src"],
- "exclude": []
-}
diff --git a/packages/fetch-engine/tsconfig.json b/packages/fetch-engine/tsconfig.json
deleted file mode 100644
index 0685d8ff8..000000000
--- a/packages/fetch-engine/tsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "compilerOptions": {
- "declaration": true,
- "lib": ["esnext"],
- "module": "commonjs",
- "target": "es2018",
- "strict": true,
- "esModuleInterop": true,
- "sourceMap": true,
- "noImplicitAny": false,
- "outDir": "dist",
- "rootDir": "src",
- "incremental": true
- },
- "exclude": ["dist", "build", "src/__tests__", "scripts", "sandbox"]
-}
diff --git a/packages/get-platform/.eslintignore b/packages/get-platform/.eslintignore
deleted file mode 100644
index 76add878f..000000000
--- a/packages/get-platform/.eslintignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-dist
\ No newline at end of file
diff --git a/packages/get-platform/.eslintrc.js b/packages/get-platform/.eslintrc.js
deleted file mode 100644
index 6dace2a12..000000000
--- a/packages/get-platform/.eslintrc.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const path = require('path')
-const config = require('../../../.eslintrc.js')
-
-config.parserOptions.project.push(path.join(__dirname, 'tsconfig.eslint.json'))
-
-module.exports = config
diff --git a/packages/get-platform/.gitignore b/packages/get-platform/.gitignore
deleted file mode 100644
index 9f2880484..000000000
--- a/packages/get-platform/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-node_modules
-.DS_Store
-query-engine*
-yarn-error.log
-pnpm-debug.log
-
-*.db
-
-dist/
-
-copy-photon.sh
-*.tsbuildinfo
\ No newline at end of file
diff --git a/packages/get-platform/.prettierignore b/packages/get-platform/.prettierignore
deleted file mode 100644
index 53c37a166..000000000
--- a/packages/get-platform/.prettierignore
+++ /dev/null
@@ -1 +0,0 @@
-dist
\ No newline at end of file
diff --git a/packages/get-platform/.prettierrc.yml b/packages/get-platform/.prettierrc.yml
deleted file mode 100644
index bbaf47227..000000000
--- a/packages/get-platform/.prettierrc.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-tabWidth: 2
-trailingComma: all
-singleQuote: true
-semi: false
-printWidth: 80
diff --git a/packages/get-platform/README.md b/packages/get-platform/README.md
deleted file mode 100644
index b668cad81..000000000
--- a/packages/get-platform/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# @prisma/get-platform
-
-Platform detection used for Prisma 2 binaries.
-
-⚠️ **Warning**: This package is intended for Prisma's internal use.
-Its release cycle does not follow SemVer, which means we might release breaking changes (change APIs, remove functionality) without any prior warning.
-
-If you are using this package, it would be helpful if you could help us gain an understanding where, how and why you are using it. Your feedback will be valuable to us to define a better API. Please share this information at https://github.com/prisma/prisma/discussions/13877 - Thanks!
-
-## Usage
-
-```ts
-import { getPlatform } from '@prisma/get-platform'
-
-const platform = await getPlatform()
-```
diff --git a/packages/get-platform/jest.config.js b/packages/get-platform/jest.config.js
deleted file mode 100644
index 90066d6b0..000000000
--- a/packages/get-platform/jest.config.js
+++ /dev/null
@@ -1,9 +0,0 @@
-module.exports = {
- preset: 'ts-jest',
- testEnvironment: 'node',
- collectCoverage: process.env.CI ? true : false,
- coverageReporters: ['clover'],
- coverageDirectory: 'src/__tests__/coverage',
- collectCoverageFrom: ['src/**/*.ts', '!**/__tests__/**/*'],
- testMatch: ['**/src/__tests__/**/*.test.ts'],
-}
diff --git a/packages/get-platform/package.json b/packages/get-platform/package.json
deleted file mode 100644
index d85164638..000000000
--- a/packages/get-platform/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "@prisma/get-platform",
- "version": "4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0",
- "main": "dist/index.js",
- "types": "dist/index.d.ts",
- "license": "Apache-2.0",
- "author": "Tim Suchanek ",
- "homepage": "https://www.prisma.io",
- "repository": "git@github.com:prisma/prisma.git",
- "maintainers": [
- "Tim Suchanek ",
- "Joël Galeran ",
- "William Luke "
- ],
- "bugs": "https://github.com/prisma/prisma/issues",
- "devDependencies": {
- "@types/jest": "27.5.2",
- "@types/node": "16.11.41",
- "@typescript-eslint/eslint-plugin": "5.30.0",
- "@typescript-eslint/parser": "5.30.0",
- "eslint": "8.18.0",
- "eslint-config-prettier": "8.5.0",
- "eslint-plugin-eslint-comments": "3.2.0",
- "eslint-plugin-jest": "25.7.0",
- "eslint-plugin-prettier": "4.1.0",
- "jest": "27.5.1",
- "lint-staged": "11.2.6",
- "prettier": "2.7.1",
- "ts-jest": "27.1.5",
- "typescript": "4.7.4"
- },
- "dependencies": {
- "@prisma/debug": "3.15.2"
- },
- "scripts": {
- "build": "tsc -d",
- "prepublishOnly": "pnpm run build && npm run test",
- "format": "prettier --write .",
- "lint": "eslint --cache --fix --ext .ts .",
- "lint-ci": "eslint --ext .ts .",
- "test": "jest",
- "precommit": "lint-staged"
- },
- "files": [
- "README.md",
- "dist"
- ],
- "lint-staged": {
- "*.ts": [
- "eslint",
- "prettier --write"
- ]
- }
-}
\ No newline at end of file
diff --git a/packages/get-platform/src/__tests__/coverage/clover.xml b/packages/get-platform/src/__tests__/coverage/clover.xml
deleted file mode 100644
index c709482bb..000000000
--- a/packages/get-platform/src/__tests__/coverage/clover.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packages/get-platform/src/__tests__/parseDistro.test.ts b/packages/get-platform/src/__tests__/parseDistro.test.ts
deleted file mode 100644
index daffa42e9..000000000
--- a/packages/get-platform/src/__tests__/parseDistro.test.ts
+++ /dev/null
@@ -1,134 +0,0 @@
-import { parseDistro } from '../getPlatform'
-
-const tests = [
- {
- name: 'simple',
- content: `
-ID=debian
- `,
- expect: 'debian',
- },
- {
- name: 'simple with quotes',
- content: `
-ID="debian"
- `,
- expect: 'debian',
- },
- {
- name: 'debian',
- content: `
-PRETTY_NAME="Debian GNU/Linux 10 (buster)"
-NAME="Debian GNU/Linux"
-VERSION_ID="10"
-VERSION="10 (buster)"
-VERSION_CODENAME=buster
-ID=debian
- `,
- expect: 'debian',
- },
- {
- name: 'ubuntu',
- content: `
-NAME="Ubuntu"
-VERSION="18.04.3 LTS (Bionic Beaver)"
-ID=ubuntu
-ID_LIKE=debian
-PRETTY_NAME="Ubuntu 18.04.3 LTS"
-VERSION_ID="18.04"
-VERSION_CODENAME=bionic
-UBUNTU_CODENAME=bionic
- `,
- expect: 'debian',
- },
- {
- name: 'amazon linux 1',
- content: `
-NAME="Amazon Linux AMI"
-VERSION="2018.03"
-ID="amzn"
-ID_LIKE="rhel fedora"
-VERSION_ID="2018.03"
-PRETTY_NAME="Amazon Linux AMI 2018.03"
-ANSI_COLOR="0;33"
-CPE_NAME="cpe:o:amazon:linux:2018.03:ga"
- `,
- expect: 'rhel',
- },
- {
- name: 'amazon linux 2',
- content: `
-NAME="Amazon Linux"
-VERSION="2"
-ID="amzn"
-ID_LIKE="centos rhel fedora"
-VERSION_ID="2"
-PRETTY_NAME="Amazon Linux 2"
-ANSI_COLOR="0;33"
-CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
- `,
- expect: 'rhel',
- },
- {
- name: 'centos',
- content: `
-NAME="CentOS Linux"
-VERSION="8 (Core)"
-ID="centos"
-ID_LIKE="rhel fedora"
-VERSION_ID="8"
-PLATFORM_ID="platform:el8"
- `,
- expect: 'rhel',
- },
- {
- name: 'fedora',
- content: `
-NAME=Fedora
-VERSION="31 (Container Image)"
-ID=fedora
-VERSION_ID=31
-VERSION_CODENAME=""
-PLATFORM_ID="platform:f31"
-PRETTY_NAME="Fedora 31 (Container Image)"
-ANSI_COLOR="0;34"
-LOGO=fedora-logo-icon
- `,
- expect: 'rhel',
- },
- {
- name: 'arch linux',
- content: `
-NAME="Arch Linux"
-PRETTY_NAME="Arch Linux"
-ID=arch
-BUILD_ID=rolling
-ANSI_COLOR="0;36"
-LOGO=archlinux
- `,
- expect: undefined, // this will default to debian later.
- },
- {
- name: 'linux mint',
- content: `
-NAME="Linux Mint"
-VERSION="18.2 (Sonya)"
-ID=linuxmint
-ID_LIKE=ubuntu
-PRETTY_NAME="Linux Mint 18.2"
-VERSION_ID="18.2"
-VERSION_CODENAME=sonya
-UBUNTU_CODENAME=xenial
- `,
- expect: 'debian',
- },
-]
-
-describe('parseDistro', () => {
- for (const t of tests) {
- test(t.name, () => {
- const actual = parseDistro(t.content)
- expect(actual).toBe(t.expect)
- })
- }
-})
diff --git a/packages/get-platform/src/__tests__/parseOpenSSLVersion.test.ts b/packages/get-platform/src/__tests__/parseOpenSSLVersion.test.ts
deleted file mode 100644
index b6c441d8a..000000000
--- a/packages/get-platform/src/__tests__/parseOpenSSLVersion.test.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { parseOpenSSLVersion } from '../getPlatform'
-
-const tests = [
- {
- name: '1.1',
- content: `OpenSSL 1.1.0d 1 Feb 2014`,
- expect: '1.1.x',
- },
- {
- name: '1.2',
- content: `OpenSSL 1.0.2g 1 Mar 2016`,
- expect: '1.0.x',
- },
- {
- name: '3.0',
- content: `OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)`,
- expect: '3.0.x',
- },
-]
-
-describe('parseOpenSSLVersion', () => {
- for (const t of tests) {
- test(t.name, () => {
- const actual = parseOpenSSLVersion(t.content)
- expect(actual).toBe(t.expect)
- })
- }
-})
diff --git a/packages/get-platform/src/getNodeAPIName.ts b/packages/get-platform/src/getNodeAPIName.ts
deleted file mode 100644
index c2e5a6a95..000000000
--- a/packages/get-platform/src/getNodeAPIName.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-// Why is this in getPlatform... because of our dependency tree
-
-import { Platform } from './platforms'
-
-const NODE_API_QUERY_ENGINE_URL_BASE = 'libquery_engine'
-
-/**
- * Gets Node-API Library name depending on the platform
- * @param platform
- * @param type `fs` gets name used on the file system, `url` gets the name required to download the library from S3
- * @returns
- */
-export function getNodeAPIName(platform: Platform, type: 'url' | 'fs') {
- const isUrl = type === 'url'
- if (platform.includes('windows')) {
- return isUrl ? `query_engine.dll.node` : `query_engine-${platform}.dll.node`
- } else if (platform.includes('darwin')) {
- return isUrl
- ? `${NODE_API_QUERY_ENGINE_URL_BASE}.dylib.node`
- : `${NODE_API_QUERY_ENGINE_URL_BASE}-${platform}.dylib.node`
- } else {
- return isUrl
- ? `${NODE_API_QUERY_ENGINE_URL_BASE}.so.node`
- : `${NODE_API_QUERY_ENGINE_URL_BASE}-${platform}.so.node`
- }
-}
diff --git a/packages/get-platform/src/getPlatform.ts b/packages/get-platform/src/getPlatform.ts
deleted file mode 100644
index 587d5bb12..000000000
--- a/packages/get-platform/src/getPlatform.ts
+++ /dev/null
@@ -1,237 +0,0 @@
-import { exec } from 'child_process'
-import fs from 'fs'
-import os from 'os'
-import { promisify } from 'util'
-import { Platform } from './platforms'
-
-const readFile = promisify(fs.readFile)
-const exists = promisify(fs.exists)
-
-// https://www.geeksforgeeks.org/node-js-process-arch-property/
-export type Arch =
- | 'x32'
- | 'x64'
- | 'arm'
- | 'arm64'
- | 's390'
- | 's390x'
- | 'mipsel'
- | 'ia32'
- | 'mips'
- | 'ppc'
- | 'ppc64'
-export type GetOSResult = {
- platform: NodeJS.Platform
- libssl?: string
- arch: Arch
- distro?:
- | 'rhel'
- | 'debian'
- | 'musl'
- | 'arm'
- | 'nixos'
- | 'freebsd11'
- | 'freebsd12'
- | 'freebsd13'
-}
-
-export async function getos(): Promise {
- const platform = os.platform()
- const arch = process.arch as Arch
- if (platform === 'freebsd') {
- const version = await gracefulExec(`freebsd-version`)
- if (version && version.trim().length > 0) {
- const regex = /^(\d+)\.?/
- const match = regex.exec(version)
- if (match) {
- return {
- platform: 'freebsd',
- distro: `freebsd${match[1]}` as GetOSResult['distro'],
- arch,
- }
- }
- }
- }
-
- if (platform !== 'linux') {
- return {
- platform,
- arch,
- }
- }
-
- return {
- platform: 'linux',
- libssl: await getOpenSSLVersion(),
- distro: await resolveDistro(),
- arch,
- }
-}
-
-export function parseDistro(input: string): GetOSResult['distro'] {
- const idRegex = /^ID="?([^"\n]*)"?$/im
- const idLikeRegex = /^ID_LIKE="?([^"\n]*)"?$/im
-
- const idMatch = idRegex.exec(input)
- const id = (idMatch && idMatch[1] && idMatch[1].toLowerCase()) || ''
-
- const idLikeMatch = idLikeRegex.exec(input)
- const idLike =
- (idLikeMatch && idLikeMatch[1] && idLikeMatch[1].toLowerCase()) || ''
-
- if (id === 'raspbian') {
- return 'arm'
- }
-
- if (id === 'nixos') {
- return 'nixos'
- }
-
- if (
- idLike.includes('centos') ||
- idLike.includes('fedora') ||
- idLike.includes('rhel') ||
- id === 'fedora'
- ) {
- return 'rhel'
- }
-
- if (
- idLike.includes('debian') ||
- idLike.includes('ubuntu') ||
- id === 'debian'
- ) {
- return 'debian'
- }
-
- return
-}
-
-export async function resolveDistro(): Promise<
- undefined | GetOSResult['distro']
-> {
- // https://github.com/retrohacker/getos/blob/master/os.json
- const osReleaseFile = '/etc/os-release'
- const alpineReleaseFile = '/etc/alpine-release'
-
- if (await exists(alpineReleaseFile)) {
- return 'musl'
- } else if (await exists(osReleaseFile)) {
- return parseDistro(await readFile(osReleaseFile, 'utf-8'))
- } else {
- return
- }
-}
-
-export function parseOpenSSLVersion(input: string): string | undefined {
- const match = /^OpenSSL\s(\d+\.\d+)\.\d+/.exec(input)
- if (match) {
- return match[1] + '.x'
- }
-
- return
-}
-
-// getOpenSSLVersion returns the OpenSSL version excluding the patch version, e.g. "1.1.x"
-export async function getOpenSSLVersion(): Promise {
- const [version, ls] = await Promise.all([
- gracefulExec(`openssl version -v`),
- gracefulExec(`
- ls -l /lib64 | grep ssl;
- ls -l /usr/lib64 | grep ssl;
- `),
- ])
-
- if (version) {
- const v = parseOpenSSLVersion(version)
- if (v) {
- return v
- }
- }
-
- if (ls) {
- const match = /libssl\.so\.(\d+\.\d+)\.\d+/.exec(ls)
- if (match) {
- return match[1] + '.x'
- }
- }
-
- return undefined
-}
-
-async function gracefulExec(cmd: string): Promise {
- return new Promise((resolve) => {
- try {
- exec(cmd, (err, stdout) => {
- resolve(String(stdout))
- })
- } catch (e) {
- resolve(undefined)
- return undefined
- }
- })
-}
-
-export async function getPlatform(): Promise {
- const { platform, libssl, distro, arch } = await getos()
-
- // Apple Silicon (M1)
- if (platform === 'darwin' && arch === 'arm64') {
- return 'darwin-arm64'
- }
-
- if (platform === 'darwin') {
- return 'darwin'
- }
-
- if (platform === 'win32') {
- return 'windows'
- }
-
- if (platform === 'freebsd') {
- return distro as Platform
- }
-
- if (platform === 'openbsd') {
- return 'openbsd'
- }
-
- if (platform === 'netbsd') {
- return 'netbsd'
- }
- if (platform === 'linux' && arch === 'arm64') {
- // 64 bit ARM
- return `linux-arm64-openssl-${libssl}` as Platform
- }
-
- if (platform === 'linux' && arch === 'arm') {
- // 32 bit ARM
- return `linux-arm-openssl-${libssl}` as Platform
- }
-
- if (platform === 'linux' && distro === 'nixos') {
- return 'linux-nixos'
- }
-
- if (platform === 'linux' && distro === 'musl') {
- return 'linux-musl'
- }
-
- // when the platform is linux
- if (platform === 'linux' && distro && libssl) {
- return (distro + '-openssl-' + libssl) as Platform
- }
-
- // if just OpenSSL is known, fallback to debian with a specific libssl version
- if (libssl) {
- return ('debian-openssl-' + libssl) as Platform
- }
-
- // if just the distro is known, fallback to latest OpenSSL 1.1
- if (distro) {
- return (distro + '-openssl-1.1.x') as Platform
- }
-
- // use the debian build with OpenSSL 1.1 as a last resort
- return 'debian-openssl-1.1.x'
-}
diff --git a/packages/get-platform/src/index.ts b/packages/get-platform/src/index.ts
deleted file mode 100644
index 87b11fe58..000000000
--- a/packages/get-platform/src/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { getNodeAPIName } from './getNodeAPIName'
-export { getos, getPlatform } from './getPlatform'
-export { isNodeAPISupported } from './isNodeAPISupported'
-export { Platform, platforms } from './platforms'
diff --git a/packages/get-platform/src/isNodeAPISupported.ts b/packages/get-platform/src/isNodeAPISupported.ts
deleted file mode 100644
index bfbd399b6..000000000
--- a/packages/get-platform/src/isNodeAPISupported.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import fs from 'fs'
-import { getos } from '.'
-
-/**
- * Determines whether Node API is supported on the current platform and throws if not
- */
-export async function isNodeAPISupported() {
- const customLibraryPath = process.env.PRISMA_QUERY_ENGINE_LIBRARY
- const customLibraryExists =
- customLibraryPath && fs.existsSync(customLibraryPath)
- const os = await getos()
- if (!customLibraryExists && (os.arch === 'x32' || os.arch === 'ia32')) {
- throw new Error(
- `The default query engine type (Node-API, "library") is currently not supported for 32bit Node. Please set \`engineType = "binary"\` in the "generator" block of your "schema.prisma" file (or use the environment variables "PRISMA_CLIENT_ENGINE_TYPE=binary" and/or "PRISMA_CLI_QUERY_ENGINE_TYPE=binary".)`,
- )
- }
-}
diff --git a/packages/get-platform/src/platforms.ts b/packages/get-platform/src/platforms.ts
deleted file mode 100644
index f081c1e28..000000000
--- a/packages/get-platform/src/platforms.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-export type Platform =
- | 'native'
- | 'darwin'
- | 'darwin-arm64'
- | 'debian-openssl-1.0.x'
- | 'debian-openssl-1.1.x'
- | 'debian-openssl-3.0.x'
- | 'rhel-openssl-1.0.x'
- | 'rhel-openssl-1.1.x'
- | 'rhel-openssl-3.0.x'
- | 'linux-arm64-openssl-1.1.x'
- | 'linux-arm64-openssl-1.0.x'
- | 'linux-arm64-openssl-3.0.x'
- | 'linux-arm-openssl-1.1.x'
- | 'linux-arm-openssl-1.0.x'
- | 'linux-arm-openssl-3.0.x'
- | 'linux-musl'
- | 'linux-nixos'
- | 'windows'
- | 'freebsd11'
- | 'freebsd12'
- | 'freebsd13'
- | 'openbsd'
- | 'netbsd'
- | 'arm'
-
-export const platforms: Array = [
- 'darwin',
- 'darwin-arm64',
- 'debian-openssl-1.0.x',
- 'debian-openssl-1.1.x',
- 'debian-openssl-3.0.x',
- 'rhel-openssl-1.0.x',
- 'rhel-openssl-1.1.x',
- 'rhel-openssl-3.0.x',
- 'linux-arm64-openssl-1.1.x',
- 'linux-arm64-openssl-1.0.x',
- 'linux-arm64-openssl-3.0.x',
- 'linux-arm-openssl-1.1.x',
- 'linux-arm-openssl-1.0.x',
- 'linux-arm-openssl-3.0.x',
- 'linux-musl',
- 'linux-nixos',
- 'windows',
- 'freebsd11',
- 'freebsd12',
- 'freebsd13',
- 'openbsd',
- 'netbsd',
- 'arm',
-]
diff --git a/packages/get-platform/tsconfig.eslint.json b/packages/get-platform/tsconfig.eslint.json
deleted file mode 100644
index 2f038bd3f..000000000
--- a/packages/get-platform/tsconfig.eslint.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "extends": "./tsconfig",
- "include": ["src"],
- "exclude": []
-}
diff --git a/packages/get-platform/tsconfig.json b/packages/get-platform/tsconfig.json
deleted file mode 100644
index 2ac950ec2..000000000
--- a/packages/get-platform/tsconfig.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "compilerOptions": {
- "lib": ["esnext"],
- "module": "commonjs",
- "target": "es2018",
- "strict": true,
- "esModuleInterop": true,
- "sourceMap": true,
- "noImplicitAny": false,
- "outDir": "dist",
- "rootDir": "src",
- "declaration": true,
- "incremental": true
- },
- "exclude": ["dist", "build", "src/__tests__", "scripts"]
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0b2c8e4fe..40ec2e9fd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -30,22 +30,6 @@ importers:
ts-node: 10.8.1_841f2a74d64cdda652a10d589e346265
typescript: 4.7.4
- packages/engines:
- specifiers:
- '@prisma/debug': 3.15.2
- '@prisma/engines-version': workspace:4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0
- '@prisma/fetch-engine': workspace:4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0
- '@types/node': 16.11.41
- execa: 5.1.1
- typescript: 4.7.4
- devDependencies:
- '@prisma/debug': 3.15.2
- '@prisma/engines-version': link:../engines-version
- '@prisma/fetch-engine': link:../fetch-engine
- '@types/node': 16.11.41
- execa: 5.1.1
- typescript: 4.7.4
-
packages/engines-version:
specifiers:
'@types/node': 16.11.41
@@ -54,3706 +38,324 @@ importers:
'@types/node': 16.11.41
typescript: 4.7.4
- packages/fetch-engine:
- specifiers:
- '@prisma/debug': 3.15.2
- '@prisma/engines-version': workspace:4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0
- '@prisma/get-platform': workspace:4.1.0-5.e82e1a549e41aa2c572eb3d35208d12e526c3ed0
- '@types/find-cache-dir': 3.2.1
- '@types/jest': 27.5.2
- '@types/node': 16.11.41
- '@types/node-fetch': 2.6.2
- '@types/progress': 2.0.5
- '@typescript-eslint/eslint-plugin': 5.30.0
- '@typescript-eslint/parser': 5.30.0
- chalk: 4.1.2
- del: 6.1.1
- eslint: 8.18.0
- eslint-config-prettier: 8.5.0
- eslint-plugin-eslint-comments: 3.2.0
- eslint-plugin-jest: 25.7.0
- eslint-plugin-prettier: 4.1.0
- execa: 5.1.1
- find-cache-dir: 3.3.2
- hasha: 5.2.2
- http-proxy-agent: 5.0.0
- https-proxy-agent: 5.0.1
- jest: 27.5.1
- lint-staged: 11.2.6
- make-dir: 3.1.0
- node-fetch: 2.6.7
- p-filter: 2.1.0
- p-map: 4.0.0
- p-retry: 4.6.2
- prettier: 2.7.1
- progress: 2.0.3
- rimraf: 3.0.2
- strip-ansi: 6.0.1
- temp-dir: 2.0.0
- tempy: 1.0.1
- ts-jest: 27.1.5
- typescript: 4.7.4
- dependencies:
- '@prisma/debug': 3.15.2
- '@prisma/get-platform': link:../get-platform
- chalk: 4.1.2
- execa: 5.1.1
- find-cache-dir: 3.3.2
- hasha: 5.2.2
- http-proxy-agent: 5.0.0
- https-proxy-agent: 5.0.1
- make-dir: 3.1.0
- node-fetch: 2.6.7
- p-filter: 2.1.0
- p-map: 4.0.0
- p-retry: 4.6.2
- progress: 2.0.3
- rimraf: 3.0.2
- temp-dir: 2.0.0
- tempy: 1.0.1
- devDependencies:
- '@prisma/engines-version': link:../engines-version
- '@types/find-cache-dir': 3.2.1
- '@types/jest': 27.5.2
- '@types/node': 16.11.41
- '@types/node-fetch': 2.6.2
- '@types/progress': 2.0.5
- '@typescript-eslint/eslint-plugin': 5.30.0_eb27092288e495ddbd8abfd1fa139db3
- '@typescript-eslint/parser': 5.30.0_eslint@8.18.0+typescript@4.7.4
- del: 6.1.1
- eslint: 8.18.0
- eslint-config-prettier: 8.5.0_eslint@8.18.0
- eslint-plugin-eslint-comments: 3.2.0_eslint@8.18.0
- eslint-plugin-jest: 25.7.0_b009ba930106794f2cc338846fe32295
- eslint-plugin-prettier: 4.1.0_bd3c4b21319ad16ec3ab54a1da22f60e
- jest: 27.5.1_ts-node@10.8.1
- lint-staged: 11.2.6
- prettier: 2.7.1
- strip-ansi: 6.0.1
- ts-jest: 27.1.5_6400e448c8ce26641831d9829b55a941
- typescript: 4.7.4
-
- packages/get-platform:
- specifiers:
- '@prisma/debug': 3.15.2
- '@types/jest': 27.5.2
- '@types/node': 16.11.41
- '@typescript-eslint/eslint-plugin': 5.30.0
- '@typescript-eslint/parser': 5.30.0
- eslint: 8.18.0
- eslint-config-prettier: 8.5.0
- eslint-plugin-eslint-comments: 3.2.0
- eslint-plugin-jest: 25.7.0
- eslint-plugin-prettier: 4.1.0
- jest: 27.5.1
- lint-staged: 11.2.6
- prettier: 2.7.1
- ts-jest: 27.1.5
- typescript: 4.7.4
- dependencies:
- '@prisma/debug': 3.15.2
- devDependencies:
- '@types/jest': 27.5.2
- '@types/node': 16.11.41
- '@typescript-eslint/eslint-plugin': 5.30.0_eb27092288e495ddbd8abfd1fa139db3
- '@typescript-eslint/parser': 5.30.0_eslint@8.18.0+typescript@4.7.4
- eslint: 8.18.0
- eslint-config-prettier: 8.5.0_eslint@8.18.0
- eslint-plugin-eslint-comments: 3.2.0_eslint@8.18.0
- eslint-plugin-jest: 25.7.0_b009ba930106794f2cc338846fe32295
- eslint-plugin-prettier: 4.1.0_bd3c4b21319ad16ec3ab54a1da22f60e
- jest: 27.5.1_ts-node@10.8.1
- lint-staged: 11.2.6
- prettier: 2.7.1
- ts-jest: 27.1.5_6400e448c8ce26641831d9829b55a941
- typescript: 4.7.4
-
packages:
- /@babel/code-frame/7.14.5:
- resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/highlight': 7.14.5
- dev: true
-
- /@babel/compat-data/7.14.7:
- resolution: {integrity: sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/core/7.14.6:
- resolution: {integrity: sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.14.5
- '@babel/generator': 7.14.5
- '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.6
- '@babel/helper-module-transforms': 7.14.5
- '@babel/helpers': 7.14.6
- '@babel/parser': 7.14.7
- '@babel/template': 7.14.5
- '@babel/traverse': 7.14.7
- '@babel/types': 7.14.5
- convert-source-map: 1.8.0
- debug: 4.3.4
- gensync: 1.0.0-beta.2
- json5: 2.2.0
- semver: 6.3.0
- source-map: 0.5.7
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/generator/7.14.5:
- resolution: {integrity: sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.14.5
- jsesc: 2.5.2
- source-map: 0.5.7
- dev: true
-
- /@babel/helper-compilation-targets/7.14.5_@babel+core@7.14.6:
- resolution: {integrity: sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/compat-data': 7.14.7
- '@babel/core': 7.14.6
- '@babel/helper-validator-option': 7.14.5
- browserslist: 4.16.6
- semver: 6.3.0
- dev: true
-
- /@babel/helper-function-name/7.14.5:
- resolution: {integrity: sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-get-function-arity': 7.14.5
- '@babel/template': 7.14.5
- '@babel/types': 7.14.5
- dev: true
-
- /@babel/helper-get-function-arity/7.14.5:
- resolution: {integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@babel/helper-hoist-variables/7.14.5:
- resolution: {integrity: sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@babel/helper-member-expression-to-functions/7.14.7:
- resolution: {integrity: sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@babel/helper-module-imports/7.14.5:
- resolution: {integrity: sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@babel/helper-module-transforms/7.14.5:
- resolution: {integrity: sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-module-imports': 7.14.5
- '@babel/helper-replace-supers': 7.14.5
- '@babel/helper-simple-access': 7.14.5
- '@babel/helper-split-export-declaration': 7.14.5
- '@babel/helper-validator-identifier': 7.14.5
- '@babel/template': 7.14.5
- '@babel/traverse': 7.14.7
- '@babel/types': 7.14.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/helper-optimise-call-expression/7.14.5:
- resolution: {integrity: sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@babel/helper-plugin-utils/7.14.5:
- resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helper-replace-supers/7.14.5:
- resolution: {integrity: sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-member-expression-to-functions': 7.14.7
- '@babel/helper-optimise-call-expression': 7.14.5
- '@babel/traverse': 7.14.7
- '@babel/types': 7.14.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/helper-simple-access/7.14.5:
- resolution: {integrity: sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@babel/helper-split-export-declaration/7.14.5:
- resolution: {integrity: sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@babel/helper-validator-identifier/7.14.5:
- resolution: {integrity: sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helper-validator-option/7.14.5:
- resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helpers/7.14.6:
- resolution: {integrity: sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/template': 7.14.5
- '@babel/traverse': 7.14.7
- '@babel/types': 7.14.5
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/highlight/7.14.5:
- resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==}
- engines: {node: '>=6.9.0'}
+ /@cspotcode/source-map-support/0.8.1:
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
dependencies:
- '@babel/helper-validator-identifier': 7.14.5
- chalk: 2.4.2
- js-tokens: 4.0.0
+ '@jridgewell/trace-mapping': 0.3.9
dev: true
- /@babel/parser/7.14.7:
- resolution: {integrity: sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==}
+ /@jridgewell/resolve-uri/3.0.7:
+ resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==}
engines: {node: '>=6.0.0'}
- hasBin: true
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.14.6:
- resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.14.6:
- resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.14.6:
- resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.14.6:
- resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.14.6:
- resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.14.6:
- resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.14.6:
- resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.14.6:
- resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.14.6:
- resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
- dev: true
-
- /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.14.6:
- resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
dev: true
- /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.14.6:
- resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
+ /@jridgewell/sourcemap-codec/1.4.13:
+ resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==}
dev: true
- /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.14.6:
- resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ /@jridgewell/trace-mapping/0.3.9:
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
+ '@jridgewell/resolve-uri': 3.0.7
+ '@jridgewell/sourcemap-codec': 1.4.13
dev: true
- /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.14.6:
- resolution: {integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
+ /@sindresorhus/slugify/1.1.2:
+ resolution: {integrity: sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==}
+ engines: {node: '>=10'}
dependencies:
- '@babel/core': 7.14.6
- '@babel/helper-plugin-utils': 7.14.5
+ '@sindresorhus/transliterate': 0.1.1
+ escape-string-regexp: 4.0.0
dev: true
- /@babel/template/7.14.5:
- resolution: {integrity: sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==}
- engines: {node: '>=6.9.0'}
+ /@sindresorhus/transliterate/0.1.1:
+ resolution: {integrity: sha512-QSdIQ5keUFAZ3KLbfbsntW39ox0Ym8183RqTwBq/ZEFoN3NQAtGV+qWaNdzKpIDHgj9J2CQ2iNDRVU11Zyr7MQ==}
+ engines: {node: '>=10'}
dependencies:
- '@babel/code-frame': 7.14.5
- '@babel/parser': 7.14.7
- '@babel/types': 7.14.5
+ escape-string-regexp: 2.0.0
+ lodash.deburr: 4.1.0
dev: true
- /@babel/traverse/7.14.7:
- resolution: {integrity: sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.14.5
- '@babel/generator': 7.14.5
- '@babel/helper-function-name': 7.14.5
- '@babel/helper-hoist-variables': 7.14.5
- '@babel/helper-split-export-declaration': 7.14.5
- '@babel/parser': 7.14.7
- '@babel/types': 7.14.5
- debug: 4.3.4
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
+ /@tsconfig/node10/1.0.7:
+ resolution: {integrity: sha512-aBvUmXLQbayM4w3A8TrjwrXs4DZ8iduJnuJLLRGdkWlyakCf1q6uHZJBzXoRA/huAEknG5tcUyQxN3A+In5euQ==}
dev: true
- /@babel/types/7.14.5:
- resolution: {integrity: sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-validator-identifier': 7.14.5
- to-fast-properties: 2.0.0
+ /@tsconfig/node12/1.0.7:
+ resolution: {integrity: sha512-dgasobK/Y0wVMswcipr3k0HpevxFJLijN03A8mYfEPvWvOs14v0ZlYTR4kIgMx8g4+fTyTFv8/jLCIfRqLDJ4A==}
dev: true
- /@bcoe/v8-coverage/0.2.3:
- resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+ /@tsconfig/node14/1.0.0:
+ resolution: {integrity: sha512-RKkL8eTdPv6t5EHgFKIVQgsDapugbuOptNd9OOunN/HAkzmmTnZELx1kNCK0rSdUYGmiFMM3rRQMAWiyp023LQ==}
dev: true
- /@cspotcode/source-map-support/0.8.1:
- resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
- engines: {node: '>=12'}
- dependencies:
- '@jridgewell/trace-mapping': 0.3.9
+ /@tsconfig/node16/1.0.2:
+ resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==}
dev: true
- /@eslint/eslintrc/1.3.0:
- resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ /@types/node-fetch/2.6.2:
+ resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==}
dependencies:
- ajv: 6.12.6
- debug: 4.3.4
- espree: 9.3.2
- globals: 13.15.0
- ignore: 5.2.0
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
+ '@types/node': 16.11.41
+ form-data: 3.0.0
dev: true
- /@humanwhocodes/config-array/0.9.2:
- resolution: {integrity: sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==}
- engines: {node: '>=10.10.0'}
- dependencies:
- '@humanwhocodes/object-schema': 1.2.1
- debug: 4.3.4
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
+ /@types/node/16.11.41:
+ resolution: {integrity: sha512-mqoYK2TnVjdkGk8qXAVGc/x9nSaTpSrFaGFm43BUH3IdoBV0nta6hYaGmdOvIMlbHJbUEVen3gvwpwovAZKNdQ==}
dev: true
- /@humanwhocodes/object-schema/1.2.1:
- resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
+ /acorn-walk/8.1.1:
+ resolution: {integrity: sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==}
+ engines: {node: '>=0.4.0'}
dev: true
- /@istanbuljs/load-nyc-config/1.1.0:
- resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
- engines: {node: '>=8'}
- dependencies:
- camelcase: 5.3.1
- find-up: 4.1.0
- get-package-type: 0.1.0
- js-yaml: 3.14.1
- resolve-from: 5.0.0
+ /acorn/8.7.1:
+ resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
dev: true
- /@istanbuljs/schema/0.1.3:
- resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ /ansi-styles/4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
- dev: true
-
- /@jest/console/27.5.1:
- resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- chalk: 4.1.2
- jest-message-util: 27.5.1
- jest-util: 27.5.1
- slash: 3.0.0
+ color-convert: 2.0.1
dev: true
- /@jest/core/27.5.1_ts-node@10.8.1:
- resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@jest/console': 27.5.1
- '@jest/reporters': 27.5.1
- '@jest/test-result': 27.5.1
- '@jest/transform': 27.5.1
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- emittery: 0.8.1
- exit: 0.1.2
- graceful-fs: 4.2.9
- jest-changed-files: 27.5.1
- jest-config: 27.5.1_ts-node@10.8.1
- jest-haste-map: 27.5.1
- jest-message-util: 27.5.1
- jest-regex-util: 27.5.1
- jest-resolve: 27.5.1
- jest-resolve-dependencies: 27.5.1
- jest-runner: 27.5.1
- jest-runtime: 27.5.1
- jest-snapshot: 27.5.1
- jest-util: 27.5.1
- jest-validate: 27.5.1
- jest-watcher: 27.5.1
- micromatch: 4.0.4
- rimraf: 3.0.2
- slash: 3.0.0
- strip-ansi: 6.0.1
- transitivePeerDependencies:
- - bufferutil
- - canvas
- - supports-color
- - ts-node
- - utf-8-validate
+ /arg/4.1.3:
+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
dev: true
- /@jest/environment/27.5.1:
- resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/fake-timers': 27.5.1
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- jest-mock: 27.5.1
+ /arg/5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
dev: true
- /@jest/fake-timers/27.5.1:
- resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- '@sinonjs/fake-timers': 8.0.1
- '@types/node': 16.11.41
- jest-message-util: 27.5.1
- jest-mock: 27.5.1
- jest-util: 27.5.1
+ /asynckit/0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: true
- /@jest/globals/27.5.1:
- resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ /chalk/4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
dependencies:
- '@jest/environment': 27.5.1
- '@jest/types': 27.5.1
- expect: 27.5.1
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
dev: true
- /@jest/reporters/27.5.1:
- resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@bcoe/v8-coverage': 0.2.3
- '@jest/console': 27.5.1
- '@jest/test-result': 27.5.1
- '@jest/transform': 27.5.1
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- chalk: 4.1.2
- collect-v8-coverage: 1.0.1
- exit: 0.1.2
- glob: 7.1.6
- graceful-fs: 4.2.9
- istanbul-lib-coverage: 3.2.0
- istanbul-lib-instrument: 5.1.0
- istanbul-lib-report: 3.0.0
- istanbul-lib-source-maps: 4.0.0
- istanbul-reports: 3.1.3
- jest-haste-map: 27.5.1
- jest-resolve: 27.5.1
- jest-util: 27.5.1
- jest-worker: 27.5.1
- slash: 3.0.0
- source-map: 0.6.1
- string-length: 4.0.2
- terminal-link: 2.1.1
- v8-to-istanbul: 8.1.0
- transitivePeerDependencies:
- - supports-color
+ /ci-info/3.2.0:
+ resolution: {integrity: sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==}
dev: true
- /@jest/source-map/27.5.1:
- resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ /color-convert/2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
dependencies:
- callsites: 3.1.0
- graceful-fs: 4.2.9
- source-map: 0.6.1
+ color-name: 1.1.4
dev: true
- /@jest/test-result/27.5.1:
- resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/console': 27.5.1
- '@jest/types': 27.5.1
- '@types/istanbul-lib-coverage': 2.0.3
- collect-v8-coverage: 1.0.1
+ /color-name/1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: true
- /@jest/test-sequencer/27.5.1:
- resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ /combined-stream/1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
dependencies:
- '@jest/test-result': 27.5.1
- graceful-fs: 4.2.9
- jest-haste-map: 27.5.1
- jest-runtime: 27.5.1
- transitivePeerDependencies:
- - supports-color
+ delayed-stream: 1.0.0
dev: true
- /@jest/transform/27.5.1:
- resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@babel/core': 7.14.6
- '@jest/types': 27.5.1
- babel-plugin-istanbul: 6.1.1
- chalk: 4.1.2
- convert-source-map: 1.8.0
- fast-json-stable-stringify: 2.1.0
- graceful-fs: 4.2.9
- jest-haste-map: 27.5.1
- jest-regex-util: 27.5.1
- jest-util: 27.5.1
- micromatch: 4.0.4
- pirates: 4.0.4
- slash: 3.0.0
- source-map: 0.6.1
- write-file-atomic: 3.0.3
- transitivePeerDependencies:
- - supports-color
+ /create-require/1.1.1:
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
- /@jest/types/27.5.1:
- resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ /cross-spawn/7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
dependencies:
- '@types/istanbul-lib-coverage': 2.0.3
- '@types/istanbul-reports': 3.0.1
- '@types/node': 16.11.41
- '@types/yargs': 16.0.3
- chalk: 4.1.2
- dev: true
-
- /@jridgewell/resolve-uri/3.0.7:
- resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==}
- engines: {node: '>=6.0.0'}
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
dev: true
- /@jridgewell/sourcemap-codec/1.4.13:
- resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==}
- dev: true
-
- /@jridgewell/trace-mapping/0.3.9:
- resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
- dependencies:
- '@jridgewell/resolve-uri': 3.0.7
- '@jridgewell/sourcemap-codec': 1.4.13
- dev: true
-
- /@nodelib/fs.scandir/2.1.5:
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- /@nodelib/fs.stat/2.0.5:
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- /@nodelib/fs.walk/1.2.7:
- resolution: {integrity: sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==}
- engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.11.0
-
- /@prisma/debug/3.15.2:
- resolution: {integrity: sha512-Uw6RkJmHolxXNifohIY9TIBRNWR2ciDY9LErPm6jymBs3mevLCUWm4m5AlyWyhKFWl0crUtwbAWE8Z79JiNRcw==}
- dependencies:
- '@types/debug': 4.1.7
- debug: 4.3.4
- strip-ansi: 6.0.1
- transitivePeerDependencies:
- - supports-color
-
- /@sindresorhus/slugify/1.1.2:
- resolution: {integrity: sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==}
- engines: {node: '>=10'}
- dependencies:
- '@sindresorhus/transliterate': 0.1.1
- escape-string-regexp: 4.0.0
- dev: true
-
- /@sindresorhus/transliterate/0.1.1:
- resolution: {integrity: sha512-QSdIQ5keUFAZ3KLbfbsntW39ox0Ym8183RqTwBq/ZEFoN3NQAtGV+qWaNdzKpIDHgj9J2CQ2iNDRVU11Zyr7MQ==}
- engines: {node: '>=10'}
- dependencies:
- escape-string-regexp: 2.0.0
- lodash.deburr: 4.1.0
- dev: true
-
- /@sinonjs/commons/1.8.3:
- resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==}
- dependencies:
- type-detect: 4.0.8
- dev: true
-
- /@sinonjs/fake-timers/8.0.1:
- resolution: {integrity: sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==}
- dependencies:
- '@sinonjs/commons': 1.8.3
- dev: true
-
- /@tootallnate/once/1.1.2:
- resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
- engines: {node: '>= 6'}
- dev: true
-
- /@tootallnate/once/2.0.0:
- resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
- engines: {node: '>= 10'}
- dev: false
-
- /@tsconfig/node10/1.0.7:
- resolution: {integrity: sha512-aBvUmXLQbayM4w3A8TrjwrXs4DZ8iduJnuJLLRGdkWlyakCf1q6uHZJBzXoRA/huAEknG5tcUyQxN3A+In5euQ==}
- dev: true
-
- /@tsconfig/node12/1.0.7:
- resolution: {integrity: sha512-dgasobK/Y0wVMswcipr3k0HpevxFJLijN03A8mYfEPvWvOs14v0ZlYTR4kIgMx8g4+fTyTFv8/jLCIfRqLDJ4A==}
- dev: true
-
- /@tsconfig/node14/1.0.0:
- resolution: {integrity: sha512-RKkL8eTdPv6t5EHgFKIVQgsDapugbuOptNd9OOunN/HAkzmmTnZELx1kNCK0rSdUYGmiFMM3rRQMAWiyp023LQ==}
- dev: true
-
- /@tsconfig/node16/1.0.2:
- resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==}
- dev: true
-
- /@types/babel__core/7.1.14:
- resolution: {integrity: sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==}
- dependencies:
- '@babel/parser': 7.14.7
- '@babel/types': 7.14.5
- '@types/babel__generator': 7.6.2
- '@types/babel__template': 7.4.0
- '@types/babel__traverse': 7.14.0
- dev: true
-
- /@types/babel__generator/7.6.2:
- resolution: {integrity: sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==}
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@types/babel__template/7.4.0:
- resolution: {integrity: sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==}
- dependencies:
- '@babel/parser': 7.14.7
- '@babel/types': 7.14.5
- dev: true
-
- /@types/babel__traverse/7.14.0:
- resolution: {integrity: sha512-IilJZ1hJBUZwMOVDNTdflOOLzJB/ZtljYVa7k3gEZN/jqIJIPkWHC6dvbX+DD2CwZDHB9wAKzZPzzqMIkW37/w==}
- dependencies:
- '@babel/types': 7.14.5
- dev: true
-
- /@types/debug/4.1.7:
- resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
- dependencies:
- '@types/ms': 0.7.31
-
- /@types/find-cache-dir/3.2.1:
- resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==}
- dev: true
-
- /@types/graceful-fs/4.1.5:
- resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==}
- dependencies:
- '@types/node': 16.11.41
- dev: true
-
- /@types/istanbul-lib-coverage/2.0.3:
- resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==}
- dev: true
-
- /@types/istanbul-lib-report/3.0.0:
- resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==}
- dependencies:
- '@types/istanbul-lib-coverage': 2.0.3
- dev: true
-
- /@types/istanbul-reports/3.0.1:
- resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==}
- dependencies:
- '@types/istanbul-lib-report': 3.0.0
- dev: true
-
- /@types/jest/27.5.2:
- resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==}
- dependencies:
- jest-matcher-utils: 27.5.1
- pretty-format: 27.5.1
- dev: true
-
- /@types/json-schema/7.0.9:
- resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==}
- dev: true
-
- /@types/ms/0.7.31:
- resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
-
- /@types/node-fetch/2.6.2:
- resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==}
- dependencies:
- '@types/node': 16.11.41
- form-data: 3.0.0
- dev: true
-
- /@types/node/16.11.41:
- resolution: {integrity: sha512-mqoYK2TnVjdkGk8qXAVGc/x9nSaTpSrFaGFm43BUH3IdoBV0nta6hYaGmdOvIMlbHJbUEVen3gvwpwovAZKNdQ==}
- dev: true
-
- /@types/parse-json/4.0.0:
- resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
- dev: true
-
- /@types/prettier/2.3.1:
- resolution: {integrity: sha512-NVkb4p4YjI8E3O6+1m8I+8JlMpFZwfSbPGdaw0wXuyPRTEz0SLKwBUWNSO7Maoi8tQMPC8JLZNWkrcKPI7/sLA==}
- dev: true
-
- /@types/progress/2.0.5:
- resolution: {integrity: sha512-ZYYVc/kSMkhH9W/4dNK/sLNra3cnkfT2nJyOAIDY+C2u6w72wa0s1aXAezVtbTsnN8HID1uhXCrLwDE2ZXpplg==}
- dependencies:
- '@types/node': 16.11.41
- dev: true
-
- /@types/retry/0.12.0:
- resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
- dev: false
-
- /@types/stack-utils/2.0.0:
- resolution: {integrity: sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==}
- dev: true
-
- /@types/yargs-parser/20.2.0:
- resolution: {integrity: sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==}
- dev: true
-
- /@types/yargs/16.0.3:
- resolution: {integrity: sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ==}
- dependencies:
- '@types/yargs-parser': 20.2.0
- dev: true
-
- /@typescript-eslint/eslint-plugin/5.30.0_eb27092288e495ddbd8abfd1fa139db3:
- resolution: {integrity: sha512-lvhRJ2pGe2V9MEU46ELTdiHgiAFZPKtLhiU5wlnaYpMc2+c1R8fh8i80ZAa665drvjHKUJyRRGg3gEm1If54ow==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- '@typescript-eslint/parser': ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/parser': 5.30.0_eslint@8.18.0+typescript@4.7.4
- '@typescript-eslint/scope-manager': 5.30.0
- '@typescript-eslint/type-utils': 5.30.0_eslint@8.18.0+typescript@4.7.4
- '@typescript-eslint/utils': 5.30.0_eslint@8.18.0+typescript@4.7.4
- debug: 4.3.4
- eslint: 8.18.0
- functional-red-black-tree: 1.0.1
- ignore: 5.2.0
- regexpp: 3.2.0
- semver: 7.3.7
- tsutils: 3.21.0_typescript@4.7.4
- typescript: 4.7.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/experimental-utils/5.8.1_eslint@8.18.0+typescript@4.7.4:
- resolution: {integrity: sha512-fbodVnjIDU4JpeXWRDsG5IfIjYBxEvs8EBO8W1+YVdtrc2B9ppfof5sZhVEDOtgTfFHnYQJDI8+qdqLYO4ceww==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- '@types/json-schema': 7.0.9
- '@typescript-eslint/scope-manager': 5.8.1
- '@typescript-eslint/types': 5.8.1
- '@typescript-eslint/typescript-estree': 5.8.1_typescript@4.7.4
- eslint: 8.18.0
- eslint-scope: 5.1.1
- eslint-utils: 3.0.0_eslint@8.18.0
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /@typescript-eslint/parser/5.30.0_eslint@8.18.0+typescript@4.7.4:
- resolution: {integrity: sha512-2oYYUws5o2liX6SrFQ5RB88+PuRymaM2EU02/9Ppoyu70vllPnHVO7ioxDdq/ypXHA277R04SVjxvwI8HmZpzA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/scope-manager': 5.30.0
- '@typescript-eslint/types': 5.30.0
- '@typescript-eslint/typescript-estree': 5.30.0_typescript@4.7.4
- debug: 4.3.4
- eslint: 8.18.0
- typescript: 4.7.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/scope-manager/5.30.0:
- resolution: {integrity: sha512-3TZxvlQcK5fhTBw5solQucWSJvonXf5yua5nx8OqK94hxdrT7/6W3/CS42MLd/f1BmlmmbGEgQcTHHCktUX5bQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.30.0
- '@typescript-eslint/visitor-keys': 5.30.0
- dev: true
-
- /@typescript-eslint/scope-manager/5.8.1:
- resolution: {integrity: sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.8.1
- '@typescript-eslint/visitor-keys': 5.8.1
- dev: true
-
- /@typescript-eslint/type-utils/5.30.0_eslint@8.18.0+typescript@4.7.4:
- resolution: {integrity: sha512-GF8JZbZqSS+azehzlv/lmQQ3EU3VfWYzCczdZjJRxSEeXDQkqFhCBgFhallLDbPwQOEQ4MHpiPfkjKk7zlmeNg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/utils': 5.30.0_eslint@8.18.0+typescript@4.7.4
- debug: 4.3.4
- eslint: 8.18.0
- tsutils: 3.21.0_typescript@4.7.4
- typescript: 4.7.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/types/5.30.0:
- resolution: {integrity: sha512-vfqcBrsRNWw/LBXyncMF/KrUTYYzzygCSsVqlZ1qGu1QtGs6vMkt3US0VNSQ05grXi5Yadp3qv5XZdYLjpp8ag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /@typescript-eslint/types/5.8.1:
- resolution: {integrity: sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /@typescript-eslint/typescript-estree/5.30.0_typescript@4.7.4:
- resolution: {integrity: sha512-hDEawogreZB4n1zoqcrrtg/wPyyiCxmhPLpZ6kmWfKF5M5G0clRLaEexpuWr31fZ42F96SlD/5xCt1bT5Qm4Nw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/types': 5.30.0
- '@typescript-eslint/visitor-keys': 5.30.0
- debug: 4.3.4
- globby: 11.1.0
- is-glob: 4.0.3
- semver: 7.3.7
- tsutils: 3.21.0_typescript@4.7.4
- typescript: 4.7.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/typescript-estree/5.8.1_typescript@4.7.4:
- resolution: {integrity: sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/types': 5.8.1
- '@typescript-eslint/visitor-keys': 5.8.1
- debug: 4.3.4
- globby: 11.1.0
- is-glob: 4.0.3
- semver: 7.3.7
- tsutils: 3.21.0_typescript@4.7.4
- typescript: 4.7.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/utils/5.30.0_eslint@8.18.0+typescript@4.7.4:
- resolution: {integrity: sha512-0bIgOgZflLKIcZsWvfklsaQTM3ZUbmtH0rJ1hKyV3raoUYyeZwcjQ8ZUJTzS7KnhNcsVT1Rxs7zeeMHEhGlltw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- '@types/json-schema': 7.0.9
- '@typescript-eslint/scope-manager': 5.30.0
- '@typescript-eslint/types': 5.30.0
- '@typescript-eslint/typescript-estree': 5.30.0_typescript@4.7.4
- eslint: 8.18.0
- eslint-scope: 5.1.1
- eslint-utils: 3.0.0_eslint@8.18.0
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /@typescript-eslint/visitor-keys/5.30.0:
- resolution: {integrity: sha512-6WcIeRk2DQ3pHKxU1Ni0qMXJkjO/zLjBymlYBy/53qxe7yjEFSvzKLDToJjURUhSl2Fzhkl4SMXQoETauF74cw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.30.0
- eslint-visitor-keys: 3.3.0
- dev: true
-
- /@typescript-eslint/visitor-keys/5.8.1:
- resolution: {integrity: sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.8.1
- eslint-visitor-keys: 3.3.0
- dev: true
-
- /abab/2.0.5:
- resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==}
- dev: true
-
- /acorn-globals/6.0.0:
- resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==}
- dependencies:
- acorn: 7.4.1
- acorn-walk: 7.2.0
- dev: true
-
- /acorn-jsx/5.3.2_acorn@8.7.1:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- acorn: 8.7.1
- dev: true
-
- /acorn-walk/7.2.0:
- resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
- engines: {node: '>=0.4.0'}
- dev: true
-
- /acorn-walk/8.1.1:
- resolution: {integrity: sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==}
- engines: {node: '>=0.4.0'}
- dev: true
-
- /acorn/7.4.1:
- resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
- engines: {node: '>=0.4.0'}
- hasBin: true
- dev: true
-
- /acorn/8.7.1:
- resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==}
- engines: {node: '>=0.4.0'}
- hasBin: true
- dev: true
-
- /agent-base/6.0.2:
- resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
- engines: {node: '>= 6.0.0'}
- dependencies:
- debug: 4.3.2
- transitivePeerDependencies:
- - supports-color
-
- /aggregate-error/3.1.0:
- resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
- engines: {node: '>=8'}
- dependencies:
- clean-stack: 2.2.0
- indent-string: 4.0.0
-
- /ajv/6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
- dev: true
-
- /ansi-colors/4.1.1:
- resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==}
- engines: {node: '>=6'}
- dev: true
-
- /ansi-escapes/4.3.2:
- resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
- engines: {node: '>=8'}
- dependencies:
- type-fest: 0.21.3
- dev: true
-
- /ansi-regex/5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
-
- /ansi-styles/3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
- dependencies:
- color-convert: 1.9.3
- dev: true
-
- /ansi-styles/4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
- dependencies:
- color-convert: 2.0.1
-
- /ansi-styles/5.2.0:
- resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
- engines: {node: '>=10'}
- dev: true
-
- /anymatch/3.1.2:
- resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
- engines: {node: '>= 8'}
- dependencies:
- normalize-path: 3.0.0
- picomatch: 2.3.0
- dev: true
-
- /arg/4.1.3:
- resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
- dev: true
-
- /arg/5.0.2:
- resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
- dev: true
-
- /argparse/1.0.10:
- resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
- dependencies:
- sprintf-js: 1.0.3
- dev: true
-
- /argparse/2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- dev: true
-
- /array-union/2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
- /astral-regex/2.0.0:
- resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
- engines: {node: '>=8'}
- dev: true
-
- /asynckit/0.4.0:
- resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
- dev: true
-
- /babel-jest/27.5.1_@babel+core@7.14.6:
- resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- peerDependencies:
- '@babel/core': ^7.8.0
- dependencies:
- '@babel/core': 7.14.6
- '@jest/transform': 27.5.1
- '@jest/types': 27.5.1
- '@types/babel__core': 7.1.14
- babel-plugin-istanbul: 6.1.1
- babel-preset-jest: 27.5.1_@babel+core@7.14.6
- chalk: 4.1.2
- graceful-fs: 4.2.9
- slash: 3.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /babel-plugin-istanbul/6.1.1:
- resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/helper-plugin-utils': 7.14.5
- '@istanbuljs/load-nyc-config': 1.1.0
- '@istanbuljs/schema': 0.1.3
- istanbul-lib-instrument: 5.1.0
- test-exclude: 6.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /babel-plugin-jest-hoist/27.5.1:
- resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@babel/template': 7.14.5
- '@babel/types': 7.14.5
- '@types/babel__core': 7.1.14
- '@types/babel__traverse': 7.14.0
- dev: true
-
- /babel-preset-current-node-syntax/1.0.1_@babel+core@7.14.6:
- resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/core': 7.14.6
- '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.6
- '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.14.6
- '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.6
- '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.14.6
- '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.6
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.6
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.6
- '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.6
- '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.6
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.6
- '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.6
- '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.14.6
- dev: true
-
- /babel-preset-jest/27.5.1_@babel+core@7.14.6:
- resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/core': 7.14.6
- babel-plugin-jest-hoist: 27.5.1
- babel-preset-current-node-syntax: 1.0.1_@babel+core@7.14.6
- dev: true
-
- /balanced-match/1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- /brace-expansion/1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- /braces/3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
- engines: {node: '>=8'}
- dependencies:
- fill-range: 7.0.1
-
- /browser-process-hrtime/1.0.0:
- resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
- dev: true
-
- /browserslist/4.16.6:
- resolution: {integrity: sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
- dependencies:
- caniuse-lite: 1.0.30001241
- colorette: 1.4.0
- electron-to-chromium: 1.3.765
- escalade: 3.1.1
- node-releases: 1.1.73
- dev: true
-
- /bs-logger/0.2.6:
- resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
- engines: {node: '>= 6'}
- dependencies:
- fast-json-stable-stringify: 2.1.0
- dev: true
-
- /bser/2.1.1:
- resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
- dependencies:
- node-int64: 0.4.0
- dev: true
-
- /buffer-from/1.1.1:
- resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==}
- dev: true
-
- /callsites/3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
- dev: true
-
- /camelcase/5.3.1:
- resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
- engines: {node: '>=6'}
- dev: true
-
- /camelcase/6.2.0:
- resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==}
- engines: {node: '>=10'}
- dev: true
-
- /caniuse-lite/1.0.30001241:
- resolution: {integrity: sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ==}
- dev: true
-
- /chalk/2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
- dev: true
-
- /chalk/4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- /char-regex/1.0.2:
- resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
- engines: {node: '>=10'}
- dev: true
-
- /ci-info/3.2.0:
- resolution: {integrity: sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==}
- dev: true
-
- /cjs-module-lexer/1.2.1:
- resolution: {integrity: sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw==}
- dev: true
-
- /clean-stack/2.2.0:
- resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
- engines: {node: '>=6'}
-
- /cli-cursor/3.1.0:
- resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
- engines: {node: '>=8'}
- dependencies:
- restore-cursor: 3.1.0
- dev: true
-
- /cli-truncate/2.1.0:
- resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
- engines: {node: '>=8'}
- dependencies:
- slice-ansi: 3.0.0
- string-width: 4.2.2
- dev: true
-
- /cliui/7.0.4:
- resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
- dependencies:
- string-width: 4.2.2
- strip-ansi: 6.0.1
- wrap-ansi: 7.0.0
- dev: true
-
- /co/4.6.0:
- resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=}
- engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
- dev: true
-
- /collect-v8-coverage/1.0.1:
- resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==}
- dev: true
-
- /color-convert/1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
- dependencies:
- color-name: 1.1.3
- dev: true
-
- /color-convert/2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
- dependencies:
- color-name: 1.1.4
-
- /color-name/1.1.3:
- resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
- dev: true
-
- /color-name/1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- /colorette/1.4.0:
- resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==}
- dev: true
-
- /combined-stream/1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
- dependencies:
- delayed-stream: 1.0.0
- dev: true
-
- /commander/8.2.0:
- resolution: {integrity: sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==}
- engines: {node: '>= 12'}
- dev: true
-
- /commondir/1.0.1:
- resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=}
- dev: false
-
- /concat-map/0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
- /convert-source-map/1.8.0:
- resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
- dependencies:
- safe-buffer: 5.1.2
- dev: true
-
- /cosmiconfig/7.0.1:
- resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==}
- engines: {node: '>=10'}
- dependencies:
- '@types/parse-json': 4.0.0
- import-fresh: 3.3.0
- parse-json: 5.2.0
- path-type: 4.0.0
- yaml: 1.10.0
- dev: true
-
- /create-require/1.1.1:
- resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
- dev: true
-
- /cross-spawn/7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- /crypto-random-string/2.0.0:
- resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==}
- engines: {node: '>=8'}
- dev: false
-
- /cssom/0.3.8:
- resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
- dev: true
-
- /cssom/0.4.4:
- resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==}
- dev: true
-
- /cssstyle/2.3.0:
- resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
- engines: {node: '>=8'}
- dependencies:
- cssom: 0.3.8
- dev: true
-
- /data-urls/2.0.0:
- resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==}
- engines: {node: '>=10'}
- dependencies:
- abab: 2.0.5
- whatwg-mimetype: 2.3.0
- whatwg-url: 8.7.0
- dev: true
-
- /debug/4.3.2:
- resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.1.2
-
- /debug/4.3.2_supports-color@8.1.1:
- resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.1.2
- supports-color: 8.1.1
- dev: true
-
- /debug/4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.1.2
-
- /decimal.js/10.3.1:
- resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==}
- dev: true
-
- /dedent/0.7.0:
- resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=}
- dev: true
-
- /deep-is/0.1.3:
- resolution: {integrity: sha512-GtxAN4HvBachZzm4OnWqc45ESpUCMwkYcsjnsPs23FwJbsO+k4t0k9bQCgOmzIlpHO28+WPK/KRbRk0DDHuuDw==}
- dev: true
-
- /deepmerge/4.2.2:
- resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /del/6.1.1:
- resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==}
- engines: {node: '>=10'}
- dependencies:
- globby: 11.1.0
- graceful-fs: 4.2.9
- is-glob: 4.0.3
- is-path-cwd: 2.2.0
- is-path-inside: 3.0.3
- p-map: 4.0.0
- rimraf: 3.0.2
- slash: 3.0.0
-
- /delayed-stream/1.0.0:
- resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
- engines: {node: '>=0.4.0'}
- dev: true
-
- /detect-newline/3.1.0:
- resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
- engines: {node: '>=8'}
- dev: true
-
- /diff-sequences/27.5.1:
- resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dev: true
-
- /diff/4.0.2:
- resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
- engines: {node: '>=0.3.1'}
- dev: true
-
- /dir-glob/3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
- dependencies:
- path-type: 4.0.0
-
- /doctrine/3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
- dependencies:
- esutils: 2.0.3
- dev: true
-
- /domexception/2.0.1:
- resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==}
- engines: {node: '>=8'}
- dependencies:
- webidl-conversions: 5.0.0
- dev: true
-
- /electron-to-chromium/1.3.765:
- resolution: {integrity: sha512-4NhcsfZYlr1x4FehYkK+R9CNNTOZ8vLcIu8Y1uWehxYp5r/jlCGAfBqChIubEfdtX+rBQpXx4yJuX/dzILH/nw==}
- dev: true
-
- /emittery/0.8.1:
- resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==}
- engines: {node: '>=10'}
- dev: true
-
- /emoji-regex/8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- dev: true
-
- /enquirer/2.3.6:
- resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==}
- engines: {node: '>=8.6'}
- dependencies:
- ansi-colors: 4.1.1
- dev: true
-
- /error-ex/1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
- dependencies:
- is-arrayish: 0.2.1
- dev: true
-
- /escalade/3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
- engines: {node: '>=6'}
- dev: true
-
- /escape-string-regexp/1.0.5:
- resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
- engines: {node: '>=0.8.0'}
- dev: true
-
- /escape-string-regexp/2.0.0:
- resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
- engines: {node: '>=8'}
- dev: true
-
- /escape-string-regexp/4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
- dev: true
-
- /escodegen/2.0.0:
- resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==}
- engines: {node: '>=6.0'}
- hasBin: true
- dependencies:
- esprima: 4.0.1
- estraverse: 5.2.0
- esutils: 2.0.3
- optionator: 0.8.3
- optionalDependencies:
- source-map: 0.6.1
- dev: true
-
- /eslint-config-prettier/8.5.0_eslint@8.18.0:
- resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
- hasBin: true
- peerDependencies:
- eslint: '>=7.0.0'
- dependencies:
- eslint: 8.18.0
- dev: true
-
- /eslint-plugin-eslint-comments/3.2.0_eslint@8.18.0:
- resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
- engines: {node: '>=6.5.0'}
- peerDependencies:
- eslint: '>=4.19.1'
- dependencies:
- escape-string-regexp: 1.0.5
- eslint: 8.18.0
- ignore: 5.1.8
- dev: true
-
- /eslint-plugin-jest/25.7.0_b009ba930106794f2cc338846fe32295:
- resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- peerDependencies:
- '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- jest: '*'
- peerDependenciesMeta:
- '@typescript-eslint/eslint-plugin':
- optional: true
- jest:
- optional: true
- dependencies:
- '@typescript-eslint/eslint-plugin': 5.30.0_eb27092288e495ddbd8abfd1fa139db3
- '@typescript-eslint/experimental-utils': 5.8.1_eslint@8.18.0+typescript@4.7.4
- eslint: 8.18.0
- jest: 27.5.1_ts-node@10.8.1
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /eslint-plugin-prettier/4.1.0_bd3c4b21319ad16ec3ab54a1da22f60e:
- resolution: {integrity: sha512-A3AXIEfTnq3D5qDFjWJdQ9c4BLhw/TqhSR+6+SVaoPJBAWciFEuJiNQh275OnjRrAi7yssZzuWBRw66VG2g6UA==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- eslint: '>=7.28.0'
- eslint-config-prettier: '*'
- prettier: '>=2.0.0'
- peerDependenciesMeta:
- eslint-config-prettier:
- optional: true
- dependencies:
- eslint: 8.18.0
- eslint-config-prettier: 8.5.0_eslint@8.18.0
- prettier: 2.7.1
- prettier-linter-helpers: 1.0.0
- dev: true
-
- /eslint-scope/5.1.1:
- resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
- engines: {node: '>=8.0.0'}
- dependencies:
- esrecurse: 4.3.0
- estraverse: 4.3.0
- dev: true
-
- /eslint-scope/7.1.1:
- resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.2.0
- dev: true
-
- /eslint-utils/3.0.0_eslint@8.18.0:
- resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
- engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
- peerDependencies:
- eslint: '>=5'
- dependencies:
- eslint: 8.18.0
- eslint-visitor-keys: 2.1.0
- dev: true
-
- /eslint-visitor-keys/2.1.0:
- resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
- engines: {node: '>=10'}
- dev: true
-
- /eslint-visitor-keys/3.3.0:
- resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /eslint/8.18.0:
- resolution: {integrity: sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- hasBin: true
- dependencies:
- '@eslint/eslintrc': 1.3.0
- '@humanwhocodes/config-array': 0.9.2
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.3
- debug: 4.3.4
- doctrine: 3.0.0
- escape-string-regexp: 4.0.0
- eslint-scope: 7.1.1
- eslint-utils: 3.0.0_eslint@8.18.0
- eslint-visitor-keys: 3.3.0
- espree: 9.3.2
- esquery: 1.4.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
- functional-red-black-tree: 1.0.1
- glob-parent: 6.0.2
- globals: 13.15.0
- ignore: 5.2.0
- import-fresh: 3.3.0
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- js-yaml: 4.1.0
- json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.1
- regexpp: 3.2.0
- strip-ansi: 6.0.1
- strip-json-comments: 3.1.1
- text-table: 0.2.0
- v8-compile-cache: 2.3.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /espree/9.3.2:
- resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- acorn: 8.7.1
- acorn-jsx: 5.3.2_acorn@8.7.1
- eslint-visitor-keys: 3.3.0
- dev: true
-
- /esprima/4.0.1:
- resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
- engines: {node: '>=4'}
- hasBin: true
- dev: true
-
- /esquery/1.4.0:
- resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
- engines: {node: '>=0.10'}
- dependencies:
- estraverse: 5.2.0
- dev: true
-
- /esrecurse/4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
- dependencies:
- estraverse: 5.2.0
- dev: true
-
- /estraverse/4.3.0:
- resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
- engines: {node: '>=4.0'}
- dev: true
-
- /estraverse/5.2.0:
- resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==}
- engines: {node: '>=4.0'}
- dev: true
-
- /esutils/2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /execa/5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 6.0.0
- human-signals: 2.1.0
- is-stream: 2.0.0
- merge-stream: 2.0.0
- npm-run-path: 4.0.1
- onetime: 5.1.2
- signal-exit: 3.0.3
- strip-final-newline: 2.0.0
-
- /exit/0.1.2:
- resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=}
- engines: {node: '>= 0.8.0'}
- dev: true
-
- /expect/27.5.1:
- resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- jest-get-type: 27.5.1
- jest-matcher-utils: 27.5.1
- jest-message-util: 27.5.1
- dev: true
-
- /fast-deep-equal/3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
- dev: true
-
- /fast-diff/1.2.0:
- resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
- dev: true
-
- /fast-glob/3.2.11:
- resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
- engines: {node: '>=8.6.0'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.7
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.4
-
- /fast-json-stable-stringify/2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
- dev: true
-
- /fast-levenshtein/2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
- dev: true
-
- /fastq/1.11.0:
- resolution: {integrity: sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==}
- dependencies:
- reusify: 1.0.4
-
- /fb-watchman/2.0.1:
- resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==}
- dependencies:
- bser: 2.1.1
- dev: true
-
- /file-entry-cache/6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
- dependencies:
- flat-cache: 3.0.4
- dev: true
-
- /fill-range/7.0.1:
- resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
- engines: {node: '>=8'}
- dependencies:
- to-regex-range: 5.0.1
-
- /find-cache-dir/3.3.2:
- resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
- engines: {node: '>=8'}
- dependencies:
- commondir: 1.0.1
- make-dir: 3.1.0
- pkg-dir: 4.2.0
- dev: false
-
- /find-up/4.1.0:
- resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
- engines: {node: '>=8'}
- dependencies:
- locate-path: 5.0.0
- path-exists: 4.0.0
-
- /flat-cache/3.0.4:
- resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
- engines: {node: ^10.12.0 || >=12.0.0}
- dependencies:
- flatted: 3.2.2
- rimraf: 3.0.2
- dev: true
-
- /flatted/3.2.2:
- resolution: {integrity: sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==}
- dev: true
-
- /form-data/3.0.0:
- resolution: {integrity: sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==}
- engines: {node: '>= 6'}
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- mime-types: 2.1.27
- dev: true
-
- /fs.realpath/1.0.0:
- resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
-
- /fsevents/2.3.2:
- resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- /function-bind/1.1.1:
- resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
- dev: true
-
- /functional-red-black-tree/1.0.1:
- resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
- dev: true
-
- /gensync/1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /get-caller-file/2.0.5:
- resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
- engines: {node: 6.* || 8.* || >= 10.*}
- dev: true
-
- /get-own-enumerable-property-symbols/3.0.2:
- resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
- dev: true
-
- /get-package-type/0.1.0:
- resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
- engines: {node: '>=8.0.0'}
- dev: true
-
- /get-stream/6.0.0:
- resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==}
- engines: {node: '>=10'}
-
- /glob-parent/5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
- dependencies:
- is-glob: 4.0.3
-
- /glob-parent/6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
- dependencies:
- is-glob: 4.0.3
- dev: true
-
- /glob/7.1.6:
- resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.0.4
- once: 1.4.0
- path-is-absolute: 1.0.1
-
- /globals/11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
- dev: true
-
- /globals/13.15.0:
- resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==}
- engines: {node: '>=8'}
- dependencies:
- type-fest: 0.20.2
- dev: true
-
- /globby/11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.2.11
- ignore: 5.2.0
- merge2: 1.4.1
- slash: 3.0.0
-
- /graceful-fs/4.2.9:
- resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
-
- /has-flag/3.0.0:
- resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
- engines: {node: '>=4'}
- dev: true
-
- /has-flag/4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
-
- /has/1.0.3:
- resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
- engines: {node: '>= 0.4.0'}
- dependencies:
- function-bind: 1.1.1
- dev: true
-
- /hasha/5.2.2:
- resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==}
- engines: {node: '>=8'}
- dependencies:
- is-stream: 2.0.0
- type-fest: 0.8.1
- dev: false
-
- /html-encoding-sniffer/2.0.1:
- resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==}
- engines: {node: '>=10'}
- dependencies:
- whatwg-encoding: 1.0.5
- dev: true
-
- /html-escaper/2.0.2:
- resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
- dev: true
-
- /http-proxy-agent/4.0.1:
- resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
- engines: {node: '>= 6'}
- dependencies:
- '@tootallnate/once': 1.1.2
- agent-base: 6.0.2
- debug: 4.3.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /http-proxy-agent/5.0.0:
- resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
- engines: {node: '>= 6'}
- dependencies:
- '@tootallnate/once': 2.0.0
- agent-base: 6.0.2
- debug: 4.3.2
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /https-proxy-agent/5.0.0:
- resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==}
- engines: {node: '>= 6'}
- dependencies:
- agent-base: 6.0.2
- debug: 4.3.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /https-proxy-agent/5.0.1:
- resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
- engines: {node: '>= 6'}
- dependencies:
- agent-base: 6.0.2
- debug: 4.3.2
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /human-signals/2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
-
- /husky/7.0.4:
- resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==}
- engines: {node: '>=12'}
- hasBin: true
- dev: true
-
- /iconv-lite/0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- safer-buffer: 2.1.2
- dev: true
-
- /ignore/5.1.8:
- resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==}
- engines: {node: '>= 4'}
- dev: true
-
- /ignore/5.2.0:
- resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
- engines: {node: '>= 4'}
-
- /import-fresh/3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
- dev: true
-
- /import-local/3.0.2:
- resolution: {integrity: sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==}
- engines: {node: '>=8'}
- hasBin: true
- dependencies:
- pkg-dir: 4.2.0
- resolve-cwd: 3.0.0
- dev: true
-
- /imurmurhash/0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
- dev: true
-
- /indent-string/4.0.0:
- resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
- engines: {node: '>=8'}
-
- /inflight/1.0.6:
- resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
- dependencies:
- once: 1.4.0
- wrappy: 1.0.2
-
- /inherits/2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
- /is-arrayish/0.2.1:
- resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=}
- dev: true
-
- /is-ci/3.0.1:
- resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
- hasBin: true
- dependencies:
- ci-info: 3.2.0
- dev: true
-
- /is-core-module/2.4.0:
- resolution: {integrity: sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==}
- dependencies:
- has: 1.0.3
- dev: true
-
- /is-extglob/2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- /is-fullwidth-code-point/3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
- dev: true
-
- /is-generator-fn/2.1.0:
- resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
- engines: {node: '>=6'}
- dev: true
-
- /is-glob/4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-extglob: 2.1.1
-
- /is-number/7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- /is-obj/1.0.1:
- resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-path-cwd/2.2.0:
- resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==}
- engines: {node: '>=6'}
-
- /is-path-inside/3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
- /is-potential-custom-element-name/1.0.1:
- resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
- dev: true
-
- /is-regexp/1.0.0:
- resolution: {integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk=}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-stream/2.0.0:
- resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==}
- engines: {node: '>=8'}
-
- /is-typedarray/1.0.0:
- resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=}
- dev: true
-
- /isexe/2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- /istanbul-lib-coverage/3.2.0:
- resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
- engines: {node: '>=8'}
- dev: true
-
- /istanbul-lib-instrument/5.1.0:
- resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/core': 7.14.6
- '@babel/parser': 7.14.7
- '@istanbuljs/schema': 0.1.3
- istanbul-lib-coverage: 3.2.0
- semver: 6.3.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /istanbul-lib-report/3.0.0:
- resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==}
- engines: {node: '>=8'}
- dependencies:
- istanbul-lib-coverage: 3.2.0
- make-dir: 3.1.0
- supports-color: 7.2.0
- dev: true
-
- /istanbul-lib-source-maps/4.0.0:
- resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==}
- engines: {node: '>=8'}
- dependencies:
- debug: 4.3.4
- istanbul-lib-coverage: 3.2.0
- source-map: 0.6.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /istanbul-reports/3.1.3:
- resolution: {integrity: sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==}
- engines: {node: '>=8'}
- dependencies:
- html-escaper: 2.0.2
- istanbul-lib-report: 3.0.0
- dev: true
-
- /jest-changed-files/27.5.1:
- resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- execa: 5.1.1
- throat: 6.0.1
- dev: true
-
- /jest-circus/27.5.1:
- resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/environment': 27.5.1
- '@jest/test-result': 27.5.1
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- chalk: 4.1.2
- co: 4.6.0
- dedent: 0.7.0
- expect: 27.5.1
- is-generator-fn: 2.1.0
- jest-each: 27.5.1
- jest-matcher-utils: 27.5.1
- jest-message-util: 27.5.1
- jest-runtime: 27.5.1
- jest-snapshot: 27.5.1
- jest-util: 27.5.1
- pretty-format: 27.5.1
- slash: 3.0.0
- stack-utils: 2.0.3
- throat: 6.0.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-cli/27.5.1_ts-node@10.8.1:
- resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- hasBin: true
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@jest/core': 27.5.1_ts-node@10.8.1
- '@jest/test-result': 27.5.1
- '@jest/types': 27.5.1
- chalk: 4.1.2
- exit: 0.1.2
- graceful-fs: 4.2.9
- import-local: 3.0.2
- jest-config: 27.5.1_ts-node@10.8.1
- jest-util: 27.5.1
- jest-validate: 27.5.1
- prompts: 2.4.1
- yargs: 16.2.0
- transitivePeerDependencies:
- - bufferutil
- - canvas
- - supports-color
- - ts-node
- - utf-8-validate
- dev: true
-
- /jest-config/27.5.1_ts-node@10.8.1:
- resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- peerDependencies:
- ts-node: '>=9.0.0'
- peerDependenciesMeta:
- ts-node:
- optional: true
- dependencies:
- '@babel/core': 7.14.6
- '@jest/test-sequencer': 27.5.1
- '@jest/types': 27.5.1
- babel-jest: 27.5.1_@babel+core@7.14.6
- chalk: 4.1.2
- ci-info: 3.2.0
- deepmerge: 4.2.2
- glob: 7.1.6
- graceful-fs: 4.2.9
- jest-circus: 27.5.1
- jest-environment-jsdom: 27.5.1
- jest-environment-node: 27.5.1
- jest-get-type: 27.5.1
- jest-jasmine2: 27.5.1
- jest-regex-util: 27.5.1
- jest-resolve: 27.5.1
- jest-runner: 27.5.1
- jest-util: 27.5.1
- jest-validate: 27.5.1
- micromatch: 4.0.4
- parse-json: 5.2.0
- pretty-format: 27.5.1
- slash: 3.0.0
- strip-json-comments: 3.1.1
- ts-node: 10.8.1_841f2a74d64cdda652a10d589e346265
- transitivePeerDependencies:
- - bufferutil
- - canvas
- - supports-color
- - utf-8-validate
- dev: true
-
- /jest-diff/27.5.1:
- resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- chalk: 4.1.2
- diff-sequences: 27.5.1
- jest-get-type: 27.5.1
- pretty-format: 27.5.1
- dev: true
-
- /jest-docblock/27.5.1:
- resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- detect-newline: 3.1.0
- dev: true
-
- /jest-each/27.5.1:
- resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- chalk: 4.1.2
- jest-get-type: 27.5.1
- jest-util: 27.5.1
- pretty-format: 27.5.1
- dev: true
-
- /jest-environment-jsdom/27.5.1:
- resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/environment': 27.5.1
- '@jest/fake-timers': 27.5.1
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- jest-mock: 27.5.1
- jest-util: 27.5.1
- jsdom: 16.6.0
- transitivePeerDependencies:
- - bufferutil
- - canvas
- - supports-color
- - utf-8-validate
- dev: true
-
- /jest-environment-node/27.5.1:
- resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/environment': 27.5.1
- '@jest/fake-timers': 27.5.1
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- jest-mock: 27.5.1
- jest-util: 27.5.1
- dev: true
-
- /jest-get-type/27.5.1:
- resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dev: true
-
- /jest-haste-map/27.5.1:
- resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- '@types/graceful-fs': 4.1.5
- '@types/node': 16.11.41
- anymatch: 3.1.2
- fb-watchman: 2.0.1
- graceful-fs: 4.2.9
- jest-regex-util: 27.5.1
- jest-serializer: 27.5.1
- jest-util: 27.5.1
- jest-worker: 27.5.1
- micromatch: 4.0.4
- walker: 1.0.7
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /jest-jasmine2/27.5.1:
- resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/environment': 27.5.1
- '@jest/source-map': 27.5.1
- '@jest/test-result': 27.5.1
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- chalk: 4.1.2
- co: 4.6.0
- expect: 27.5.1
- is-generator-fn: 2.1.0
- jest-each: 27.5.1
- jest-matcher-utils: 27.5.1
- jest-message-util: 27.5.1
- jest-runtime: 27.5.1
- jest-snapshot: 27.5.1
- jest-util: 27.5.1
- pretty-format: 27.5.1
- throat: 6.0.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-leak-detector/27.5.1:
- resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- jest-get-type: 27.5.1
- pretty-format: 27.5.1
- dev: true
-
- /jest-matcher-utils/27.5.1:
- resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- chalk: 4.1.2
- jest-diff: 27.5.1
- jest-get-type: 27.5.1
- pretty-format: 27.5.1
- dev: true
-
- /jest-message-util/27.5.1:
- resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@babel/code-frame': 7.14.5
- '@jest/types': 27.5.1
- '@types/stack-utils': 2.0.0
- chalk: 4.1.2
- graceful-fs: 4.2.9
- micromatch: 4.0.4
- pretty-format: 27.5.1
- slash: 3.0.0
- stack-utils: 2.0.3
- dev: true
-
- /jest-mock/27.5.1:
- resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- dev: true
-
- /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1:
- resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
- engines: {node: '>=6'}
- peerDependencies:
- jest-resolve: '*'
- peerDependenciesMeta:
- jest-resolve:
- optional: true
- dependencies:
- jest-resolve: 27.5.1
- dev: true
-
- /jest-regex-util/27.5.1:
- resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dev: true
-
- /jest-resolve-dependencies/27.5.1:
- resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- jest-regex-util: 27.5.1
- jest-snapshot: 27.5.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-resolve/27.5.1:
- resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- chalk: 4.1.2
- graceful-fs: 4.2.9
- jest-haste-map: 27.5.1
- jest-pnp-resolver: 1.2.2_jest-resolve@27.5.1
- jest-util: 27.5.1
- jest-validate: 27.5.1
- resolve: 1.20.0
- resolve.exports: 1.1.0
- slash: 3.0.0
- dev: true
-
- /jest-runner/27.5.1:
- resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/console': 27.5.1
- '@jest/environment': 27.5.1
- '@jest/test-result': 27.5.1
- '@jest/transform': 27.5.1
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- chalk: 4.1.2
- emittery: 0.8.1
- graceful-fs: 4.2.9
- jest-docblock: 27.5.1
- jest-environment-jsdom: 27.5.1
- jest-environment-node: 27.5.1
- jest-haste-map: 27.5.1
- jest-leak-detector: 27.5.1
- jest-message-util: 27.5.1
- jest-resolve: 27.5.1
- jest-runtime: 27.5.1
- jest-util: 27.5.1
- jest-worker: 27.5.1
- source-map-support: 0.5.19
- throat: 6.0.1
- transitivePeerDependencies:
- - bufferutil
- - canvas
- - supports-color
- - utf-8-validate
- dev: true
-
- /jest-runtime/27.5.1:
- resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/environment': 27.5.1
- '@jest/fake-timers': 27.5.1
- '@jest/globals': 27.5.1
- '@jest/source-map': 27.5.1
- '@jest/test-result': 27.5.1
- '@jest/transform': 27.5.1
- '@jest/types': 27.5.1
- chalk: 4.1.2
- cjs-module-lexer: 1.2.1
- collect-v8-coverage: 1.0.1
- execa: 5.1.1
- glob: 7.1.6
- graceful-fs: 4.2.9
- jest-haste-map: 27.5.1
- jest-message-util: 27.5.1
- jest-mock: 27.5.1
- jest-regex-util: 27.5.1
- jest-resolve: 27.5.1
- jest-snapshot: 27.5.1
- jest-util: 27.5.1
- slash: 3.0.0
- strip-bom: 4.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-serializer/27.5.1:
- resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@types/node': 16.11.41
- graceful-fs: 4.2.9
- dev: true
-
- /jest-snapshot/27.5.1:
- resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@babel/core': 7.14.6
- '@babel/generator': 7.14.5
- '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.14.6
- '@babel/traverse': 7.14.7
- '@babel/types': 7.14.5
- '@jest/transform': 27.5.1
- '@jest/types': 27.5.1
- '@types/babel__traverse': 7.14.0
- '@types/prettier': 2.3.1
- babel-preset-current-node-syntax: 1.0.1_@babel+core@7.14.6
- chalk: 4.1.2
- expect: 27.5.1
- graceful-fs: 4.2.9
- jest-diff: 27.5.1
- jest-get-type: 27.5.1
- jest-haste-map: 27.5.1
- jest-matcher-utils: 27.5.1
- jest-message-util: 27.5.1
- jest-util: 27.5.1
- natural-compare: 1.4.0
- pretty-format: 27.5.1
- semver: 7.3.7
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-util/27.5.1:
- resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- chalk: 4.1.2
- ci-info: 3.2.0
- graceful-fs: 4.2.9
- picomatch: 2.3.0
- dev: true
-
- /jest-validate/27.5.1:
- resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/types': 27.5.1
- camelcase: 6.2.0
- chalk: 4.1.2
- jest-get-type: 27.5.1
- leven: 3.1.0
- pretty-format: 27.5.1
- dev: true
-
- /jest-watcher/27.5.1:
- resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- '@jest/test-result': 27.5.1
- '@jest/types': 27.5.1
- '@types/node': 16.11.41
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- jest-util: 27.5.1
- string-length: 4.0.2
- dev: true
-
- /jest-worker/27.5.1:
- resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
- engines: {node: '>= 10.13.0'}
- dependencies:
- '@types/node': 16.11.41
- merge-stream: 2.0.0
- supports-color: 8.1.1
- dev: true
-
- /jest/27.5.1_ts-node@10.8.1:
- resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- hasBin: true
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@jest/core': 27.5.1_ts-node@10.8.1
- import-local: 3.0.2
- jest-cli: 27.5.1_ts-node@10.8.1
- transitivePeerDependencies:
- - bufferutil
- - canvas
- - supports-color
- - ts-node
- - utf-8-validate
- dev: true
-
- /js-tokens/4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- dev: true
-
- /js-yaml/3.14.1:
- resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
- hasBin: true
- dependencies:
- argparse: 1.0.10
- esprima: 4.0.1
- dev: true
-
- /js-yaml/4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
- dependencies:
- argparse: 2.0.1
- dev: true
-
- /jsdom/16.6.0:
- resolution: {integrity: sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==}
- engines: {node: '>=10'}
- peerDependencies:
- canvas: ^2.5.0
- peerDependenciesMeta:
- canvas:
- optional: true
- dependencies:
- abab: 2.0.5
- acorn: 8.7.1
- acorn-globals: 6.0.0
- cssom: 0.4.4
- cssstyle: 2.3.0
- data-urls: 2.0.0
- decimal.js: 10.3.1
- domexception: 2.0.1
- escodegen: 2.0.0
- form-data: 3.0.0
- html-encoding-sniffer: 2.0.1
- http-proxy-agent: 4.0.1
- https-proxy-agent: 5.0.0
- is-potential-custom-element-name: 1.0.1
- nwsapi: 2.2.0
- parse5: 6.0.1
- saxes: 5.0.1
- symbol-tree: 3.2.4
- tough-cookie: 4.0.0
- w3c-hr-time: 1.0.2
- w3c-xmlserializer: 2.0.0
- webidl-conversions: 6.1.0
- whatwg-encoding: 1.0.5
- whatwg-mimetype: 2.3.0
- whatwg-url: 8.7.0
- ws: 7.5.1
- xml-name-validator: 3.0.0
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
- dev: true
-
- /jsesc/2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
- hasBin: true
- dev: true
-
- /json-parse-even-better-errors/2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
- dev: true
-
- /json-schema-traverse/0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
- dev: true
-
- /json-stable-stringify-without-jsonify/1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
- dev: true
-
- /json5/2.2.0:
- resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==}
- engines: {node: '>=6'}
- hasBin: true
- dependencies:
- minimist: 1.2.5
- dev: true
-
- /kleur/3.0.3:
- resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
- engines: {node: '>=6'}
- dev: true
-
- /leven/3.1.0:
- resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
- engines: {node: '>=6'}
- dev: true
-
- /levn/0.3.0:
- resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- prelude-ls: 1.1.2
- type-check: 0.3.2
- dev: true
-
- /levn/0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
- dev: true
-
- /lines-and-columns/1.1.6:
- resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=}
- dev: true
-
- /lint-staged/11.2.6:
- resolution: {integrity: sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg==}
- hasBin: true
- dependencies:
- cli-truncate: 2.1.0
- colorette: 1.4.0
- commander: 8.2.0
- cosmiconfig: 7.0.1
- debug: 4.3.2_supports-color@8.1.1
- enquirer: 2.3.6
- execa: 5.1.1
- listr2: 3.12.2_enquirer@2.3.6
- micromatch: 4.0.4
- normalize-path: 3.0.0
- please-upgrade-node: 3.2.0
- string-argv: 0.3.1
- stringify-object: 3.3.0
- supports-color: 8.1.1
- dev: true
-
- /listr2/3.12.2_enquirer@2.3.6:
- resolution: {integrity: sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- enquirer: '>= 2.3.0 < 3'
- dependencies:
- cli-truncate: 2.1.0
- colorette: 1.4.0
- enquirer: 2.3.6
- log-update: 4.0.0
- p-map: 4.0.0
- rxjs: 6.6.7
- through: 2.3.8
- wrap-ansi: 7.0.0
- dev: true
-
- /locate-path/5.0.0:
- resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
- engines: {node: '>=8'}
- dependencies:
- p-locate: 4.1.0
-
- /lodash.deburr/4.1.0:
- resolution: {integrity: sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=}
- dev: true
-
- /lodash.memoize/4.1.2:
- resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
- dev: true
-
- /lodash.merge/4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
- dev: true
-
- /lodash/4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
- dev: true
-
- /log-update/4.0.0:
- resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
- engines: {node: '>=10'}
- dependencies:
- ansi-escapes: 4.3.2
- cli-cursor: 3.1.0
- slice-ansi: 4.0.0
- wrap-ansi: 6.2.0
- dev: true
-
- /lru-cache/6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
- dependencies:
- yallist: 4.0.0
- dev: true
-
- /make-dir/3.1.0:
- resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
- engines: {node: '>=8'}
- dependencies:
- semver: 6.3.0
-
- /make-error/1.3.6:
- resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
- dev: true
-
- /makeerror/1.0.11:
- resolution: {integrity: sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=}
- dependencies:
- tmpl: 1.0.4
- dev: true
-
- /merge-stream/2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
- /merge2/1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- /micromatch/4.0.4:
- resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==}
- engines: {node: '>=8.6'}
- dependencies:
- braces: 3.0.2
- picomatch: 2.3.0
-
- /mime-db/1.44.0:
- resolution: {integrity: sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==}
- engines: {node: '>= 0.6'}
- dev: true
-
- /mime-types/2.1.27:
- resolution: {integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==}
- engines: {node: '>= 0.6'}
- dependencies:
- mime-db: 1.44.0
- dev: true
-
- /mimic-fn/2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
-
- /minimatch/3.0.4:
- resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==}
- dependencies:
- brace-expansion: 1.1.11
-
- /minimatch/3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
- dependencies:
- brace-expansion: 1.1.11
- dev: true
-
- /minimist/1.2.5:
- resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
- dev: true
-
- /ms/2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
- /natural-compare/1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
- dev: true
-
- /node-fetch/2.6.7:
- resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
- engines: {node: 4.x || >=6.0.0}
- peerDependencies:
- encoding: ^0.1.0
- peerDependenciesMeta:
- encoding:
- optional: true
- dependencies:
- whatwg-url: 5.0.0
-
- /node-int64/0.4.0:
- resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=}
- dev: true
-
- /node-releases/1.1.73:
- resolution: {integrity: sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==}
- dev: true
-
- /normalize-path/3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /npm-run-path/4.0.1:
- resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
- engines: {node: '>=8'}
- dependencies:
- path-key: 3.1.1
-
- /nwsapi/2.2.0:
- resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==}
- dev: true
-
- /once/1.4.0:
- resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
- dependencies:
- wrappy: 1.0.2
-
- /onetime/5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
- dependencies:
- mimic-fn: 2.1.0
-
- /optionator/0.8.3:
- resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- deep-is: 0.1.3
- fast-levenshtein: 2.0.6
- levn: 0.3.0
- prelude-ls: 1.1.2
- type-check: 0.3.2
- word-wrap: 1.2.3
- dev: true
-
- /optionator/0.9.1:
- resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- deep-is: 0.1.3
- fast-levenshtein: 2.0.6
- levn: 0.4.1
- prelude-ls: 1.2.1
- type-check: 0.4.0
- word-wrap: 1.2.3
- dev: true
-
- /p-filter/2.1.0:
- resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
- engines: {node: '>=8'}
- dependencies:
- p-map: 2.1.0
- dev: false
-
- /p-limit/2.3.0:
- resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
- engines: {node: '>=6'}
- dependencies:
- p-try: 2.2.0
-
- /p-locate/4.1.0:
- resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
- engines: {node: '>=8'}
- dependencies:
- p-limit: 2.3.0
-
- /p-map/2.1.0:
- resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
- engines: {node: '>=6'}
- dev: false
-
- /p-map/4.0.0:
- resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
- engines: {node: '>=10'}
- dependencies:
- aggregate-error: 3.1.0
-
- /p-retry/4.6.2:
- resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==}
- engines: {node: '>=8'}
- dependencies:
- '@types/retry': 0.12.0
- retry: 0.13.1
- dev: false
-
- /p-try/2.2.0:
- resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
- engines: {node: '>=6'}
-
- /parent-module/1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
- dependencies:
- callsites: 3.1.0
- dev: true
-
- /parse-json/5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/code-frame': 7.14.5
- error-ex: 1.3.2
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.1.6
- dev: true
-
- /parse5/6.0.1:
- resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
- dev: true
-
- /path-exists/4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
-
- /path-is-absolute/1.0.1:
- resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
- engines: {node: '>=0.10.0'}
-
- /path-key/3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- /path-parse/1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- dev: true
-
- /path-type/4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
- /picomatch/2.3.0:
- resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==}
- engines: {node: '>=8.6'}
-
- /pirates/4.0.4:
- resolution: {integrity: sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==}
- engines: {node: '>= 6'}
- dev: true
-
- /pkg-dir/4.2.0:
- resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
- engines: {node: '>=8'}
- dependencies:
- find-up: 4.1.0
-
- /please-upgrade-node/3.2.0:
- resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==}
- dependencies:
- semver-compare: 1.0.0
- dev: true
-
- /prelude-ls/1.1.2:
- resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
- engines: {node: '>= 0.8.0'}
- dev: true
-
- /prelude-ls/1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
- dev: true
-
- /prettier-linter-helpers/1.0.0:
- resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
- engines: {node: '>=6.0.0'}
- dependencies:
- fast-diff: 1.2.0
- dev: true
-
- /prettier/2.7.1:
- resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==}
- engines: {node: '>=10.13.0'}
- hasBin: true
- dev: true
-
- /pretty-format/27.5.1:
- resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- dependencies:
- ansi-regex: 5.0.1
- ansi-styles: 5.2.0
- react-is: 17.0.2
- dev: true
-
- /progress/2.0.3:
- resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
+ /delayed-stream/1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
- dev: false
-
- /prompts/2.4.1:
- resolution: {integrity: sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==}
- engines: {node: '>= 6'}
- dependencies:
- kleur: 3.0.3
- sisteransi: 1.0.5
- dev: true
-
- /psl/1.8.0:
- resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==}
- dev: true
-
- /punycode/2.1.1:
- resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
- engines: {node: '>=6'}
- dev: true
-
- /queue-microtask/1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- /react-is/17.0.2:
- resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
- dev: true
-
- /regexpp/3.2.0:
- resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
- engines: {node: '>=8'}
- dev: true
-
- /require-directory/2.1.1:
- resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /resolve-cwd/3.0.0:
- resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
- engines: {node: '>=8'}
- dependencies:
- resolve-from: 5.0.0
- dev: true
-
- /resolve-from/4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
- dev: true
-
- /resolve-from/5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
- dev: true
-
- /resolve.exports/1.1.0:
- resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==}
- engines: {node: '>=10'}
- dev: true
-
- /resolve/1.20.0:
- resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==}
- dependencies:
- is-core-module: 2.4.0
- path-parse: 1.0.7
- dev: true
-
- /restore-cursor/3.1.0:
- resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
- engines: {node: '>=8'}
- dependencies:
- onetime: 5.1.2
- signal-exit: 3.0.3
- dev: true
-
- /retry/0.13.1:
- resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
- engines: {node: '>= 4'}
- dev: false
-
- /reusify/1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- /rimraf/3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- hasBin: true
- dependencies:
- glob: 7.1.6
-
- /run-parallel/1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- dependencies:
- queue-microtask: 1.2.3
-
- /rxjs/6.6.7:
- resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
- engines: {npm: '>=2.0.0'}
- dependencies:
- tslib: 1.14.1
- dev: true
-
- /safe-buffer/5.1.2:
- resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
- dev: true
-
- /safer-buffer/2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- dev: true
-
- /saxes/5.0.1:
- resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==}
- engines: {node: '>=10'}
- dependencies:
- xmlchars: 2.2.0
- dev: true
-
- /semver-compare/1.0.0:
- resolution: {integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w=}
- dev: true
-
- /semver/6.3.0:
- resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
- hasBin: true
-
- /semver/7.3.5:
- resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- lru-cache: 6.0.0
- dev: true
-
- /semver/7.3.7:
- resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- lru-cache: 6.0.0
- dev: true
-
- /shebang-command/2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
- dependencies:
- shebang-regex: 3.0.0
-
- /shebang-regex/3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- /signal-exit/3.0.3:
- resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==}
-
- /sisteransi/1.0.5:
- resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
- dev: true
-
- /slash/3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
-
- /slice-ansi/3.0.0:
- resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
- engines: {node: '>=8'}
- dependencies:
- ansi-styles: 4.3.0
- astral-regex: 2.0.0
- is-fullwidth-code-point: 3.0.0
- dev: true
-
- /slice-ansi/4.0.0:
- resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
- engines: {node: '>=10'}
- dependencies:
- ansi-styles: 4.3.0
- astral-regex: 2.0.0
- is-fullwidth-code-point: 3.0.0
- dev: true
-
- /source-map-support/0.5.19:
- resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==}
- dependencies:
- buffer-from: 1.1.1
- source-map: 0.6.1
- dev: true
-
- /source-map/0.5.7:
- resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=}
- engines: {node: '>=0.10.0'}
dev: true
- /source-map/0.6.1:
- resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
- engines: {node: '>=0.10.0'}
+ /diff/4.0.2:
+ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
+ engines: {node: '>=0.3.1'}
dev: true
- /source-map/0.7.3:
- resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==}
- engines: {node: '>= 8'}
+ /escape-string-regexp/2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
dev: true
- /sprintf-js/1.0.3:
- resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
+ /escape-string-regexp/4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
dev: true
- /stack-utils/2.0.3:
- resolution: {integrity: sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==}
+ /execa/5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'}
dependencies:
- escape-string-regexp: 2.0.0
+ cross-spawn: 7.0.3
+ get-stream: 6.0.0
+ human-signals: 2.1.0
+ is-stream: 2.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.3
+ strip-final-newline: 2.0.0
dev: true
- /string-argv/0.3.1:
- resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
- engines: {node: '>=0.6.19'}
+ /form-data/3.0.0:
+ resolution: {integrity: sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.27
dev: true
- /string-length/4.0.2:
- resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ /get-stream/6.0.0:
+ resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==}
engines: {node: '>=10'}
- dependencies:
- char-regex: 1.0.2
- strip-ansi: 6.0.1
dev: true
- /string-width/4.2.2:
- resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==}
+ /has-flag/4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- dependencies:
- emoji-regex: 8.0.0
- is-fullwidth-code-point: 3.0.0
- strip-ansi: 6.0.1
dev: true
- /stringify-object/3.3.0:
- resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
- engines: {node: '>=4'}
- dependencies:
- get-own-enumerable-property-symbols: 3.0.2
- is-obj: 1.0.1
- is-regexp: 1.0.0
+ /human-signals/2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
dev: true
- /strip-ansi/6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
+ /husky/7.0.4:
+ resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==}
+ engines: {node: '>=12'}
+ hasBin: true
+ dev: true
+
+ /is-ci/3.0.1:
+ resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
+ hasBin: true
dependencies:
- ansi-regex: 5.0.1
+ ci-info: 3.2.0
+ dev: true
- /strip-bom/4.0.0:
- resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ /is-stream/2.0.0:
+ resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==}
engines: {node: '>=8'}
dev: true
- /strip-final-newline/2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
+ /isexe/2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ dev: true
- /strip-json-comments/3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
+ /lodash.deburr/4.1.0:
+ resolution: {integrity: sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=}
dev: true
- /supports-color/5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
- dependencies:
- has-flag: 3.0.0
+ /make-error/1.3.6:
+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
dev: true
- /supports-color/7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
- dependencies:
- has-flag: 4.0.0
+ /merge-stream/2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ dev: true
- /supports-color/8.1.1:
- resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
- engines: {node: '>=10'}
- dependencies:
- has-flag: 4.0.0
+ /mime-db/1.44.0:
+ resolution: {integrity: sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==}
+ engines: {node: '>= 0.6'}
dev: true
- /supports-hyperlinks/2.2.0:
- resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==}
- engines: {node: '>=8'}
+ /mime-types/2.1.27:
+ resolution: {integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==}
+ engines: {node: '>= 0.6'}
dependencies:
- has-flag: 4.0.0
- supports-color: 7.2.0
+ mime-db: 1.44.0
dev: true
- /symbol-tree/3.2.4:
- resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+ /mimic-fn/2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
dev: true
- /temp-dir/2.0.0:
- resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
- engines: {node: '>=8'}
- dev: false
-
- /tempy/1.0.1:
- resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==}
- engines: {node: '>=10'}
+ /node-fetch/2.6.7:
+ resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
dependencies:
- del: 6.1.1
- is-stream: 2.0.0
- temp-dir: 2.0.0
- type-fest: 0.16.0
- unique-string: 2.0.0
- dev: false
+ whatwg-url: 5.0.0
+ dev: true
- /terminal-link/2.1.1:
- resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
+ /npm-run-path/4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
dependencies:
- ansi-escapes: 4.3.2
- supports-hyperlinks: 2.2.0
+ path-key: 3.1.1
dev: true
- /test-exclude/6.0.0:
- resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
- engines: {node: '>=8'}
+ /onetime/5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
dependencies:
- '@istanbuljs/schema': 0.1.3
- glob: 7.1.6
- minimatch: 3.1.2
+ mimic-fn: 2.1.0
dev: true
- /text-table/0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ /path-key/3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
dev: true
- /throat/6.0.1:
- resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==}
+ /prettier/2.7.1:
+ resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
dev: true
- /through/2.3.8:
- resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=}
+ /shebang-command/2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
dev: true
- /tmpl/1.0.4:
- resolution: {integrity: sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=}
+ /shebang-regex/3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
dev: true
- /to-fast-properties/2.0.0:
- resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
- engines: {node: '>=4'}
+ /signal-exit/3.0.3:
+ resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==}
dev: true
- /to-regex-range/5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
- dependencies:
- is-number: 7.0.0
-
- /tough-cookie/4.0.0:
- resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==}
+ /strip-final-newline/2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
- dependencies:
- psl: 1.8.0
- punycode: 2.1.1
- universalify: 0.1.2
dev: true
- /tr46/0.0.3:
- resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=}
-
- /tr46/2.1.0:
- resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==}
+ /supports-color/7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
dependencies:
- punycode: 2.1.1
+ has-flag: 4.0.0
dev: true
- /ts-jest/27.1.5_6400e448c8ce26641831d9829b55a941:
- resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- hasBin: true
- peerDependencies:
- '@babel/core': '>=7.0.0-beta.0 <8'
- '@types/jest': ^27.0.0
- babel-jest: '>=27.0.0 <28'
- esbuild: '*'
- jest: ^27.0.0
- typescript: '>=3.8 <5.0'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- '@types/jest':
- optional: true
- babel-jest:
- optional: true
- esbuild:
- optional: true
- dependencies:
- '@types/jest': 27.5.2
- bs-logger: 0.2.6
- fast-json-stable-stringify: 2.1.0
- jest: 27.5.1_ts-node@10.8.1
- jest-util: 27.5.1
- json5: 2.2.0
- lodash.memoize: 4.1.2
- make-error: 1.3.6
- semver: 7.3.5
- typescript: 4.7.4
- yargs-parser: 20.2.9
+ /tr46/0.0.3:
+ resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=}
dev: true
/ts-node/10.8.1_841f2a74d64cdda652a10d589e346265:
@@ -3787,146 +389,18 @@ packages:
yn: 3.1.1
dev: true
- /tslib/1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
- dev: true
-
- /tsutils/3.21.0_typescript@4.7.4:
- resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
- engines: {node: '>= 6'}
- peerDependencies:
- typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
- dependencies:
- tslib: 1.14.1
- typescript: 4.7.4
- dev: true
-
- /type-check/0.3.2:
- resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- prelude-ls: 1.1.2
- dev: true
-
- /type-check/0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- prelude-ls: 1.2.1
- dev: true
-
- /type-detect/4.0.8:
- resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
- engines: {node: '>=4'}
- dev: true
-
- /type-fest/0.16.0:
- resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
- engines: {node: '>=10'}
- dev: false
-
- /type-fest/0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
- dev: true
-
- /type-fest/0.21.3:
- resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
- engines: {node: '>=10'}
- dev: true
-
- /type-fest/0.8.1:
- resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
- engines: {node: '>=8'}
- dev: false
-
- /typedarray-to-buffer/3.1.5:
- resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
- dependencies:
- is-typedarray: 1.0.0
- dev: true
-
/typescript/4.7.4:
resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
engines: {node: '>=4.2.0'}
hasBin: true
dev: true
- /unique-string/2.0.0:
- resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
- engines: {node: '>=8'}
- dependencies:
- crypto-random-string: 2.0.0
- dev: false
-
- /universalify/0.1.2:
- resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
- engines: {node: '>= 4.0.0'}
- dev: true
-
- /uri-js/4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
- dependencies:
- punycode: 2.1.1
- dev: true
-
/v8-compile-cache-lib/3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
dev: true
- /v8-compile-cache/2.3.0:
- resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
- dev: true
-
- /v8-to-istanbul/8.1.0:
- resolution: {integrity: sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==}
- engines: {node: '>=10.12.0'}
- dependencies:
- '@types/istanbul-lib-coverage': 2.0.3
- convert-source-map: 1.8.0
- source-map: 0.7.3
- dev: true
-
- /w3c-hr-time/1.0.2:
- resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==}
- dependencies:
- browser-process-hrtime: 1.0.0
- dev: true
-
- /w3c-xmlserializer/2.0.0:
- resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==}
- engines: {node: '>=10'}
- dependencies:
- xml-name-validator: 3.0.0
- dev: true
-
- /walker/1.0.7:
- resolution: {integrity: sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=}
- dependencies:
- makeerror: 1.0.11
- dev: true
-
/webidl-conversions/3.0.1:
resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=}
-
- /webidl-conversions/5.0.0:
- resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==}
- engines: {node: '>=8'}
- dev: true
-
- /webidl-conversions/6.1.0:
- resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==}
- engines: {node: '>=10.4'}
- dev: true
-
- /whatwg-encoding/1.0.5:
- resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==}
- dependencies:
- iconv-lite: 0.4.24
- dev: true
-
- /whatwg-mimetype/2.3.0:
- resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==}
dev: true
/whatwg-url/5.0.0:
@@ -3934,14 +408,6 @@ packages:
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
-
- /whatwg-url/8.7.0:
- resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==}
- engines: {node: '>=10'}
- dependencies:
- lodash: 4.17.21
- tr46: 2.1.0
- webidl-conversions: 6.1.0
dev: true
/which/2.0.2:
@@ -3950,93 +416,6 @@ packages:
hasBin: true
dependencies:
isexe: 2.0.0
-
- /word-wrap/1.2.3:
- resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /wrap-ansi/6.2.0:
- resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
- engines: {node: '>=8'}
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.2
- strip-ansi: 6.0.1
- dev: true
-
- /wrap-ansi/7.0.0:
- resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
- engines: {node: '>=10'}
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.2
- strip-ansi: 6.0.1
- dev: true
-
- /wrappy/1.0.2:
- resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
-
- /write-file-atomic/3.0.3:
- resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
- dependencies:
- imurmurhash: 0.1.4
- is-typedarray: 1.0.0
- signal-exit: 3.0.3
- typedarray-to-buffer: 3.1.5
- dev: true
-
- /ws/7.5.1:
- resolution: {integrity: sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==}
- engines: {node: '>=8.3.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: ^5.0.2
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
- dev: true
-
- /xml-name-validator/3.0.0:
- resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}
- dev: true
-
- /xmlchars/2.2.0:
- resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
- dev: true
-
- /y18n/5.0.8:
- resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
- engines: {node: '>=10'}
- dev: true
-
- /yallist/4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
- dev: true
-
- /yaml/1.10.0:
- resolution: {integrity: sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==}
- engines: {node: '>= 6'}
- dev: true
-
- /yargs-parser/20.2.9:
- resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
- engines: {node: '>=10'}
- dev: true
-
- /yargs/16.2.0:
- resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
- engines: {node: '>=10'}
- dependencies:
- cliui: 7.0.4
- escalade: 3.1.1
- get-caller-file: 2.0.5
- require-directory: 2.1.1
- string-width: 4.2.2
- y18n: 5.0.8
- yargs-parser: 20.2.9
dev: true
/yn/3.1.1:
diff --git a/renovate.json b/renovate.json
index 137292dea..1ed24a59a 100644
--- a/renovate.json
+++ b/renovate.json
@@ -12,5 +12,5 @@
}
],
"schedule": ["before 8am on Wednesday"],
- "reviewers": ["@jolg42", "@millsp"]
+ "reviewers": ["@jolg42", "@millsp", "@aqrln"]
}
diff --git a/scripts/publish.ts b/scripts/publish.ts
index 3c592a10b..6a12ed952 100644
--- a/scripts/publish.ts
+++ b/scripts/publish.ts
@@ -74,57 +74,6 @@ async function main(dryRun = false) {
`pnpm publish --no-git-checks --tag ${npmDistTag}`,
dryRun,
)
-
- // @prisma/get-platform
- adjustPkgJson('packages/get-platform/package.json', (pkg) => {
- pkg.version = newVersion
- })
-
- await run('packages/get-platform', `pnpm run build`, dryRun)
-
- await run(
- 'packages/get-platform',
- `pnpm publish --no-git-checks --tag ${npmDistTag}`,
- dryRun,
- )
-
- // @prisma/fetch-engine
- adjustPkgJson('packages/fetch-engine/package.json', (pkg) => {
- pkg.version = newVersion
- })
-
- await run(
- 'packages/fetch-engine',
- `pnpm i @prisma/engines-version@${newVersion} @prisma/get-platform@${newVersion}`,
- dryRun,
- )
-
- await run('packages/fetch-engine', `pnpm run build`, dryRun)
-
- await run(
- 'packages/fetch-engine',
- `pnpm publish --no-git-checks --tag ${npmDistTag}`,
- dryRun,
- )
-
- // @prisma/engines
- adjustPkgJson('packages/engines/package.json', (pkg) => {
- pkg.version = newVersion
- })
-
- await run(
- 'packages/engines',
- `pnpm i @prisma/fetch-engine@${newVersion} @prisma/engines-version@${newVersion}`,
- dryRun,
- )
-
- await run('packages/engines', `pnpm run build`, dryRun)
-
- await run(
- 'packages/engines',
- `pnpm publish --no-git-checks --tag ${npmDistTag}`,
- dryRun,
- )
}
/** Apply call back function to content of file and write it back */