diff --git a/.buildkite/test/run.sh b/.buildkite/test/run.sh index e3b88e7415b7..08c0f74f580c 100755 --- a/.buildkite/test/run.sh +++ b/.buildkite/test/run.sh @@ -41,20 +41,32 @@ function retry { return 0 } -# Only for job 2 = Node-API -if [ "$BUILDKITE_PARALLEL_JOB" = "2" ]; then - export PRISMA_FORCE_NAPI=true +# The below is required as during install required engines are downloaded, so this makes sure the engines being tested are already present + +# JOB 0 - Node-API Library +if [ "$BUILDKITE_PARALLEL_JOB" = "0" ]; then + export PRISMA_CLIENT_ENGINE_TYPE='library' + export PRISMA_CLI_QUERY_ENGINE_TYPE='library' +fi +# JOB 1 - Binary +if [ "$BUILDKITE_PARALLEL_JOB" = "1" ]; then + export PRISMA_CLIENT_ENGINE_TYPE='binary' + export PRISMA_CLI_QUERY_ENGINE_TYPE='binary' fi npm i --silent -g pnpm@6 --unsafe-perm retry 6 pnpm i --no-prefer-frozen-lockfile -# Only run lint for job 0 + +# JOB 0 if [ "$BUILDKITE_PARALLEL_JOB" = "0" ]; then - pnpm run lint + # Only run lint for job 0 + pnpm run lint fi + + node -v npm -v diff --git a/.buildkite/test/test.yml b/.buildkite/test/test.yml index 1869b2dd0bf4..2fff88968f23 100644 --- a/.buildkite/test/test.yml +++ b/.buildkite/test/test.yml @@ -1,6 +1,6 @@ steps: - label: ':coverage: Test %n - Node 14 (Search for `BUILDKITE_PARALLEL_JOB` in test output for definition what is being tested)' - parallelism: 3 + parallelism: 2 timeout_in_minutes: 25 plugins: - docker-compose#v3.8.0: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8af70dceb503..d6509cec0ee4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -116,7 +116,7 @@ jobs: strategy: fail-fast: false matrix: - engine: ['napi', 'binary'] + engineType: ['library', 'binary'] os: [ubuntu-20.04] # macos-latest, windows-latest node: [12] @@ -124,9 +124,8 @@ jobs: - uses: actions/checkout@v2 - name: Set Engine Type - if: ${{ matrix.engine == 'napi' }} run: | - echo "PRISMA_FORCE_NAPI=true" >> $GITHUB_ENV + echo "PRISMA_CLIENT_ENGINE_TYPE={{ matrix.engine }}" >> $GITHUB_ENV - run: docker-compose -f docker/docker-compose.yml up --detach postgres postgres_isolated mysql mysql_isolated mssql @@ -225,7 +224,7 @@ jobs: strategy: fail-fast: false matrix: - engine: ['napi', 'binary'] + engineType: ['library', 'binary'] database: - sqlite - postgres @@ -238,9 +237,8 @@ jobs: - uses: actions/checkout@v2 - name: Set Engine Type - if: ${{ matrix.engine == 'napi' }} run: | - echo "PRISMA_FORCE_NAPI=true" >> $GITHUB_ENV + echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.engine }}" >> $GITHUB_ENV - run: docker-compose -f docker/docker-compose.yml up --detach ${{matrix.database}} if: matrix.database != 'sqlite' @@ -302,17 +300,16 @@ jobs: strategy: fail-fast: false matrix: - engine: ['napi', 'binary'] + cliQueryEngine: ['library', 'binary'] os: [ubuntu-20.04] # macos-latest, windows-latest node: [12] steps: - uses: actions/checkout@v2 - - name: Set Engine Type - if: ${{ matrix.engine == 'napi' }} + - name: Set CLI Engine Type run: | - echo "PRISMA_FORCE_NAPI=true" >> $GITHUB_ENV + echo "PRISMA_CLI_QUERY_ENGINE_TYPE={{ matrix.cliQueryEngine }}" >> $GITHUB_ENV - name: Cache .pnpm-store # From https://pnpm.io/continuous-integration uses: actions/cache@v1 @@ -356,7 +353,7 @@ jobs: strategy: fail-fast: false matrix: - engine: ['napi', 'binary'] + cliQueryEngine: ['library', 'binary'] os: [ubuntu-20.04] # macos-latest, windows-latest node: [12] @@ -365,10 +362,9 @@ jobs: - run: docker-compose -f docker/docker-compose.yml up --detach postgres mysql mssql - - name: Set Engine Type - if: ${{ matrix.engine == 'napi' }} + - name: Set CLI Engine Type run: | - echo "PRISMA_FORCE_NAPI=true" >> $GITHUB_ENV + echo "PRISMA_CLI_QUERY_ENGINE_TYPE={{ matrix.cliQueryEngine }}" >> $GITHUB_ENV - name: Cache .pnpm-store # From https://pnpm.io/continuous-integration uses: actions/cache@v1 @@ -424,17 +420,16 @@ jobs: strategy: fail-fast: false matrix: - engine: ['napi', 'binary'] + cliQueryEngine: ['library', 'binary'] os: [ubuntu-20.04] # macos-latest, windows-latest node: [12] steps: - uses: actions/checkout@v2 - - name: Set Engine Type - if: ${{ matrix.engine == 'napi' }} + - name: Set CLI Engine Type run: | - echo "PRISMA_FORCE_NAPI=true" >> $GITHUB_ENV + echo "PRISMA_CLI_QUERY_ENGINE_TYPE={{ matrix.cliQueryEngine }}" >> $GITHUB_ENV - name: Cache .pnpm-store # From https://pnpm.io/continuous-integration uses: actions/cache@v1 diff --git a/package.json b/package.json index 572647ce63c0..cdcf8871151b 100644 --- a/package.json +++ b/package.json @@ -21,21 +21,16 @@ "bench": "ts-node scripts/bench.ts | tee output.txt", "prepare": "is-ci || husky install" }, - "pnpm": { - "overrides": { - "@prisma/sdk": "2.29.0" - } - }, "devDependencies": { "@sindresorhus/slugify": "1.1.2", "@slack/webhook": "6.0.0", "@types/benchmark": "2.1.1", "@types/debug": "4.1.7", "@types/graphviz": "0.0.33", - "@types/node": "14.17.7", + "@types/node": "14.17.9", "@types/redis": "2.8.31", - "@typescript-eslint/eslint-plugin": "4.29.0", - "@typescript-eslint/parser": "4.29.0", + "@typescript-eslint/eslint-plugin": "4.29.1", + "@typescript-eslint/parser": "4.29.1", "arg": "5.0.0", "batching-toposort": "1.2.0", "benchmark": "2.1.4", @@ -61,7 +56,7 @@ "redis-lock": "0.1.4", "semver": "7.3.5", "staged-git-files": "1.2.0", - "ts-node": "10.1.0", + "ts-node": "10.2.0", "typescript": "4.3.5" } -} +} \ No newline at end of file diff --git a/packages/README.md b/packages/README.md deleted file mode 100644 index 0446a12a5d88..000000000000 --- a/packages/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Prisma CLI architecture (Not up-to-date) - -``` - - - - ╔══════════════════╗ - ║ ║ - ║ prisma2 ║ - ┌────────────────────────────────▶║ ║◀─────────────────────────────┐ - │ ╚══════════════════╝ │ - │ prisma/prisma2-cli │ - │ ▲ ▲ ▲ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ ┌──────────────────┘ │ └───────────────────┐ │ - │ │ │ │ │ - │ │ │ │ │ - │ ╔═════════╩════════╗ ╔═════════╩════════╗ ╔═══════════╩═══════════╗ │ - │ ║ ║◀ ─ ╣ ║ ║ ║ │ - │ ║ @prisma/photon ║ ║ @prisma/migrate ║ ║ @prisma/introspection ║ │ - │ ║ ╠───▶║ ║ ║ ║ │ - │ ╚══════════════════╝ ╚══════════════════╝ ╚═══════════════════════╝ │ - │ prisma/photon-js prisma/migrate prisma/prisma2-cli │ - │ ▲ ▲ ▲ ▲ ▲ │ - │ │ │ │ │ │ │ - │ ─ ─ ─ ─ ─ ─ │ └─────────────┐ │ │ │ - │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ │ │ │ │ - │ ╔═════════╩═════════════╗ ╠═════════╩════════╦───────────────┘ │ - │ │ ║ ║ ║ ║ │ - │ ║ @prisma/engine-core ║ ║ @prisma/cli ╠──────────────────────────────┘ - │ │ ║ ║ ║ ║ - │ ╚═══════════════════════╝ ╚══════════════════╝ - │ │ ▲ prisma/photon-js prisma/prisma2-cli - │ │ - ╔════════════════════╩═╩═╦ ─ - ║ ║ - ║ @prisma/fetch-engine ║ - ║ ║ - ╚════════════════════════╝ - prisma/photon-js -``` diff --git a/packages/cli/package.json b/packages/cli/package.json index 7e1dfea8d983..767453e926a6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -63,18 +63,18 @@ "devDependencies": { "@prisma/client": "workspace:*", "@prisma/debug": "workspace:*", - "@prisma/fetch-engine": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/fetch-engine": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@prisma/generator-helper": "workspace:*", - "@prisma/get-platform": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/get-platform": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@prisma/migrate": "workspace:*", "@prisma/sdk": "workspace:*", "@prisma/studio-server": "0.419.0", "@timsuchanek/copy": "1.4.5", - "@types/jest": "26.0.24", + "@types/jest": "27.0.0", "@types/rimraf": "3.0.1", "@types/ws": "7.4.7", - "@typescript-eslint/eslint-plugin": "4.29.0", - "@typescript-eslint/parser": "4.29.0", + "@typescript-eslint/eslint-plugin": "4.29.1", + "@typescript-eslint/parser": "4.29.1", "chalk": "4.1.2", "checkpoint-client": "1.1.20", "dotenv": "10.0.0", @@ -87,14 +87,14 @@ "eslint-plugin-prettier": "3.4.0", "execa": "5.1.1", "fast-deep-equal": "3.1.3", - "fs-jetpack": "4.1.0", + "fs-jetpack": "4.1.1", "get-port": "5.1.1", "global-dirs": "3.0.0", "indent-string": "4.0.0", "is-installed-globally": "0.4.0", "jest": "27.0.6", "line-replace": "2.0.1", - "lint-staged": "11.1.1", + "lint-staged": "11.1.2", "log-update": "4.0.0", "make-dir": "3.1.0", "node-fetch": "2.6.1", @@ -127,7 +127,7 @@ "precommit": "lint-staged" }, "dependencies": { - "@prisma/engines": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a" + "@prisma/engines": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf" }, "lint-staged": { "*.ts": [ diff --git a/packages/cli/src/Version.ts b/packages/cli/src/Version.ts index 5a1054274234..19f0c399384f 100644 --- a/packages/cli/src/Version.ts +++ b/packages/cli/src/Version.ts @@ -1,3 +1,4 @@ +import { getCliQueryEngineBinaryType } from '@prisma/engines' import { getPlatform } from '@prisma/get-platform' import { arg, @@ -66,15 +67,13 @@ export class Version implements Command { } const platform = await getPlatform() - const useNodeAPI = process.env.PRISMA_FORCE_NAPI === 'true' + const cliQueryEngineBinaryType = getCliQueryEngineBinaryType() const introspectionEngine = await this.resolveEngine( BinaryType.introspectionEngine, ) const migrationEngine = await this.resolveEngine(BinaryType.migrationEngine) // TODO This conditional does not really belong here, CLI should be able to tell you which engine it is _actually_ using - const queryEngine = await this.resolveEngine( - useNodeAPI ? BinaryType.libqueryEngine : BinaryType.queryEngine, - ) + const queryEngine = await this.resolveEngine(cliQueryEngineBinaryType) const fmtBinary = await this.resolveEngine(BinaryType.prismaFmt) const prismaClientVersion = await getInstalledPrismaClientVersion() @@ -84,7 +83,11 @@ export class Version implements Command { ['@prisma/client', prismaClientVersion ?? 'Not found'], ['Current platform', platform], [ - `Query Engine${useNodeAPI ? ' (Node-API)' : ''}`, + `Query Engine${ + cliQueryEngineBinaryType === BinaryType.libqueryEngine + ? ' (Node-API)' + : ' (Binary)' + }`, this.printBinaryInfo(queryEngine), ], ['Migration Engine', this.printBinaryInfo(migrationEngine)], diff --git a/packages/cli/src/__tests__/__snapshots__/version.test.ts.snap b/packages/cli/src/__tests__/__snapshots__/version.test.ts.snap index 26cc5fad73d8..066c21d37c9f 100644 --- a/packages/cli/src/__tests__/__snapshots__/version.test.ts.snap +++ b/packages/cli/src/__tests__/__snapshots__/version.test.ts.snap @@ -13,15 +13,15 @@ Studio : placeholder `; exports[`version basic version 1`] = ` -prisma : placeholder -@prisma/client : placeholder -Current platform : placeholder -Query Engine : placeholder -Migration Engine : placeholder -Introspection Engine : placeholder -Format Binary : placeholder -Default Engines Hash : placeholder -Studio : placeholder +prisma : placeholder +@prisma/client : placeholder +Current platform : placeholder +Query Engine (Binary) : placeholder +Migration Engine : placeholder +Introspection Engine : placeholder +Format Binary : placeholder +Default Engines Hash : placeholder +Studio : placeholder `; exports[`version version with custom binaries (Node-API) 1`] = ` @@ -37,13 +37,13 @@ Studio : placeholder `; exports[`version version with custom binaries 1`] = ` -prisma : placeholder -@prisma/client : placeholder -Current platform : placeholder -Query Engine : placeholder -Migration Engine : placeholder -Introspection Engine : placeholder -Format Binary : placeholder -Default Engines Hash : placeholder -Studio : placeholder +prisma : placeholder +@prisma/client : placeholder +Current platform : placeholder +Query Engine (Binary) : placeholder +Migration Engine : placeholder +Introspection Engine : placeholder +Format Binary : placeholder +Default Engines Hash : placeholder +Studio : placeholder `; diff --git a/packages/cli/src/__tests__/version.test.ts b/packages/cli/src/__tests__/version.test.ts index b4224c737d9b..ce639f528b10 100644 --- a/packages/cli/src/__tests__/version.test.ts +++ b/packages/cli/src/__tests__/version.test.ts @@ -1,4 +1,5 @@ -import { download } from '@prisma/fetch-engine' +import { getCliQueryEngineBinaryType } from '@prisma/engines' +import { BinaryType, download } from '@prisma/fetch-engine' import { getPlatform } from '@prisma/get-platform' import { engineEnvVarMap } from '@prisma/sdk' import makeDir from 'make-dir' @@ -7,7 +8,7 @@ import { consoleContext, Context } from './__helpers__/context' const ctx = Context.new().add(consoleContext()).assemble() const testIf = (condition: boolean) => (condition ? test : test.skip) -const useNodeAPI = process.env.PRISMA_FORCE_NAPI === 'true' +const useNodeAPI = getCliQueryEngineBinaryType() === BinaryType.libqueryEngine const version = 'e6bd3dc12d849124a04c3a8e6bd9c194381afda3' describe('version', () => { diff --git a/packages/client/fixtures/blog/main.ts b/packages/client/fixtures/blog/main.ts index b601d025865d..05ffd4e8c1f9 100644 --- a/packages/client/fixtures/blog/main.ts +++ b/packages/client/fixtures/blog/main.ts @@ -24,7 +24,10 @@ async function main() { _count: true, }) const count = await prisma.user.count() + console.log({ + //@ts-ignore + engineType: prisma._clientEngineType, aggregate, groupBy, count, diff --git a/packages/client/fixtures/blog/prisma/schema.prisma b/packages/client/fixtures/blog/prisma/schema.prisma index 7eecd45dc2f2..fc7a9da27be6 100644 --- a/packages/client/fixtures/blog/prisma/schema.prisma +++ b/packages/client/fixtures/blog/prisma/schema.prisma @@ -5,7 +5,8 @@ datasource db { generator client { provider = "prisma-client-js" - previewFeatures = ["napi", "selectRelationCount"] + previewFeatures = ["selectRelationCount"] + engineType = "binary" } model Events { diff --git a/packages/client/package.json b/packages/client/package.json index 6e1a2bb2c6ae..54b3426fa8e4 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -61,21 +61,21 @@ "devDependencies": { "@prisma/debug": "workspace:*", "@prisma/engine-core": "workspace:*", - "@prisma/engines": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", - "@prisma/fetch-engine": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/engines": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", + "@prisma/fetch-engine": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@prisma/generator-helper": "workspace:*", - "@prisma/get-platform": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/get-platform": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@prisma/migrate": "workspace:*", "@prisma/sdk": "workspace:*", "@timsuchanek/copy": "1.4.5", "@types/debug": "4.1.7", - "@types/jest": "26.0.24", + "@types/jest": "27.0.0", "@types/js-levenshtein": "1.1.0", "@types/mssql": "6.0.8", - "@types/node": "12.20.18", + "@types/node": "12.20.19", "@types/pg": "8.6.1", - "@typescript-eslint/eslint-plugin": "4.29.0", - "@typescript-eslint/parser": "4.29.0", + "@typescript-eslint/eslint-plugin": "4.29.1", + "@typescript-eslint/parser": "4.29.1", "arg": "5.0.0", "chalk": "4.1.2", "decimal.js": "10.3.1", @@ -96,7 +96,7 @@ "jest": "27.0.6", "js-levenshtein": "1.1.6", "klona": "2.0.4", - "lint-staged": "11.1.1", + "lint-staged": "11.1.2", "make-dir": "3.1.0", "mariadb": "2.5.4", "mssql": "7.2.0", @@ -106,7 +106,7 @@ "prettier": "2.3.2", "replace-string": "3.1.0", "rimraf": "3.0.2", - "rollup": "2.55.1", + "rollup": "2.56.2", "rollup-plugin-dts": "3.0.2", "sort-keys": "4.2.0", "source-map-support": "0.5.19", @@ -115,7 +115,7 @@ "strip-ansi": "6.0.0", "strip-indent": "3.0.0", "ts-jest": "27.0.4", - "ts-node": "10.1.0", + "ts-node": "10.2.0", "tsd": "0.17.0", "typescript": "4.3.5" }, @@ -128,7 +128,7 @@ } }, "dependencies": { - "@prisma/engines-version": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a" + "@prisma/engines-version": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf" }, "lint-staged": { "*.ts": [ diff --git a/packages/client/src/__tests__/binaryEngine.test.ts b/packages/client/src/__tests__/binaryEngine.test.ts index 6212eaa12036..53309ff1aeb4 100644 --- a/packages/client/src/__tests__/binaryEngine.test.ts +++ b/packages/client/src/__tests__/binaryEngine.test.ts @@ -1,11 +1,15 @@ import { BinaryEngine } from '@prisma/engine-core' import path from 'path' +import { + ClientEngineType, + getClientEngineType, +} from '../runtime/utils/getClientEngineType' describe('BinaryEngine', () => { test('should error correctly with invalid flags', async () => { // Skip for Node-API library // TODO Better scoping when to run this test so this conditional is not necessary - if (process.env.PRISMA_FORCE_NAPI === 'true') { + if (getClientEngineType() === ClientEngineType.Library) { return } diff --git a/packages/client/src/__tests__/generation/generator.test.ts b/packages/client/src/__tests__/generation/generator.test.ts index f78958b757c4..bc9009a15d70 100644 --- a/packages/client/src/__tests__/generation/generator.test.ts +++ b/packages/client/src/__tests__/generation/generator.test.ts @@ -5,6 +5,10 @@ import rimraf from 'rimraf' import stripAnsi from 'strip-ansi' import { promisify } from 'util' import { omit } from '../../omit' +import { + ClientEngineType, + getClientEngineType, +} from '../../runtime/utils/getClientEngineType' const del = promisify(rimraf) jest.setTimeout(30000) @@ -43,7 +47,7 @@ describe('generator', () => { } manifest.requiresEngineVersion = 'ENGINE_VERSION_TEST' - if (process.env.PRISMA_FORCE_NAPI) { + if (getClientEngineType() === ClientEngineType.Library) { expect(manifest).toMatchInlineSnapshot(` Object { defaultOutput: .prisma/client, @@ -214,7 +218,7 @@ describe('generator', () => { } manifest.requiresEngineVersion = 'ENGINE_VERSION_TEST' - if (process.env.PRISMA_FORCE_NAPI) { + if (getClientEngineType(generator.config) === ClientEngineType.Library) { expect(manifest).toMatchInlineSnapshot(` Object { defaultOutput: .prisma/client, diff --git a/packages/client/src/__tests__/integration/errors/corruption/test.ts b/packages/client/src/__tests__/integration/errors/corruption/test.ts index f989161a9b5f..4817471ff427 100644 --- a/packages/client/src/__tests__/integration/errors/corruption/test.ts +++ b/packages/client/src/__tests__/integration/errors/corruption/test.ts @@ -1,6 +1,10 @@ import { getNodeAPIName, getPlatform } from '@prisma/get-platform' import fs from 'fs' import path from 'path' +import { + ClientEngineType, + getClientEngineType, +} from '../../../../runtime/utils/getClientEngineType' import { generateTestClient } from '../../../../utils/getTestClient' test('corruption of query engine binary', async () => { @@ -12,7 +16,7 @@ test('corruption of query engine binary', async () => { const binaryPath = path.join( __dirname, 'node_modules/.prisma/client', - process.env.PRISMA_FORCE_NAPI + getClientEngineType() === ClientEngineType.Library ? getNodeAPIName(platform, 'fs') : `query-engine-${platform}`, ) diff --git a/packages/client/src/__tests__/integration/errors/error-link/test.ts b/packages/client/src/__tests__/integration/errors/error-link/test.ts index 456ab4e8fe04..e7f0b83a7199 100644 --- a/packages/client/src/__tests__/integration/errors/error-link/test.ts +++ b/packages/client/src/__tests__/integration/errors/error-link/test.ts @@ -1,10 +1,15 @@ +import { + ClientEngineType, + getClientEngineType, +} from '../../../../runtime/utils/getClientEngineType' import { getTestClient } from '../../../../utils/getTestClient' test('error-link', async () => { // TODO triggerPanic has not been implemented for Node-API: https://github.com/prisma/prisma/issues/7810 - if (process.env.PRISMA_FORCE_NAPI === 'true') { + if (getClientEngineType() === ClientEngineType.Library) { return } + expect.assertions(1) const PrismaClient = await getTestClient() diff --git a/packages/client/src/__tests__/integration/errors/missing-binary-native-binaryTarget/test.ts b/packages/client/src/__tests__/integration/errors/missing-binary-native-binaryTarget/test.ts index bba93f112f07..bb8d797f94ec 100644 --- a/packages/client/src/__tests__/integration/errors/missing-binary-native-binaryTarget/test.ts +++ b/packages/client/src/__tests__/integration/errors/missing-binary-native-binaryTarget/test.ts @@ -1,6 +1,10 @@ import { getNodeAPIName, getPlatform } from '@prisma/get-platform' import fs from 'fs' import path from 'path' +import { + ClientEngineType, + getClientEngineType, +} from '../../../../runtime/utils/getClientEngineType' import { generateTestClient } from '../../../../utils/getTestClient' test('missing binary, native binaryTarget', async () => { @@ -10,17 +14,18 @@ test('missing binary, native binaryTarget', async () => { const { PrismaClient } = require('./node_modules/@prisma/client') const platform = await getPlatform() - const binaryPath = process.env.PRISMA_FORCE_NAPI - ? path.join( - __dirname, - 'node_modules/.prisma/client', - getNodeAPIName(platform, 'fs'), - ) - : path.join( - __dirname, - 'node_modules/.prisma/client', - `query-engine-${platform}`, - ) + const binaryPath = + getClientEngineType() === ClientEngineType.Library + ? path.join( + __dirname, + 'node_modules/.prisma/client', + getNodeAPIName(platform, 'fs'), + ) + : path.join( + __dirname, + 'node_modules/.prisma/client', + `query-engine-${platform}`, + ) fs.unlinkSync(binaryPath) const prisma = new PrismaClient({ log: [ @@ -31,7 +36,7 @@ test('missing binary, native binaryTarget', async () => { ], }) - if (process.env.PRISMA_FORCE_NAPI) { + if (getClientEngineType() === ClientEngineType.Library) { await expect(async () => { await prisma.user.findMany() }).rejects.toThrowErrorMatchingInlineSnapshot(` diff --git a/packages/client/src/__tests__/integration/errors/missing-binary/test.ts b/packages/client/src/__tests__/integration/errors/missing-binary/test.ts index 8dc6b60a4d6c..00f9ac751716 100644 --- a/packages/client/src/__tests__/integration/errors/missing-binary/test.ts +++ b/packages/client/src/__tests__/integration/errors/missing-binary/test.ts @@ -1,6 +1,10 @@ import { getNodeAPIName, getPlatform } from '@prisma/get-platform' import fs from 'fs' import path from 'path' +import { + ClientEngineType, + getClientEngineType, +} from '../../../../runtime/utils/getClientEngineType' import { generateTestClient } from '../../../../utils/getTestClient' test('missing-binary', async () => { @@ -10,17 +14,18 @@ test('missing-binary', async () => { const { PrismaClient } = require('./node_modules/@prisma/client') const platform = await getPlatform() - const binaryPath = process.env.PRISMA_FORCE_NAPI - ? path.join( - __dirname, - 'node_modules/.prisma/client', - getNodeAPIName(platform, 'fs'), - ) - : path.join( - __dirname, - 'node_modules/.prisma/client', - `query-engine-${platform}`, - ) + const binaryPath = + getClientEngineType() === ClientEngineType.Library + ? path.join( + __dirname, + 'node_modules/.prisma/client', + getNodeAPIName(platform, 'fs'), + ) + : path.join( + __dirname, + 'node_modules/.prisma/client', + `query-engine-${platform}`, + ) fs.unlinkSync(binaryPath) const prisma = new PrismaClient({ log: [ @@ -32,7 +37,7 @@ test('missing-binary', async () => { }) // TODO Error should not be as fundamentally different here as the test snapshots indicate // TODO The error messages here are also not good (correct) and should be fixed - if (process.env.PRISMA_FORCE_NAPI) { + if (getClientEngineType() === ClientEngineType.Library) { await expect(async () => { await prisma.user.findMany() }).rejects.toThrowErrorMatchingInlineSnapshot(` diff --git a/packages/client/src/__tests__/integration/errors/too-many-engines/test.ts b/packages/client/src/__tests__/integration/errors/too-many-engines/test.ts index bc966a19769e..fcb3b07c9fb6 100644 --- a/packages/client/src/__tests__/integration/errors/too-many-engines/test.ts +++ b/packages/client/src/__tests__/integration/errors/too-many-engines/test.ts @@ -1,6 +1,6 @@ import { getTestClient } from '../../../../utils/getTestClient' -test('raw-transaction: queryRaw', async () => { +test('too-many-engines warning', async () => { const PrismaClient = await getTestClient() const oldConsoleWarn = console.warn const warnings: any[] = [] @@ -18,16 +18,12 @@ test('raw-transaction: queryRaw', async () => { for (const client of clients) { client.$disconnect() } - if (process.env.PRISMA_FORCE_NAPI) { - // TODO Should this really not be implemented? https://github.com/prisma/prisma/issues/7814 - expect(warnings).toMatchInlineSnapshot(`Array []`) - } else { - expect(warnings).toMatchInlineSnapshot(` - Array [ - warn(prisma-client) Already 10 Prisma Clients are actively running., - ] - `) - } + + expect(warnings).toMatchInlineSnapshot(` + Array [ + warn(prisma-client) Already 10 Prisma Clients are actively running., + ] + `) console.warn = oldConsoleWarn }) diff --git a/packages/client/src/__tests__/integration/happy/binary/test.ts b/packages/client/src/__tests__/integration/happy/binary/test.ts index 4185aa1d2fe5..06182a17a35d 100644 --- a/packages/client/src/__tests__/integration/happy/binary/test.ts +++ b/packages/client/src/__tests__/integration/happy/binary/test.ts @@ -1,6 +1,10 @@ import { getNodeAPIName, getPlatform } from '@prisma/get-platform' import fs from 'fs' import path from 'path' +import { + ClientEngineType, + getClientEngineType, +} from '../../../../runtime/utils/getClientEngineType' import { generateTestClient } from '../../../../utils/getTestClient' test('binary', async () => { @@ -8,16 +12,17 @@ test('binary', async () => { await generateTestClient() const platform = await getPlatform() - const binaryPath = process.env.PRISMA_FORCE_NAPI - ? path.join( - __dirname, - 'node_modules/.prisma/client', - getNodeAPIName(platform, 'fs'), - ) - : path.join( - __dirname, - 'node_modules/.prisma/client', - `query-engine-${platform}`, - ) + const binaryPath = + getClientEngineType() === ClientEngineType.Library + ? path.join( + __dirname, + 'node_modules/.prisma/client', + getNodeAPIName(platform, 'fs'), + ) + : path.join( + __dirname, + 'node_modules/.prisma/client', + `query-engine-${platform}`, + ) expect(fs.existsSync(binaryPath)).toBe(true) }) diff --git a/packages/client/src/__tests__/integration/happy/chmod/test.ts b/packages/client/src/__tests__/integration/happy/chmod/test.ts index 8e9813367415..d13d3781e414 100644 --- a/packages/client/src/__tests__/integration/happy/chmod/test.ts +++ b/packages/client/src/__tests__/integration/happy/chmod/test.ts @@ -1,13 +1,17 @@ import { getPlatform } from '@prisma/get-platform' import fs from 'fs' import path from 'path' +import { + ClientEngineType, + getClientEngineType, +} from '../../../../runtime/utils/getClientEngineType' import { generateTestClient } from '../../../../utils/getTestClient' // Tests that no error is being thrown when the binary is manually set to chmod 644 because Client fixes that itself test('chmod', async () => { await generateTestClient() const platform = await getPlatform() - if (!process.env.PRISMA_FORCE_NAPI) { + if (getClientEngineType() !== ClientEngineType.Library) { const binaryPath = path.join( __dirname, 'node_modules/.prisma/client', diff --git a/packages/client/src/__tests__/integration/happy/client-engine/.gitignore b/packages/client/src/__tests__/integration/happy/client-engine/.gitignore new file mode 100644 index 000000000000..97952752a72b --- /dev/null +++ b/packages/client/src/__tests__/integration/happy/client-engine/.gitignore @@ -0,0 +1 @@ +!dev.db \ No newline at end of file diff --git a/packages/client/src/__tests__/integration/happy/client-engine/dev.db b/packages/client/src/__tests__/integration/happy/client-engine/dev.db new file mode 100644 index 000000000000..c2fc096df547 Binary files /dev/null and b/packages/client/src/__tests__/integration/happy/client-engine/dev.db differ diff --git a/packages/client/src/__tests__/integration/happy/client-engine/test.ts b/packages/client/src/__tests__/integration/happy/client-engine/test.ts new file mode 100644 index 000000000000..6c72f5a95329 --- /dev/null +++ b/packages/client/src/__tests__/integration/happy/client-engine/test.ts @@ -0,0 +1,120 @@ +import fs from 'fs' +import os from 'os' +import path from 'path' +import { + ClientEngineType, + DEFAULT_CLIENT_ENGINE_TYPE, +} from '../../../../runtime/utils/getClientEngineType' +import { generateTestClient } from '../../../../utils/getTestClient' + +const buildSchema = (engineType?: string) => ` +datasource db { + provider = "sqlite" + url = "file:./dev.db" +} + +generator client { + provider = "prisma-client-js" + ${engineType ? `engineType="${engineType}"` : ''} +} + +// / User model comment +model User { + id String @default(uuid()) @id + email String @unique + // / name comment + name String? + posts Post[] + profile Profile? +} + +model Profile { + id String @default(cuid()) @id + bio String? + user User @relation(fields: [userId], references: [id]) + userId String @unique +} + +model Post { + id String @default(cuid()) @id + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + published Boolean + title String + content String? + authorId String? @map("author") + author User? @relation(fields: [authorId], references: [id]) +} +` +function getExpectedEngine(engineType, envVar, envVarValue) { + if (envVar === 'PRISMA_CLIENT_ENGINE_TYPE' && envVarValue) { + return envVarValue + } + if (engineType) { + return engineType + } + + return DEFAULT_CLIENT_ENGINE_TYPE +} +function buildTests() { + const engineTypes = [ + ClientEngineType.Binary, + ClientEngineType.Library, + undefined, + ] + const envVars = { + PRISMA_CLIENT_ENGINE_TYPE: engineTypes, + } + for (const engineType of engineTypes) { + for (const envVar in envVars) { + for (const value of envVars[envVar]) { + const expectedClientEngine = getExpectedEngine( + engineType, + envVar, + value, + ) + test(`expects(${expectedClientEngine}) | ${envVar}=${value} | engineType=${engineType}`, async () => { + expect.assertions(2) + const schema = buildSchema(engineType) + + // Setup Project in tmp dir + const projectDir = fs.mkdtempSync(`${os.tmpdir()}${path.sep}`) + fs.copyFileSync( + path.join(__dirname, './dev.db'), + path.join(projectDir, 'dev.db'), + ) + fs.writeFileSync(path.join(projectDir, 'schema.prisma'), schema) + + // Set ENV VAR + process.env[envVar] = value + + // Generate Client to tmp dir + await generateTestClient(projectDir) + + // Run Tests + const { PrismaClient } = require(path.join( + projectDir, + 'node_modules/@prisma/client', + )) + const prisma = new PrismaClient() + const users = await prisma.user.findMany() + expect(users).toMatchInlineSnapshot(` + Array [ + Object { + email: a@a.de, + id: 576eddf9-2434-421f-9a86-58bede16fd95, + name: Alice, + }, + ] + `) + + expect(prisma._clientEngineType).toMatch(expectedClientEngine) + await prisma.$disconnect() + }) + } + } + } +} +describe('client engine', () => { + buildTests() +}) diff --git a/packages/client/src/__tests__/integration/happy/restart/test.ts b/packages/client/src/__tests__/integration/happy/restart/test.ts index 2b095bb96a48..e75b64f867ae 100644 --- a/packages/client/src/__tests__/integration/happy/restart/test.ts +++ b/packages/client/src/__tests__/integration/happy/restart/test.ts @@ -1,9 +1,13 @@ +import { + ClientEngineType, + getClientEngineType, +} from '../../../../runtime/utils/getClientEngineType' import { getTestClient } from '../../../../utils/getTestClient' // Does Prisma Client restart the QE when it is killed for some reason? test('restart', async () => { // No child process for Node-API, so nothing that can be killed or tested - if (process.env.PRISMA_FORCE_NAPI === 'true') { + if (getClientEngineType() === ClientEngineType.Library) { return } diff --git a/packages/client/src/generation/TSClient/TSClient.ts b/packages/client/src/generation/TSClient/TSClient.ts index d9fe0b1b909f..d6a26b21a97f 100644 --- a/packages/client/src/generation/TSClient/TSClient.ts +++ b/packages/client/src/generation/TSClient/TSClient.ts @@ -8,6 +8,7 @@ import { DMMFClass } from '../../runtime/dmmf' import { DMMF } from '../../runtime/dmmf-types' import { GetPrismaClientOptions } from '../../runtime/getPrismaClient' import { InternalDatasource } from '../../runtime/utils/printDatasources' +import { getClientEngineType } from '../../runtime/utils/getClientEngineType' import { buildNFTEngineAnnotations } from '../utils' import { DatasourceOverwrite } from './../extractSqliteSources' import { commonCodeJS, commonCodeTS } from './common' @@ -66,13 +67,10 @@ export class TSClient implements Generatable { datasourceNames: this.options.datasources.map((d) => d.name), activeProvider: this.options.activeProvider, } - - // Node-API env var - if ( - process.env.PRISMA_FORCE_NAPI && - !config.generator?.previewFeatures.includes('nApi') - ) { - config.generator?.previewFeatures.push('nApi') + // This ensures that any engine override is propagated to the generated clients config + const clientEngineType = getClientEngineType(config.generator!) + if (config.generator) { + config.generator.config.engineType = clientEngineType } // get relative output dir for it to be preserved even after bundling, or @@ -160,7 +158,7 @@ Object.assign(exports, Prisma) * The process.cwd() annotation is only needed for https://github.com/vercel/vercel/tree/master/packages/now-next **/ ${buildNFTEngineAnnotations( - this.options.generator?.previewFeatures?.includes('nApi') ?? false, + clientEngineType, this.options.platforms as Platform[], relativeOutputDir, )} diff --git a/packages/client/src/generation/generateClient.ts b/packages/client/src/generation/generateClient.ts index 7b4de68feeb1..2c7bea912fa7 100644 --- a/packages/client/src/generation/generateClient.ts +++ b/packages/client/src/generation/generateClient.ts @@ -15,6 +15,10 @@ import pkgUp from 'pkg-up' import { promisify } from 'util' import { DMMF as PrismaClientDMMF } from '../runtime/dmmf-types' import { Dictionary } from '../runtime/utils/common' +import { + ClientEngineType, + getClientEngineType, +} from '../runtime/utils/getClientEngineType' import { getPrismaClientDMMF } from './getDMMF' import { JS, TS, TSClient } from './TSClient' import { BrowserJS } from './TSClient/Generatable' @@ -75,18 +79,18 @@ export async function buildClient({ activeProvider, }: GenerateClientOptions): Promise { const document = getPrismaClientDMMF(dmmf) - const useNodeAPI = - generator?.previewFeatures?.includes('nApi') || - process.env.PRISMA_FORCE_NAPI === 'true' + const clientEngineType = getClientEngineType(generator!) + const client = new TSClient({ document, runtimePath, browser, datasources: datasources, generator, - platforms: useNodeAPI - ? Object.keys(binaryPaths.libqueryEngine!) - : Object.keys(binaryPaths.queryEngine!), + platforms: + clientEngineType === ClientEngineType.Library + ? Object.keys(binaryPaths.libqueryEngine!) + : Object.keys(binaryPaths.queryEngine!), schemaDir, outputDir, clientVersion, @@ -150,9 +154,7 @@ export async function generateClient({ activeProvider, }: GenerateClientOptions): Promise { const useDotPrisma = testMode ? !runtimePath : !generator?.isCustomOutput - const useNodeAPI = - generator?.previewFeatures?.includes('nApi') || - process.env.PRISMA_FORCE_NAPI === 'true' + const clientEngineType = getClientEngineType(generator!) runtimePath = runtimePath || (useDotPrisma ? '@prisma/client/runtime' : './runtime') @@ -233,14 +235,17 @@ export async function generateClient({ }) } } - const enginePath = useNodeAPI - ? binaryPaths.libqueryEngine - : binaryPaths.queryEngine + const enginePath = + clientEngineType === ClientEngineType.Library + ? binaryPaths.libqueryEngine + : binaryPaths.queryEngine if (!enginePath) { throw new Error( `Prisma Client needs \`${ - useNodeAPI ? 'libqueryEngine' : 'queryEngine' + clientEngineType === ClientEngineType.Library + ? 'libqueryEngine' + : 'queryEngine' }\` in the \`binaryPaths\` object.`, ) } @@ -279,9 +284,10 @@ export async function generateClient({ await copyFile(filePath, target) continue } - const binaryName = useNodeAPI - ? BinaryType.libqueryEngine - : BinaryType.queryEngine + const binaryName = + clientEngineType === ClientEngineType.Binary + ? BinaryType.queryEngine + : BinaryType.libqueryEngine // They must have an equal size now, let's check for the hash const [sourceVersion, targetVersion] = await Promise.all([ getVersion(filePath, binaryName).catch(() => null), diff --git a/packages/client/src/generation/generator.ts b/packages/client/src/generation/generator.ts index 670a1fde21c8..1e0ee9a06dce 100755 --- a/packages/client/src/generation/generator.ts +++ b/packages/client/src/generation/generator.ts @@ -5,6 +5,10 @@ import { parseEnvValue } from '@prisma/sdk' import { generateClient } from './generateClient' import { getDMMF } from './getDMMF' import { externalToInternalDmmf } from '../runtime/externalToInternalDmmf' +import { + ClientEngineType, + getClientEngineType, +} from '../runtime/utils/getClientEngineType' const debug = Debug('prisma:client:generator') // As specced in https://github.com/prisma/specs/tree/master/generators @@ -16,8 +20,7 @@ if (require.main === module) { generatorHandler({ onManifest(config) { const requiredEngine = - config?.previewFeatures?.includes('nApi') || - process.env.PRISMA_FORCE_NAPI === 'true' + getClientEngineType(config) === ClientEngineType.Library ? 'libqueryEngine' : 'queryEngine' debug(`requiredEngine: ${requiredEngine}`) diff --git a/packages/client/src/generation/utils.ts b/packages/client/src/generation/utils.ts index ab8f692fae43..46008393b148 100644 --- a/packages/client/src/generation/utils.ts +++ b/packages/client/src/generation/utils.ts @@ -4,6 +4,7 @@ import indent from 'indent-string' import path from 'path' import { DMMFClass } from '../runtime/dmmf' import { DMMF } from '../runtime/dmmf-types' +import { ClientEngineType } from '../runtime/utils/getClientEngineType' export enum Projection { select = 'select', @@ -366,7 +367,7 @@ export function unique(arr: T[]): T[] { return result } export function buildNFTEngineAnnotations( - isNodeAPI: boolean, + clientEngineType: ClientEngineType, platforms: Platform[], cwdDirname: string, ) { @@ -374,17 +375,18 @@ export function buildNFTEngineAnnotations( platforms = ['rhel-openssl-1.0.x'] } - const getName = (p: Platform) => - isNodeAPI ? getNodeAPIName(p, 'fs') : `query-engine-${p}` - return `${ - platforms - ? platforms - .map( - (p) => `path.join(__dirname, '${getName(p)}'); -path.join(process.cwd(), './${path.join(cwdDirname, getName(p))}'); -`, - ) - .join('\n') - : '' - }` + const getQueryEngineFilename = (p: Platform) => + clientEngineType === ClientEngineType.Binary + ? `query-engine-${p}` + : getNodeAPIName(p, 'fs') + + const buildAnnotation = (p: Platform) => { + return `path.join(__dirname, '${getQueryEngineFilename(p)}'); +path.join(process.cwd(), './${path.join( + cwdDirname, + getQueryEngineFilename(p), + )}')` + } + + return platforms ? platforms.map(buildAnnotation).join('\n') : '' } diff --git a/packages/client/src/runtime/getPrismaClient.ts b/packages/client/src/runtime/getPrismaClient.ts index 294710150edf..01986f2c4428 100644 --- a/packages/client/src/runtime/getPrismaClient.ts +++ b/packages/client/src/runtime/getPrismaClient.ts @@ -18,6 +18,10 @@ import { AsyncResource } from 'async_hooks' import fs from 'fs' import path from 'path' import * as sqlTemplateTag from 'sql-template-tag' +import { + ClientEngineType, + getClientEngineType, +} from './utils/getClientEngineType' import { DMMFClass } from './dmmf' import { DMMF } from './dmmf-types' import { getLogLevel } from './getLogLevel' @@ -287,6 +291,7 @@ export function getPrismaClient(config: GetPrismaClientOptions) { _engineConfig: EngineConfig _clientVersion: string _errorFormat: ErrorFormat + _clientEngineType: ClientEngineType private _hooks?: Hooks // private _getConfigPromise?: Promise<{ datasources: DataSource[] @@ -306,6 +311,7 @@ export function getPrismaClient(config: GetPrismaClientOptions) { this._rejectOnNotFound = optionsArg?.rejectOnNotFound this._clientVersion = config.clientVersion ?? clientVersion this._activeProvider = config.activeProvider + this._clientEngineType = getClientEngineType(config.generator!) const envPaths = { rootEnvPath: config.relativeEnvPaths.rootEnvPath && @@ -444,13 +450,10 @@ export function getPrismaClient(config: GetPrismaClientOptions) { return 'PrismaClient' } private getEngine() { - if ( - this._previewFeatures.includes('nApi') || - process.env.PRISMA_FORCE_NAPI === 'true' - ) { - return new LibraryEngine(this._engineConfig) - } else { + if (this._clientEngineType === ClientEngineType.Binary) { return new BinaryEngine(this._engineConfig) + } else { + return new LibraryEngine(this._engineConfig) } } diff --git a/packages/client/src/runtime/utils/getClientEngineType.ts b/packages/client/src/runtime/utils/getClientEngineType.ts new file mode 100644 index 000000000000..eb6af3839d51 --- /dev/null +++ b/packages/client/src/runtime/utils/getClientEngineType.ts @@ -0,0 +1,34 @@ +import { GeneratorConfig } from '@prisma/generator-helper' + +export enum ClientEngineType { + Library = 'library', + Binary = 'binary', +} +export const DEFAULT_CLIENT_ENGINE_TYPE = ClientEngineType.Binary + +export function getClientEngineType( + generatorConfig?: GeneratorConfig, +): ClientEngineType { + const engineTypeFromEnvVar = getEngineTypeFromEnvVar() + if (engineTypeFromEnvVar) return engineTypeFromEnvVar + if ( + generatorConfig?.config.engineType === ClientEngineType.Library || + generatorConfig?.previewFeatures.includes('nApi') + ) { + return ClientEngineType.Library + } else if (generatorConfig?.config.engineType === ClientEngineType.Binary) { + return ClientEngineType.Binary + } + return DEFAULT_CLIENT_ENGINE_TYPE +} + +function getEngineTypeFromEnvVar() { + const engineType = process.env.PRISMA_CLIENT_ENGINE_TYPE + if (engineType === ClientEngineType.Library) { + return ClientEngineType.Library + } else if (engineType === ClientEngineType.Binary) { + return ClientEngineType.Binary + } else { + return undefined + } +} diff --git a/packages/client/src/utils/ensureTestClientQueryEngine.ts b/packages/client/src/utils/ensureTestClientQueryEngine.ts new file mode 100644 index 000000000000..21aad871325c --- /dev/null +++ b/packages/client/src/utils/ensureTestClientQueryEngine.ts @@ -0,0 +1,49 @@ +import { enginesVersion, getEnginesPath } from '@prisma/engines' +import { download } from '@prisma/fetch-engine' +import { getNodeAPIName, Platform } from '@prisma/get-platform' +import fs from 'fs' +import path from 'path' +import { ClientEngineType } from '../runtime/utils/getClientEngineType' +/** + * Ensures the correct Query Engine (`node-api`/`binary`) is present. This is required as + * normally the downloading of the required engine is done in `getGenerators`. As the test + * clients bypass this we need to ensure the correct engine is present. + * @param clientEngineType + * @param platform + */ +export async function ensureTestClientQueryEngine( + clientEngineType: ClientEngineType, + platform: Platform, +) { + const enginesPath = getEnginesPath() + const queryEngineLibraryPath = path.join( + enginesPath, + getNodeAPIName(platform, 'fs'), + ) + const queryEngineBinaryPath = path.join( + enginesPath, + `query-engine-${platform}${platform === 'windows' ? '.exe' : ''}`, + ) + + if ( + clientEngineType === ClientEngineType.Library && + !fs.existsSync(queryEngineLibraryPath) + ) { + await download({ + binaries: { + 'libquery-engine': enginesPath, + }, + version: enginesVersion, + }) + } else if ( + clientEngineType === ClientEngineType.Binary && + !fs.existsSync(queryEngineBinaryPath) + ) { + await download({ + binaries: { + 'query-engine': enginesPath, + }, + version: enginesVersion, + }) + } +} diff --git a/packages/client/src/utils/generateInFolder.ts b/packages/client/src/utils/generateInFolder.ts index 84ba7ff77b94..91d0948212ed 100644 --- a/packages/client/src/utils/generateInFolder.ts +++ b/packages/client/src/utils/generateInFolder.ts @@ -16,6 +16,11 @@ import { performance } from 'perf_hooks' import rimraf from 'rimraf' import { promisify } from 'util' import { generateClient } from '../generation/generateClient' +import { + ClientEngineType, + getClientEngineType, +} from '../runtime/utils/getClientEngineType' +import { ensureTestClientQueryEngine } from './ensureTestClientQueryEngine' const debug = Debug('prisma:generateInFolder') const del = promisify(rimraf) @@ -49,8 +54,8 @@ export async function generateInFolder({ const config = await getConfig({ datamodel, ignoreEnvVarErrors: true }) const previewFeatures = mapPreviewFeatures(extractPreviewFeatures(config)) - const useNodeAPI = - previewFeatures.includes('nApi') || process.env.PRISMA_FORCE_NAPI === 'true' + const clientGenerator = config.generators[0] + const clientEngineType = getClientEngineType(clientGenerator) const dmmf = await getDMMF({ datamodel, @@ -99,36 +104,29 @@ export async function generateInFolder({ ) } const enginesPath = getEnginesPath() - const nodeAPILibraryPath = path.join( + const queryEngineLibraryPath = path.join( enginesPath, getNodeAPIName(platform, 'fs'), ) - if ( - (useNodeAPI || process.env.PRISMA_FORCE_NAPI) && - !fs.existsSync(nodeAPILibraryPath) - ) { - // This is required as the Node-API library is not downloaded by default - await download({ - binaries: { - 'libquery-engine': enginesPath, - }, - version: enginesVersion, - }) - } - const binaryPaths = useNodeAPI - ? { - libqueryEngine: { - [platform]: nodeAPILibraryPath, - }, - } - : { - queryEngine: { - [platform]: path.join( - enginesPath, - `query-engine-${platform}${platform === 'windows' ? '.exe' : ''}`, - ), - }, - } + const queryEngineBinaryPath = path.join( + enginesPath, + `query-engine-${platform}${platform === 'windows' ? '.exe' : ''}`, + ) + + await ensureTestClientQueryEngine(clientEngineType, platform) + + const binaryPaths = + clientEngineType === ClientEngineType.Library + ? { + libqueryEngine: { + [platform]: queryEngineLibraryPath, + }, + } + : { + queryEngine: { + [platform]: queryEngineBinaryPath, + }, + } // we make sure that we are in the project root // this only applies to generated test clients diff --git a/packages/client/src/utils/getTestClient.ts b/packages/client/src/utils/getTestClient.ts index df16a8627dae..cf4d826cf061 100644 --- a/packages/client/src/utils/getTestClient.ts +++ b/packages/client/src/utils/getTestClient.ts @@ -1,6 +1,4 @@ -import { enginesVersion, getEnginesPath } from '@prisma/engines' -import { download } from '@prisma/fetch-engine' -import { getNodeAPIName, getPlatform } from '@prisma/get-platform' +import { getPlatform } from '@prisma/get-platform' import { extractPreviewFeatures, getConfig, @@ -19,10 +17,13 @@ import { getPrismaClient, GetPrismaClientOptions, } from '../runtime/getPrismaClient' +import { getClientEngineType } from '../runtime/utils/getClientEngineType' +import { ensureTestClientQueryEngine } from './ensureTestClientQueryEngine' import { generateInFolder } from './generateInFolder' const readFile = promisify(fs.readFile) +//TODO Rename to generateTestClientInMemory /** * Returns an in-memory client for testing */ @@ -45,24 +46,11 @@ export async function getTestClient( (g) => parseEnvValue(g.provider) === 'prisma-client-js', ) const previewFeatures = mapPreviewFeatures(extractPreviewFeatures(config)) - const enginesPath = getEnginesPath() const platform = await getPlatform() - const nodeAPILibraryPath = path.join( - enginesPath, - getNodeAPIName(platform, 'fs'), - ) - if ( - (previewFeatures.includes('nApi') || process.env.PRISMA_FORCE_NAPI) && - !fs.existsSync(nodeAPILibraryPath) - ) { - // This is required as the Node-API library is not downloaded by default - await download({ - binaries: { - 'libquery-engine': enginesPath, - }, - version: enginesVersion, - }) - } + const clientEngineType = getClientEngineType(generator!) + + await ensureTestClientQueryEngine(clientEngineType, platform) + const document = await getDMMF({ datamodel, previewFeatures, diff --git a/packages/debug/package.json b/packages/debug/package.json index 1259e92dd55c..8c0144cd0792 100644 --- a/packages/debug/package.json +++ b/packages/debug/package.json @@ -28,7 +28,7 @@ "execa": "5.1.1", "glob": "7.1.7", "jest": "27.0.6", - "lint-staged": "11.1.1", + "lint-staged": "11.1.2", "prettier": "2.3.2", "strip-ansi": "6.0.0", "ts-jest": "27.0.4", diff --git a/packages/engine-core/package.json b/packages/engine-core/package.json index d3b268120433..c37d163001d0 100644 --- a/packages/engine-core/package.json +++ b/packages/engine-core/package.json @@ -15,10 +15,10 @@ ], "bugs": "https://github.com/prisma/prisma/issues", "devDependencies": { - "@types/jest": "26.0.24", - "@types/node": "12.20.18", - "@typescript-eslint/eslint-plugin": "4.29.0", - "@typescript-eslint/parser": "4.29.0", + "@types/jest": "27.0.0", + "@types/node": "12.20.19", + "@typescript-eslint/eslint-plugin": "4.29.1", + "@typescript-eslint/parser": "4.29.1", "esbuild": "0.12.16", "eslint": "7.32.0", "eslint-config-prettier": "8.3.0", @@ -27,7 +27,7 @@ "eslint-plugin-prettier": "3.4.0", "glob": "7.1.7", "jest": "27.0.6", - "lint-staged": "11.1.1", + "lint-staged": "11.1.2", "prettier": "2.3.2", "strip-ansi": "6.0.0", "ts-jest": "27.0.4", @@ -45,9 +45,9 @@ }, "dependencies": { "@prisma/debug": "workspace:*", - "@prisma/engines": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/engines": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@prisma/generator-helper": "workspace:*", - "@prisma/get-platform": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/get-platform": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "chalk": "4.1.2", "execa": "5.1.1", "get-stream": "6.0.1", diff --git a/packages/engine-core/src/common/types/QueryEngine.ts b/packages/engine-core/src/common/types/QueryEngine.ts index f592e31e1bc4..5c3932740c2e 100644 --- a/packages/engine-core/src/common/types/QueryEngine.ts +++ b/packages/engine-core/src/common/types/QueryEngine.ts @@ -42,6 +42,7 @@ export type QueryEngineLogLevel = | 'off' export type QueryEngineConfig = { + // TODO rename datamodel here and other places datamodel: string configDir: string logQueries: boolean diff --git a/packages/engine-core/src/library/LibraryEngine.ts b/packages/engine-core/src/library/LibraryEngine.ts index 927f17fd1e43..1f41af8c79d8 100644 --- a/packages/engine-core/src/library/LibraryEngine.ts +++ b/packages/engine-core/src/library/LibraryEngine.ts @@ -52,6 +52,8 @@ function isPanicEvent(event: QueryEngineEvent): event is QueryEnginePanicEvent { } const knownPlatforms: Platform[] = [...platforms, 'native'] +const engines: LibraryEngine[] = [] + export class LibraryEngine extends Engine { private engine?: QueryEngineInstance private libraryInstantiationPromise?: Promise @@ -98,9 +100,23 @@ export class LibraryEngine extends Engine { // Debug.enable('*') } this.libraryInstantiationPromise = this.instantiateLibrary() - initHooks(this) - } + initHooks() + engines.push(this) + this.checkForTooManyEngines() + } + private checkForTooManyEngines() { + if (engines.length >= 10) { + const runningEngines = engines.filter((e) => e.engine) + if (runningEngines.length === 10) { + console.warn( + `${chalk.yellow( + 'warn(prisma-client)', + )} Already 10 Prisma Clients are actively running.`, + ) + } + } + } async transaction(action: 'start', options?: Tx.Options): Promise async transaction(action: 'commit', info: Tx.Info): Promise async transaction(action: 'rollback', info: Tx.Info): Promise @@ -679,10 +695,13 @@ Read more about deploying Prisma Client: https://pris.ly/d/client-generator` } } -function hookProcess(engine: LibraryEngine, handler: string, exit = false) { +function hookProcess(handler: string, exit = false) { process.once(handler as any, async () => { debug(`hookProcess received: ${handler}`) - await engine.runBeforeExit() + for (const engine of engines) { + await engine.runBeforeExit() + } + engines.splice(0, engines.length) // only exit, if only we are listening // if there is another listener, that other listener is responsible if (exit && process.listenerCount(handler) === 0) { @@ -690,12 +709,15 @@ function hookProcess(engine: LibraryEngine, handler: string, exit = false) { } }) } - -function initHooks(engine: LibraryEngine) { - hookProcess(engine, 'beforeExit') - hookProcess(engine, 'exit') - hookProcess(engine, 'SIGINT', true) - hookProcess(engine, 'SIGUSR1', true) - hookProcess(engine, 'SIGUSR2', true) - hookProcess(engine, 'SIGTERM', true) +let hooksInitialized = false +function initHooks() { + if (!hooksInitialized) { + hookProcess('beforeExit') + hookProcess('exit') + hookProcess('SIGINT', true) + hookProcess('SIGUSR1', true) + hookProcess('SIGUSR2', true) + hookProcess('SIGTERM', true) + hooksInitialized = true + } } diff --git a/packages/generator-helper/package.json b/packages/generator-helper/package.json index 1cf4480bad49..433d5b47dc78 100644 --- a/packages/generator-helper/package.json +++ b/packages/generator-helper/package.json @@ -31,10 +31,10 @@ "precommit": "lint-staged" }, "devDependencies": { - "@types/jest": "26.0.24", - "@types/node": "12.20.18", - "@typescript-eslint/eslint-plugin": "4.29.0", - "@typescript-eslint/parser": "4.29.0", + "@types/jest": "27.0.0", + "@types/node": "12.20.19", + "@typescript-eslint/eslint-plugin": "4.29.1", + "@typescript-eslint/parser": "4.29.1", "esbuild": "0.12.16", "eslint": "7.32.0", "eslint-config-prettier": "8.3.0", @@ -43,10 +43,10 @@ "eslint-plugin-prettier": "3.4.0", "glob": "7.1.7", "jest": "27.0.6", - "lint-staged": "11.1.1", + "lint-staged": "11.1.2", "prettier": "2.3.2", "ts-jest": "27.0.4", - "ts-node": "10.1.0", + "ts-node": "10.2.0", "typescript": "4.3.5" }, "files": [ diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 88d3dbb19ce6..12c9884a2856 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -9,17 +9,17 @@ "repository": "git@github.com:prisma/prisma.git", "devDependencies": { "@prisma/client": "workspace:*", - "@prisma/get-platform": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/get-platform": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@prisma/migrate": "workspace:*", "@prisma/sdk": "workspace:*", "@sindresorhus/slugify": "1.1.2", - "@types/jest": "26.0.24", + "@types/jest": "27.0.0", "@types/mssql": "6.0.8", - "@types/node": "12.20.18", + "@types/node": "12.20.19", "@types/pg": "8.6.1", "@types/sqlite3": "3.1.7", - "@typescript-eslint/eslint-plugin": "4.29.0", - "@typescript-eslint/parser": "4.29.0", + "@typescript-eslint/eslint-plugin": "4.29.1", + "@typescript-eslint/parser": "4.29.1", "decimal.js": "10.3.1", "esbuild": "0.12.16", "escape-string-regexp": "4.0.0", @@ -29,10 +29,10 @@ "eslint-plugin-jest": "24.4.0", "eslint-plugin-prettier": "3.4.0", "execa": "5.1.1", - "fs-jetpack": "4.1.0", + "fs-jetpack": "4.1.1", "glob": "7.1.7", "jest": "27.0.6", - "lint-staged": "11.1.1", + "lint-staged": "11.1.2", "mariadb": "2.5.4", "mssql": "7.2.0", "pg": "8.7.1", @@ -45,7 +45,7 @@ "strip-ansi": "6.0.0", "tempy": "1.0.1", "ts-jest": "27.0.4", - "ts-node": "10.1.0", + "ts-node": "10.2.0", "typescript": "4.3.5", "verror": "1.10.0" }, diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 0a736e326a7e..e7a1007b101c 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -16,16 +16,16 @@ "version": "latest" }, "devDependencies": { - "@prisma/engines-version": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/engines-version": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@prisma/generator-helper": "workspace:*", "@prisma/sdk": "workspace:*", - "@types/jest": "26.0.24", - "@types/node": "12.20.18", + "@types/jest": "27.0.0", + "@types/node": "12.20.19", "@types/pg": "8.6.1", "@types/prompts": "2.0.14", "@types/sqlite3": "3.1.7", - "@typescript-eslint/eslint-plugin": "4.29.0", - "@typescript-eslint/parser": "4.29.0", + "@typescript-eslint/eslint-plugin": "4.29.1", + "@typescript-eslint/parser": "4.29.1", "chalk": "4.1.2", "del": "6.0.0", "esbuild": "0.12.16", @@ -34,10 +34,10 @@ "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-jest": "24.4.0", "eslint-plugin-prettier": "3.4.0", - "fs-jetpack": "4.1.0", + "fs-jetpack": "4.1.1", "glob": "7.1.7", "jest": "27.0.6", - "lint-staged": "11.1.1", + "lint-staged": "11.1.2", "make-dir": "3.1.0", "mariadb": "2.5.4", "mock-stdin": "1.0.0", @@ -55,7 +55,7 @@ }, "dependencies": { "@prisma/debug": "workspace:*", - "@prisma/get-platform": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/get-platform": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@sindresorhus/slugify": "1.1.2", "execa": "5.1.1", "global-dirs": "3.0.0", diff --git a/packages/react-prisma/package.json b/packages/react-prisma/package.json index 1ab73582653f..81a302eb9e81 100644 --- a/packages/react-prisma/package.json +++ b/packages/react-prisma/package.json @@ -9,10 +9,10 @@ "homepage": "https://www.prisma.io", "devDependencies": { "@prisma/client": "workspace:*", - "@types/jest": "26.0.24", - "@types/node": "14.17.7", - "@typescript-eslint/eslint-plugin": "4.29.0", - "@typescript-eslint/parser": "4.29.0", + "@types/jest": "27.0.0", + "@types/node": "14.17.9", + "@typescript-eslint/eslint-plugin": "4.29.1", + "@typescript-eslint/parser": "4.29.1", "esbuild": "0.12.16", "eslint": "7.32.0", "eslint-config-prettier": "8.3.0", @@ -21,7 +21,7 @@ "eslint-plugin-prettier": "3.4.0", "glob": "7.1.7", "jest": "27.0.6", - "lint-staged": "11.1.1", + "lint-staged": "11.1.2", "prettier": "2.3.2", "react": "17.0.2", "strip-ansi": "7.0.0", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 68c5e034935a..7688d84c5f54 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -29,13 +29,13 @@ "scripts" ], "devDependencies": { - "@types/jest": "26.0.24", - "@types/node": "12.20.18", + "@types/jest": "27.0.0", + "@types/node": "12.20.19", "@types/resolve": "1.20.1", "@types/shell-quote": "1.7.1", "@types/tar": "4.0.5", - "@typescript-eslint/eslint-plugin": "4.29.0", - "@typescript-eslint/parser": "4.29.0", + "@typescript-eslint/eslint-plugin": "4.29.1", + "@typescript-eslint/parser": "4.29.1", "esbuild": "0.12.16", "eslint": "7.32.0", "eslint-config-prettier": "8.3.0", @@ -44,19 +44,19 @@ "eslint-plugin-prettier": "3.4.0", "glob": "7.1.7", "jest": "27.0.6", - "lint-staged": "11.1.1", + "lint-staged": "11.1.2", "prettier": "2.3.2", "ts-jest": "27.0.4", - "ts-node": "10.1.0", + "ts-node": "10.2.0", "typescript": "4.3.5" }, "dependencies": { "@prisma/debug": "workspace:*", "@prisma/engine-core": "workspace:*", - "@prisma/engines": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", - "@prisma/fetch-engine": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/engines": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", + "@prisma/fetch-engine": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@prisma/generator-helper": "workspace:*", - "@prisma/get-platform": "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a", + "@prisma/get-platform": "2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf", "@timsuchanek/copy": "1.4.5", "archiver": "4.0.2", "arg": "5.0.0", @@ -80,7 +80,7 @@ "string-width": "4.2.2", "strip-ansi": "6.0.0", "strip-indent": "3.0.0", - "tar": "6.1.6", + "tar": "6.1.7", "temp-dir": "2.0.0", "temp-write": "4.0.0", "tempy": "1.0.1", diff --git a/packages/sdk/src/__tests__/engine-commands/getVersion.test.ts b/packages/sdk/src/__tests__/engine-commands/getVersion.test.ts index 41df7715cf7a..a92cee748806 100644 --- a/packages/sdk/src/__tests__/engine-commands/getVersion.test.ts +++ b/packages/sdk/src/__tests__/engine-commands/getVersion.test.ts @@ -1,8 +1,9 @@ -import { enginesVersion } from '@prisma/engines' +import { enginesVersion, getCliQueryEngineBinaryType } from '@prisma/engines' import { BinaryType, getVersion } from '../..' const testIf = (condition: boolean) => (condition ? test : test.skip) /* eslint-disable jest/no-standalone-expect */ +const useNodeAPI = getCliQueryEngineBinaryType() === BinaryType.libqueryEngine describe('getVersion', () => { test('Introspection Engine', async () => { @@ -26,21 +27,18 @@ describe('getVersion', () => { expect(prismaFmtVersion.split(' ')[1]).toMatch(enginesVersion) }) - testIf(process.env.PRISMA_FORCE_NAPI !== 'true')('Query Engine', async () => { + testIf(!useNodeAPI)('Query Engine', async () => { const queryEngineVersion = await getVersion( undefined, BinaryType.queryEngine, ) expect(queryEngineVersion.split(' ')[1]).toMatch(enginesVersion) }) - testIf(process.env.PRISMA_FORCE_NAPI === 'true')( - 'Query Engine (Node-API)', - async () => { - const libqueryEngineVersion = await getVersion( - undefined, - BinaryType.libqueryEngine, - ) - expect(libqueryEngineVersion.split(' ')[1]).toMatch(enginesVersion) - }, - ) + testIf(useNodeAPI)('Query Engine (Node-API)', async () => { + const libqueryEngineVersion = await getVersion( + undefined, + BinaryType.libqueryEngine, + ) + expect(libqueryEngineVersion.split(' ')[1]).toMatch(enginesVersion) + }) }) diff --git a/packages/sdk/src/__tests__/getGenerators/getGenerators.test.ts b/packages/sdk/src/__tests__/getGenerators/getGenerators.test.ts index 114298156493..ce5bee7ac5a6 100644 --- a/packages/sdk/src/__tests__/getGenerators/getGenerators.test.ts +++ b/packages/sdk/src/__tests__/getGenerators/getGenerators.test.ts @@ -1,3 +1,4 @@ +import { getCliQueryEngineBinaryType } from '@prisma/engines' import { BinaryType } from '@prisma/fetch-engine' import { getPlatform } from '@prisma/get-platform' import path from 'path' @@ -497,17 +498,15 @@ describe('getGenerators', () => { } const migrationEngine = await resolveBinary(BinaryType.migrationEngine) - const queryEngine = await resolveBinary( - process.env.PRISMA_FORCE_NAPI === 'true' - ? BinaryType.libqueryEngine - : BinaryType.queryEngine, - ) + + const queryEngineBinaryType = getCliQueryEngineBinaryType() + const queryEnginePath = await resolveBinary(queryEngineBinaryType) const generators = await getGenerators({ schemaPath: path.join(__dirname, 'valid-minimal-schema.prisma'), providerAliases: aliases, binaryPathsOverride: { - queryEngine, + queryEngine: queryEnginePath, }, }) @@ -516,7 +515,7 @@ describe('getGenerators', () => { const platform = await getPlatform() // we override queryEngine, so its paths should be equal to the one of the generator - expect(options[0]?.queryEngine?.[platform]).toBe(queryEngine) + expect(options[0]?.queryEngine?.[platform]).toBe(queryEnginePath) // we did not override the migrationEngine, so their paths should not be equal expect(options[0]?.migrationEngine?.[platform]).not.toBe(migrationEngine) diff --git a/packages/sdk/src/engine-commands/getConfig.ts b/packages/sdk/src/engine-commands/getConfig.ts index 965afc600313..b8479568ee40 100644 --- a/packages/sdk/src/engine-commands/getConfig.ts +++ b/packages/sdk/src/engine-commands/getConfig.ts @@ -1,5 +1,6 @@ import Debug from '@prisma/debug' import { NodeAPILibraryTypes } from '@prisma/engine-core' +import { getCliQueryEngineBinaryType } from '@prisma/engines' import { BinaryType } from '@prisma/fetch-engine' import { DataSource, GeneratorConfig } from '@prisma/generator-helper' import { isNodeAPISupported } from '@prisma/get-platform' @@ -40,10 +41,9 @@ export class GetConfigError extends Error { export async function getConfig( options: GetConfigOptions, ): Promise { - const useNodeAPI = process.env.PRISMA_FORCE_NAPI === 'true' - + const cliEngineBinaryType = getCliQueryEngineBinaryType() let data: ConfigMetaFormat | undefined - if (useNodeAPI) { + if (cliEngineBinaryType === BinaryType.libqueryEngine) { data = await getConfigNodeAPI(options) } else { data = await getConfigBinary(options) diff --git a/packages/sdk/src/engine-commands/getDmmf.ts b/packages/sdk/src/engine-commands/getDmmf.ts index c46b0901b9c4..75e1e342a918 100644 --- a/packages/sdk/src/engine-commands/getDmmf.ts +++ b/packages/sdk/src/engine-commands/getDmmf.ts @@ -1,5 +1,6 @@ import Debug from '@prisma/debug' import { NodeAPILibraryTypes } from '@prisma/engine-core' +import { getCliQueryEngineBinaryType } from '@prisma/engines' import { BinaryType } from '@prisma/fetch-engine' import { DataSource, DMMF, GeneratorConfig } from '@prisma/generator-helper' import { isNodeAPISupported } from '@prisma/get-platform' @@ -34,11 +35,9 @@ export type GetDMMFOptions = { // TODO add error handling functions export async function getDMMF(options: GetDMMFOptions): Promise { warnOnDeprecatedFeatureFlag(options.previewFeatures) - - const useNodeAPI = process.env.PRISMA_FORCE_NAPI === 'true' - + const cliEngineBinaryType = getCliQueryEngineBinaryType() let dmmf: DMMF.Document | undefined - if (useNodeAPI) { + if (cliEngineBinaryType === BinaryType.libqueryEngine) { dmmf = await getDmmfNodeAPI(options) } else { dmmf = await getDmmfBinary(options) diff --git a/packages/sdk/src/engine-commands/getVersion.ts b/packages/sdk/src/engine-commands/getVersion.ts index f744f8c76414..26a8a1f4e938 100644 --- a/packages/sdk/src/engine-commands/getVersion.ts +++ b/packages/sdk/src/engine-commands/getVersion.ts @@ -1,5 +1,6 @@ import Debug from '@prisma/debug' import { NodeAPILibraryTypes } from '@prisma/engine-core' +import { getCliQueryEngineBinaryType } from '@prisma/engines' import { BinaryType } from '@prisma/fetch-engine' import { isNodeAPISupported } from '@prisma/get-platform' import execa from 'execa' @@ -14,10 +15,8 @@ export async function getVersion( enginePath?: string, binaryName?: BinaryType, ): Promise { - const useNodeAPI = process.env.PRISMA_FORCE_NAPI === 'true' - if (!binaryName) { - binaryName = useNodeAPI ? BinaryType.libqueryEngine : BinaryType.queryEngine + binaryName = getCliQueryEngineBinaryType() } enginePath = await resolveBinary(binaryName, enginePath) if (binaryName === BinaryType.libqueryEngine) { diff --git a/packages/sdk/src/getGenerators.ts b/packages/sdk/src/getGenerators.ts index 25c331e65c17..3dffcab50ffb 100644 --- a/packages/sdk/src/getGenerators.ts +++ b/packages/sdk/src/getGenerators.ts @@ -4,7 +4,7 @@ import { getOriginalBinaryTargetsValue, printGeneratorConfig, } from '@prisma/engine-core' -import { enginesVersion } from '@prisma/engines' +import { enginesVersion, getCliQueryEngineBinaryType } from '@prisma/engines' import { BinaryDownloadConfiguration, BinaryType, @@ -96,10 +96,7 @@ export async function getGenerators({ } const platform = await getPlatform() - const queryEngineBinaryType = - process.env.PRISMA_FORCE_NAPI === 'true' - ? BinaryType.libqueryEngine - : BinaryType.queryEngine + const queryEngineBinaryType = getCliQueryEngineBinaryType() const queryEngineType = binaryTypeToEngineType(queryEngineBinaryType) let prismaPath: string | undefined = binaryPathsOverride?.[queryEngineType] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06a7db1ff0ad..c367c4f80956 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,8 +1,5 @@ lockfileVersion: 5.3 -overrides: - '@prisma/sdk': 2.29.0 - importers: .: @@ -12,10 +9,10 @@ importers: '@types/benchmark': 2.1.1 '@types/debug': 4.1.7 '@types/graphviz': 0.0.33 - '@types/node': 14.17.7 + '@types/node': 14.17.9 '@types/redis': 2.8.31 - '@typescript-eslint/eslint-plugin': 4.29.0 - '@typescript-eslint/parser': 4.29.0 + '@typescript-eslint/eslint-plugin': 4.29.1 + '@typescript-eslint/parser': 4.29.1 arg: 5.0.0 batching-toposort: 1.2.0 benchmark: 2.1.4 @@ -41,7 +38,7 @@ importers: redis-lock: 0.1.4 semver: 7.3.5 staged-git-files: 1.2.0 - ts-node: 10.1.0 + ts-node: 10.2.0 typescript: 4.3.5 devDependencies: '@sindresorhus/slugify': 1.1.2 @@ -49,10 +46,10 @@ importers: '@types/benchmark': 2.1.1 '@types/debug': 4.1.7 '@types/graphviz': 0.0.33 - '@types/node': 14.17.7 + '@types/node': 14.17.9 '@types/redis': 2.8.31 - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 + '@typescript-eslint/eslint-plugin': 4.29.1_d4376362794b743c19f4cba25c7fc6f5 + '@typescript-eslint/parser': 4.29.1_eslint@7.32.0+typescript@4.3.5 arg: 5.0.0 batching-toposort: 1.2.0 benchmark: 2.1.4 @@ -62,7 +59,7 @@ importers: eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_8acbcf4842302c074111ae8720519eaa + eslint-plugin-jest: 24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 execa: 5.1.1 globby: 11.0.4 @@ -78,26 +75,26 @@ importers: redis-lock: 0.1.4 semver: 7.3.5 staged-git-files: 1.2.0 - ts-node: 10.1.0_7360de416e8b444360c6ec4574012a61 + ts-node: 10.2.0_3cddbd81c3a53971a7cbc3c93cba6165 typescript: 4.3.5 packages/cli: specifiers: '@prisma/client': workspace:* '@prisma/debug': workspace:* - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/fetch-engine': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/fetch-engine': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': workspace:* - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/migrate': workspace:* - '@prisma/sdk': 2.29.0 + '@prisma/sdk': workspace:* '@prisma/studio-server': 0.419.0 '@timsuchanek/copy': 1.4.5 - '@types/jest': 26.0.24 + '@types/jest': 27.0.0 '@types/rimraf': 3.0.1 '@types/ws': 7.4.7 - '@typescript-eslint/eslint-plugin': 4.29.0 - '@typescript-eslint/parser': 4.29.0 + '@typescript-eslint/eslint-plugin': 4.29.1 + '@typescript-eslint/parser': 4.29.1 chalk: 4.1.2 checkpoint-client: 1.1.20 dotenv: 10.0.0 @@ -110,14 +107,14 @@ importers: eslint-plugin-prettier: 3.4.0 execa: 5.1.1 fast-deep-equal: 3.1.3 - fs-jetpack: 4.1.0 + fs-jetpack: 4.1.1 get-port: 5.1.1 global-dirs: 3.0.0 indent-string: 4.0.0 is-installed-globally: 0.4.0 jest: 27.0.6 line-replace: 2.0.1 - lint-staged: 11.1.1 + lint-staged: 11.1.2 log-update: 4.0.0 make-dir: 3.1.0 node-fetch: 2.6.1 @@ -133,22 +130,22 @@ importers: ts-jest: 27.0.4 typescript: 4.3.5 dependencies: - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf devDependencies: '@prisma/client': link:../client '@prisma/debug': link:../debug - '@prisma/fetch-engine': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/fetch-engine': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': link:../generator-helper - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/migrate': link:../migrate - '@prisma/sdk': 2.29.0 + '@prisma/sdk': link:../sdk '@prisma/studio-server': 0.419.0 '@timsuchanek/copy': 1.4.5 - '@types/jest': 26.0.24 + '@types/jest': 27.0.0 '@types/rimraf': 3.0.1 '@types/ws': 7.4.7 - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 + '@typescript-eslint/eslint-plugin': 4.29.1_d4376362794b743c19f4cba25c7fc6f5 + '@typescript-eslint/parser': 4.29.1_eslint@7.32.0+typescript@4.3.5 chalk: 4.1.2 checkpoint-client: 1.1.20 dotenv: 10.0.0 @@ -157,18 +154,18 @@ importers: eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_8acbcf4842302c074111ae8720519eaa + eslint-plugin-jest: 24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 execa: 5.1.1 fast-deep-equal: 3.1.3 - fs-jetpack: 4.1.0 + fs-jetpack: 4.1.1 get-port: 5.1.1 global-dirs: 3.0.0 indent-string: 4.0.0 is-installed-globally: 0.4.0 - jest: 27.0.6_ts-node@10.1.0 + jest: 27.0.6_ts-node@10.2.0 line-replace: 2.0.1 - lint-staged: 11.1.1 + lint-staged: 11.1.2 log-update: 4.0.0 make-dir: 3.1.0 node-fetch: 2.6.1 @@ -181,29 +178,29 @@ importers: rimraf: 3.0.2 strip-ansi: 6.0.0 tempy: 1.0.1 - ts-jest: 27.0.4_52cc4273aa16028085013af47e479e10 + ts-jest: 27.0.4_442e9978f2a8aee0556473dbeff50cf9 typescript: 4.3.5 packages/client: specifiers: '@prisma/debug': workspace:* '@prisma/engine-core': workspace:* - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/engines-version': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/fetch-engine': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/engines-version': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/fetch-engine': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': workspace:* - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/migrate': workspace:* - '@prisma/sdk': 2.29.0 + '@prisma/sdk': workspace:* '@timsuchanek/copy': 1.4.5 '@types/debug': 4.1.7 - '@types/jest': 26.0.24 + '@types/jest': 27.0.0 '@types/js-levenshtein': 1.1.0 '@types/mssql': 6.0.8 - '@types/node': 12.20.18 + '@types/node': 12.20.19 '@types/pg': 8.6.1 - '@typescript-eslint/eslint-plugin': 4.29.0 - '@typescript-eslint/parser': 4.29.0 + '@typescript-eslint/eslint-plugin': 4.29.1 + '@typescript-eslint/parser': 4.29.1 arg: 5.0.0 chalk: 4.1.2 decimal.js: 10.3.1 @@ -224,7 +221,7 @@ importers: jest: 27.0.6 js-levenshtein: 1.1.6 klona: 2.0.4 - lint-staged: 11.1.1 + lint-staged: 11.1.2 make-dir: 3.1.0 mariadb: 2.5.4 mssql: 7.2.0 @@ -234,7 +231,7 @@ importers: prettier: 2.3.2 replace-string: 3.1.0 rimraf: 3.0.2 - rollup: 2.55.1 + rollup: 2.56.2 rollup-plugin-dts: 3.0.2 sort-keys: 4.2.0 source-map-support: 0.5.19 @@ -243,29 +240,29 @@ importers: strip-ansi: 6.0.0 strip-indent: 3.0.0 ts-jest: 27.0.4 - ts-node: 10.1.0 + ts-node: 10.2.0 tsd: 0.17.0 typescript: 4.3.5 dependencies: - '@prisma/engines-version': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines-version': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf devDependencies: '@prisma/debug': link:../debug '@prisma/engine-core': link:../engine-core - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/fetch-engine': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/fetch-engine': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': link:../generator-helper - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/migrate': link:../migrate - '@prisma/sdk': 2.29.0 + '@prisma/sdk': link:../sdk '@timsuchanek/copy': 1.4.5 '@types/debug': 4.1.7 - '@types/jest': 26.0.24 + '@types/jest': 27.0.0 '@types/js-levenshtein': 1.1.0 '@types/mssql': 6.0.8 - '@types/node': 12.20.18 + '@types/node': 12.20.19 '@types/pg': 8.6.1 - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 + '@typescript-eslint/eslint-plugin': 4.29.1_d4376362794b743c19f4cba25c7fc6f5 + '@typescript-eslint/parser': 4.29.1_eslint@7.32.0+typescript@4.3.5 arg: 5.0.0 chalk: 4.1.2 decimal.js: 10.3.1 @@ -274,7 +271,7 @@ importers: eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_8acbcf4842302c074111ae8720519eaa + eslint-plugin-jest: 24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 execa: 5.1.1 flat-map-polyfill: 0.3.8 @@ -283,10 +280,10 @@ importers: indent-string: 4.0.0 is-obj: 2.0.0 is-regexp: 2.1.0 - jest: 27.0.6_ts-node@10.1.0 + jest: 27.0.6_ts-node@10.2.0 js-levenshtein: 1.1.6 klona: 2.0.4 - lint-staged: 11.1.1 + lint-staged: 11.1.2 make-dir: 3.1.0 mariadb: 2.5.4 mssql: 7.2.0 @@ -296,16 +293,16 @@ importers: prettier: 2.3.2 replace-string: 3.1.0 rimraf: 3.0.2 - rollup: 2.55.1 - rollup-plugin-dts: 3.0.2_rollup@2.55.1+typescript@4.3.5 + rollup: 2.56.2 + rollup-plugin-dts: 3.0.2_rollup@2.56.2+typescript@4.3.5 sort-keys: 4.2.0 source-map-support: 0.5.19 sql-template-tag: 4.0.0 stacktrace-parser: 0.1.10 strip-ansi: 6.0.0 strip-indent: 3.0.0 - ts-jest: 27.0.4_52cc4273aa16028085013af47e479e10 - ts-node: 10.1.0_620c6be159ae5abe9d22c4491af881d8 + ts-jest: 27.0.4_442e9978f2a8aee0556473dbeff50cf9 + ts-node: 10.2.0_1be1d6e448db6d942ef39e7e14f59568 tsd: 0.17.0 typescript: 4.3.5 @@ -326,7 +323,7 @@ importers: execa: 5.1.1 glob: 7.1.7 jest: 27.0.6 - lint-staged: 11.1.1 + lint-staged: 11.1.2 ms: 2.1.3 prettier: 2.3.2 strip-ansi: 6.0.0 @@ -349,8 +346,8 @@ importers: eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 execa: 5.1.1 glob: 7.1.7 - jest: 27.0.6_ts-node@10.1.0 - lint-staged: 11.1.1 + jest: 27.0.6_ts-node@10.2.0 + lint-staged: 11.1.2 prettier: 2.3.2 strip-ansi: 6.0.0 ts-jest: 27.0.4_442e9978f2a8aee0556473dbeff50cf9 @@ -359,13 +356,13 @@ importers: packages/engine-core: specifiers: '@prisma/debug': workspace:* - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': workspace:* - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@types/jest': 26.0.24 - '@types/node': 12.20.18 - '@typescript-eslint/eslint-plugin': 4.29.0 - '@typescript-eslint/parser': 4.29.0 + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@types/jest': 27.0.0 + '@types/node': 12.20.19 + '@typescript-eslint/eslint-plugin': 4.29.1 + '@typescript-eslint/parser': 4.29.1 chalk: 4.1.2 esbuild: 0.12.16 eslint: 7.32.0 @@ -378,7 +375,7 @@ importers: glob: 7.1.7 indent-string: 4.0.0 jest: 27.0.6 - lint-staged: 11.1.1 + lint-staged: 11.1.2 new-github-issue-url: 0.2.1 p-retry: 4.6.1 prettier: 2.3.2 @@ -389,9 +386,9 @@ importers: undici: 3.3.6 dependencies: '@prisma/debug': link:../debug - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': link:../generator-helper - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf chalk: 4.1.2 execa: 5.1.1 get-stream: 6.0.1 @@ -401,32 +398,32 @@ importers: terminal-link: 2.1.1 undici: 3.3.6 devDependencies: - '@types/jest': 26.0.24 - '@types/node': 12.20.18 - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 + '@types/jest': 27.0.0 + '@types/node': 12.20.19 + '@typescript-eslint/eslint-plugin': 4.29.1_d4376362794b743c19f4cba25c7fc6f5 + '@typescript-eslint/parser': 4.29.1_eslint@7.32.0+typescript@4.3.5 esbuild: 0.12.16 eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_8acbcf4842302c074111ae8720519eaa + eslint-plugin-jest: 24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 glob: 7.1.7 - jest: 27.0.6_ts-node@10.1.0 - lint-staged: 11.1.1 + jest: 27.0.6_ts-node@10.2.0 + lint-staged: 11.1.2 prettier: 2.3.2 strip-ansi: 6.0.0 - ts-jest: 27.0.4_52cc4273aa16028085013af47e479e10 + ts-jest: 27.0.4_442e9978f2a8aee0556473dbeff50cf9 typescript: 4.3.5 packages/generator-helper: specifiers: '@prisma/debug': workspace:* '@types/cross-spawn': 6.0.2 - '@types/jest': 26.0.24 - '@types/node': 12.20.18 - '@typescript-eslint/eslint-plugin': 4.29.0 - '@typescript-eslint/parser': 4.29.0 + '@types/jest': 27.0.0 + '@types/node': 12.20.19 + '@typescript-eslint/eslint-plugin': 4.29.1 + '@typescript-eslint/parser': 4.29.1 chalk: 4.1.2 cross-spawn: 7.0.3 esbuild: 0.12.16 @@ -437,10 +434,10 @@ importers: eslint-plugin-prettier: 3.4.0 glob: 7.1.7 jest: 27.0.6 - lint-staged: 11.1.1 + lint-staged: 11.1.2 prettier: 2.3.2 ts-jest: 27.0.4 - ts-node: 10.1.0 + ts-node: 10.2.0 typescript: 4.3.5 dependencies: '@prisma/debug': link:../debug @@ -448,38 +445,38 @@ importers: chalk: 4.1.2 cross-spawn: 7.0.3 devDependencies: - '@types/jest': 26.0.24 - '@types/node': 12.20.18 - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 + '@types/jest': 27.0.0 + '@types/node': 12.20.19 + '@typescript-eslint/eslint-plugin': 4.29.1_d4376362794b743c19f4cba25c7fc6f5 + '@typescript-eslint/parser': 4.29.1_eslint@7.32.0+typescript@4.3.5 esbuild: 0.12.16 eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_8acbcf4842302c074111ae8720519eaa + eslint-plugin-jest: 24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 glob: 7.1.7 - jest: 27.0.6_ts-node@10.1.0 - lint-staged: 11.1.1 + jest: 27.0.6_ts-node@10.2.0 + lint-staged: 11.1.2 prettier: 2.3.2 - ts-jest: 27.0.4_52cc4273aa16028085013af47e479e10 - ts-node: 10.1.0_620c6be159ae5abe9d22c4491af881d8 + ts-jest: 27.0.4_442e9978f2a8aee0556473dbeff50cf9 + ts-node: 10.2.0_1be1d6e448db6d942ef39e7e14f59568 typescript: 4.3.5 packages/integration-tests: specifiers: '@prisma/client': workspace:* - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/migrate': workspace:* - '@prisma/sdk': 2.29.0 + '@prisma/sdk': workspace:* '@sindresorhus/slugify': 1.1.2 - '@types/jest': 26.0.24 + '@types/jest': 27.0.0 '@types/mssql': 6.0.8 - '@types/node': 12.20.18 + '@types/node': 12.20.19 '@types/pg': 8.6.1 '@types/sqlite3': 3.1.7 - '@typescript-eslint/eslint-plugin': 4.29.0 - '@typescript-eslint/parser': 4.29.0 + '@typescript-eslint/eslint-plugin': 4.29.1 + '@typescript-eslint/parser': 4.29.1 decimal.js: 10.3.1 esbuild: 0.12.16 escape-string-regexp: 4.0.0 @@ -489,10 +486,10 @@ importers: eslint-plugin-jest: 24.4.0 eslint-plugin-prettier: 3.4.0 execa: 5.1.1 - fs-jetpack: 4.1.0 + fs-jetpack: 4.1.1 glob: 7.1.7 jest: 27.0.6 - lint-staged: 11.1.1 + lint-staged: 11.1.2 mariadb: 2.5.4 mssql: 7.2.0 pg: 8.7.1 @@ -505,35 +502,35 @@ importers: strip-ansi: 6.0.0 tempy: 1.0.1 ts-jest: 27.0.4 - ts-node: 10.1.0 + ts-node: 10.2.0 typescript: 4.3.5 verror: 1.10.0 devDependencies: '@prisma/client': link:../client - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/migrate': link:../migrate - '@prisma/sdk': 2.29.0 + '@prisma/sdk': link:../sdk '@sindresorhus/slugify': 1.1.2 - '@types/jest': 26.0.24 + '@types/jest': 27.0.0 '@types/mssql': 6.0.8 - '@types/node': 12.20.18 + '@types/node': 12.20.19 '@types/pg': 8.6.1 '@types/sqlite3': 3.1.7 - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 + '@typescript-eslint/eslint-plugin': 4.29.1_d4376362794b743c19f4cba25c7fc6f5 + '@typescript-eslint/parser': 4.29.1_eslint@7.32.0+typescript@4.3.5 decimal.js: 10.3.1 esbuild: 0.12.16 escape-string-regexp: 4.0.0 eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_8acbcf4842302c074111ae8720519eaa + eslint-plugin-jest: 24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 execa: 5.1.1 - fs-jetpack: 4.1.0 + fs-jetpack: 4.1.1 glob: 7.1.7 - jest: 27.0.6_ts-node@10.1.0 - lint-staged: 11.1.1 + jest: 27.0.6_ts-node@10.2.0 + lint-staged: 11.1.2 mariadb: 2.5.4 mssql: 7.2.0 pg: 8.7.1 @@ -545,26 +542,26 @@ importers: string-hash: 1.1.3 strip-ansi: 6.0.0 tempy: 1.0.1 - ts-jest: 27.0.4_52cc4273aa16028085013af47e479e10 - ts-node: 10.1.0_620c6be159ae5abe9d22c4491af881d8 + ts-jest: 27.0.4_442e9978f2a8aee0556473dbeff50cf9 + ts-node: 10.2.0_1be1d6e448db6d942ef39e7e14f59568 typescript: 4.3.5 verror: 1.10.0 packages/migrate: specifiers: '@prisma/debug': workspace:* - '@prisma/engines-version': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines-version': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': workspace:* - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/sdk': 2.29.0 + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/sdk': workspace:* '@sindresorhus/slugify': 1.1.2 - '@types/jest': 26.0.24 - '@types/node': 12.20.18 + '@types/jest': 27.0.0 + '@types/node': 12.20.19 '@types/pg': 8.6.1 '@types/prompts': 2.0.14 '@types/sqlite3': 3.1.7 - '@typescript-eslint/eslint-plugin': 4.29.0 - '@typescript-eslint/parser': 4.29.0 + '@typescript-eslint/eslint-plugin': 4.29.1 + '@typescript-eslint/parser': 4.29.1 chalk: 4.1.2 del: 6.0.0 esbuild: 0.12.16 @@ -574,13 +571,13 @@ importers: eslint-plugin-jest: 24.4.0 eslint-plugin-prettier: 3.4.0 execa: 5.1.1 - fs-jetpack: 4.1.0 + fs-jetpack: 4.1.1 glob: 7.1.7 global-dirs: 3.0.0 has-yarn: 2.1.0 indent-string: 4.0.0 jest: 27.0.6 - lint-staged: 11.1.1 + lint-staged: 11.1.2 log-update: 4.0.0 make-dir: 3.1.0 mariadb: 2.5.4 @@ -601,7 +598,7 @@ importers: typescript: 4.3.5 dependencies: '@prisma/debug': link:../debug - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@sindresorhus/slugify': 1.1.2 execa: 5.1.1 global-dirs: 3.0.0 @@ -616,28 +613,28 @@ importers: strip-ansi: 6.0.0 strip-indent: 3.0.0 devDependencies: - '@prisma/engines-version': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines-version': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': link:../generator-helper - '@prisma/sdk': 2.29.0 - '@types/jest': 26.0.24 - '@types/node': 12.20.18 + '@prisma/sdk': link:../sdk + '@types/jest': 27.0.0 + '@types/node': 12.20.19 '@types/pg': 8.6.1 '@types/prompts': 2.0.14 '@types/sqlite3': 3.1.7 - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 + '@typescript-eslint/eslint-plugin': 4.29.1_d4376362794b743c19f4cba25c7fc6f5 + '@typescript-eslint/parser': 4.29.1_eslint@7.32.0+typescript@4.3.5 chalk: 4.1.2 del: 6.0.0 esbuild: 0.12.16 eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_8acbcf4842302c074111ae8720519eaa + eslint-plugin-jest: 24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 - fs-jetpack: 4.1.0 + fs-jetpack: 4.1.1 glob: 7.1.7 - jest: 27.0.6_ts-node@10.1.0 - lint-staged: 11.1.1 + jest: 27.0.6_ts-node@10.2.0 + lint-staged: 11.1.2 make-dir: 3.1.0 mariadb: 2.5.4 mock-stdin: 1.0.0 @@ -646,16 +643,16 @@ importers: sqlite-async: 1.1.1 sqlite3: 5.0.2 tempy: 1.0.1 - ts-jest: 27.0.4_52cc4273aa16028085013af47e479e10 + ts-jest: 27.0.4_442e9978f2a8aee0556473dbeff50cf9 typescript: 4.3.5 packages/react-prisma: specifiers: '@prisma/client': workspace:* - '@types/jest': 26.0.24 - '@types/node': 14.17.7 - '@typescript-eslint/eslint-plugin': 4.29.0 - '@typescript-eslint/parser': 4.29.0 + '@types/jest': 27.0.0 + '@types/node': 14.17.9 + '@typescript-eslint/eslint-plugin': 4.29.1 + '@typescript-eslint/parser': 4.29.1 esbuild: 0.12.16 eslint: 7.32.0 eslint-config-prettier: 8.3.0 @@ -664,7 +661,7 @@ importers: eslint-plugin-prettier: 3.4.0 glob: 7.1.7 jest: 27.0.6 - lint-staged: 11.1.1 + lint-staged: 11.1.2 prettier: 2.3.2 react: 17.0.2 strip-ansi: 7.0.0 @@ -672,41 +669,41 @@ importers: typescript: 4.3.5 devDependencies: '@prisma/client': link:../client - '@types/jest': 26.0.24 - '@types/node': 14.17.7 - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 + '@types/jest': 27.0.0 + '@types/node': 14.17.9 + '@typescript-eslint/eslint-plugin': 4.29.1_d4376362794b743c19f4cba25c7fc6f5 + '@typescript-eslint/parser': 4.29.1_eslint@7.32.0+typescript@4.3.5 esbuild: 0.12.16 eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_8acbcf4842302c074111ae8720519eaa + eslint-plugin-jest: 24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 glob: 7.1.7 - jest: 27.0.6_ts-node@10.1.0 - lint-staged: 11.1.1 + jest: 27.0.6_ts-node@10.2.0 + lint-staged: 11.1.2 prettier: 2.3.2 react: 17.0.2 strip-ansi: 7.0.0 - ts-jest: 27.0.4_52cc4273aa16028085013af47e479e10 + ts-jest: 27.0.4_442e9978f2a8aee0556473dbeff50cf9 typescript: 4.3.5 packages/sdk: specifiers: '@prisma/debug': workspace:* '@prisma/engine-core': workspace:* - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/fetch-engine': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/fetch-engine': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': workspace:* - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@timsuchanek/copy': 1.4.5 - '@types/jest': 26.0.24 - '@types/node': 12.20.18 + '@types/jest': 27.0.0 + '@types/node': 12.20.19 '@types/resolve': 1.20.1 '@types/shell-quote': 1.7.1 '@types/tar': 4.0.5 - '@typescript-eslint/eslint-plugin': 4.29.0 - '@typescript-eslint/parser': 4.29.0 + '@typescript-eslint/eslint-plugin': 4.29.1 + '@typescript-eslint/parser': 4.29.1 archiver: 4.0.2 arg: 5.0.0 chalk: 4.1.2 @@ -727,7 +724,7 @@ importers: has-yarn: 2.1.0 is-ci: 3.0.0 jest: 27.0.6 - lint-staged: 11.1.1 + lint-staged: 11.1.2 make-dir: 3.1.0 node-fetch: 2.6.1 p-map: 4.0.0 @@ -739,22 +736,22 @@ importers: string-width: 4.2.2 strip-ansi: 6.0.0 strip-indent: 3.0.0 - tar: 6.1.6 + tar: 6.1.7 temp-dir: 2.0.0 temp-write: 4.0.0 tempy: 1.0.1 terminal-link: 2.1.1 tmp: 0.2.1 ts-jest: 27.0.4 - ts-node: 10.1.0 + ts-node: 10.2.0 typescript: 4.3.5 dependencies: '@prisma/debug': link:../debug '@prisma/engine-core': link:../engine-core - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/fetch-engine': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/fetch-engine': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@prisma/generator-helper': link:../generator-helper - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@timsuchanek/copy': 1.4.5 archiver: 4.0.2 arg: 5.0.0 @@ -778,32 +775,32 @@ importers: string-width: 4.2.2 strip-ansi: 6.0.0 strip-indent: 3.0.0 - tar: 6.1.6 + tar: 6.1.7 temp-dir: 2.0.0 temp-write: 4.0.0 tempy: 1.0.1 terminal-link: 2.1.1 tmp: 0.2.1 devDependencies: - '@types/jest': 26.0.24 - '@types/node': 12.20.18 + '@types/jest': 27.0.0 + '@types/node': 12.20.19 '@types/resolve': 1.20.1 '@types/shell-quote': 1.7.1 '@types/tar': 4.0.5 - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 + '@typescript-eslint/eslint-plugin': 4.29.1_d4376362794b743c19f4cba25c7fc6f5 + '@typescript-eslint/parser': 4.29.1_eslint@7.32.0+typescript@4.3.5 esbuild: 0.12.16 eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 - eslint-plugin-jest: 24.4.0_8acbcf4842302c074111ae8720519eaa + eslint-plugin-jest: 24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd eslint-plugin-prettier: 3.4.0_5a48a349ffec60f5257b5f148f5199c3 glob: 7.1.7 - jest: 27.0.6_ts-node@10.1.0 - lint-staged: 11.1.1 + jest: 27.0.6_ts-node@10.2.0 + lint-staged: 11.1.2 prettier: 2.3.2 - ts-jest: 27.0.4_52cc4273aa16028085013af47e479e10 - ts-node: 10.1.0_620c6be159ae5abe9d22c4491af881d8 + ts-jest: 27.0.4_442e9978f2a8aee0556473dbeff50cf9 + ts-node: 10.2.0_1be1d6e448db6d942ef39e7e14f59568 typescript: 4.3.5 packages: @@ -1354,6 +1351,18 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@cspotcode/source-map-consumer/0.8.0: + resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==} + engines: {node: '>= 12'} + dev: true + + /@cspotcode/source-map-support/0.6.1: + resolution: {integrity: sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==} + engines: {node: '>=12'} + dependencies: + '@cspotcode/source-map-consumer': 0.8.0 + dev: true + /@eslint/eslintrc/0.4.3: resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1414,7 +1423,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core/27.0.6_ts-node@10.1.0: + /@jest/core/27.0.6_ts-node@10.2.0: resolution: {integrity: sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: @@ -1435,7 +1444,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.6 jest-changed-files: 27.0.6 - jest-config: 27.0.6_ts-node@10.1.0 + jest-config: 27.0.6_ts-node@10.2.0 jest-haste-map: 27.0.6 jest-message-util: 27.0.6 jest-regex-util: 27.0.6 @@ -1588,7 +1597,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.3 '@types/istanbul-reports': 3.0.1 - '@types/node': 14.17.7 + '@types/node': 14.17.9 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -1649,8 +1658,8 @@ packages: transitivePeerDependencies: - supports-color - /@prisma/debug/2.29.0: - resolution: {integrity: sha512-ZqhbExZXBVzDChStfGaLo6jaJqFc4EGuE8d6GBhUJkVVyg2C89cT2kD57TSbpuk17K3D7AeUVv6XilG+79buqA==} + /@prisma/debug/2.30.0-dev.12: + resolution: {integrity: sha512-eP7w/lTWFDWI5J9GzoXP2IxhiJN2y/sluZGtOhjztjyoadgJC6UDc2VJR7yDxnZKWFI6nvZd+3Pg1UtYu0gEmQ==} dependencies: debug: 4.3.2 ms: 2.1.3 @@ -1658,13 +1667,13 @@ packages: - supports-color dev: true - /@prisma/engine-core/2.29.0: - resolution: {integrity: sha512-w3x7xNLGJncG6lFO69gpk/bbikgxlWn9Jhkqi0zGWZua2HnGzacfmbbTFpQ7iSnn6Vl+Dtnv3HVgNINBd12Fig==} + /@prisma/engine-core/2.30.0-dev.12: + resolution: {integrity: sha512-+vhhRJ/lmYGokInKmp+YCdfa8t+swpMpDPGhg0ffCOa+F9hqnvTsiW2F2QCsOzjWW07kOv3mt/lyfkshaQLADQ==} dependencies: - '@prisma/debug': 2.29.0 - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/generator-helper': 2.29.0 - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/debug': 2.30.0-dev.12 + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/generator-helper': 2.30.0-dev.12 + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf chalk: 4.1.2 execa: 5.1.1 get-stream: 6.0.1 @@ -1677,18 +1686,18 @@ packages: - supports-color dev: true - /@prisma/engines-version/2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a: - resolution: {integrity: sha512-BU1DNNDhdzqjHtycpUzDrU8+jf6ZY+fbXvCV/rbqG+0JifljlIo4vbkHDMg97gBi1Do8pTLZGlTH16FlniKgAg==} + /@prisma/engines-version/2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf: + resolution: {integrity: sha512-z/V2iMmNxwYdUAl6XR0mtDz/48UBiuqO1N9HOQ8HLwCFKegL8v8z/q2k3Iq73vMT0ZhMpIO76hahy3z/CALTJA==} - /@prisma/engines/2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a: - resolution: {integrity: sha512-cgEoGK3dmKZkMp/sRbL8TsuVS50rHXYBHk2NY18DPUGr5//4ICno46EjzlayqAFVak8J6RtWZEs+8tE8j8frAQ==} + /@prisma/engines/2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf: + resolution: {integrity: sha512-0IGdeW06xHGE7+9At5SIo9NhvFo4q78X5dgjlMVd7Bw68ngOUWGmNTgSPt93kPkPwTkZwLGL+EGVVd9i7ToLTg==} requiresBuild: true - /@prisma/fetch-engine/2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a: - resolution: {integrity: sha512-HsTHffo2xg0rZchdqWJHDvl7JaOi2U1rDockKYAYPf3grGZ14AnJ/ZVP292xMm0IiGLkb5YE3qkI5SKoGEUqMw==} + /@prisma/fetch-engine/2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf: + resolution: {integrity: sha512-rS6CG8xR+E+JXgsZhRM5YGnuM/9/GqfliqDLl/p0Nq7oDIW/3kJSUIHjLW610hKCt0F0ekhldJFNZlI9i9x32Q==} dependencies: '@prisma/debug': 2.28.0 - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf chalk: 4.1.2 execa: 5.1.1 find-cache-dir: 3.3.1 @@ -1707,10 +1716,10 @@ packages: transitivePeerDependencies: - supports-color - /@prisma/generator-helper/2.29.0: - resolution: {integrity: sha512-1pG55jGXEB/DBpZ1LA6Ueo+Z0AMwD9tDLCe0+SCRUNkL5UpuRaiRdKx+0PctELmPtEXtNKz9hpF2eAst718MDQ==} + /@prisma/generator-helper/2.30.0-dev.12: + resolution: {integrity: sha512-k4c6q4VN3F/ylzn8SH5UZUs/OOd4amlJs1/hGkJGQOsKFr70WOWI6anesbNlUUWgQG5CEZu1//A453zsjv8AMA==} dependencies: - '@prisma/debug': 2.29.0 + '@prisma/debug': 2.30.0-dev.12 '@types/cross-spawn': 6.0.2 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -1718,22 +1727,22 @@ packages: - supports-color dev: true - /@prisma/get-platform/2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a: - resolution: {integrity: sha512-eEuXFcELlo8bAszQOz3YOyVpoKMjD/RSml29P51WFaDaHZaudfqV6OkSpMV2Qchcyg6neI1mvT+0acutBpNXTw==} + /@prisma/get-platform/2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf: + resolution: {integrity: sha512-mQd1vfQ77tAG7veIqX56A1gwcK8GWpQiE88qavRjLGpXDqTUm6ZfxeuCWzemoeiS4xCk7qyIHwpku/TRME0F+A==} dependencies: '@prisma/debug': 2.28.0 transitivePeerDependencies: - supports-color - /@prisma/sdk/2.29.0: - resolution: {integrity: sha512-b0iwLC4cyTrg6aXEOermRH4p0tmOaOogcXTnNcFT4b4hyFEZkpdO5u0Kjy2i82rj/ffd7mGartr/1H5uuBLUrg==} + /@prisma/sdk/2.30.0-dev.12: + resolution: {integrity: sha512-ED0ugZol8iMcD5qACq5T7SsGpd2Sj62iVwft1WsSMYMNdpg1SxRiqGU7e1ANhsu+hgSIwO0Ouy39Wf/rpO/W3w==} dependencies: - '@prisma/debug': 2.29.0 - '@prisma/engine-core': 2.29.0 - '@prisma/engines': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/fetch-engine': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a - '@prisma/generator-helper': 2.29.0 - '@prisma/get-platform': 2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a + '@prisma/debug': 2.30.0-dev.12 + '@prisma/engine-core': 2.30.0-dev.12 + '@prisma/engines': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/fetch-engine': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf + '@prisma/generator-helper': 2.30.0-dev.12 + '@prisma/get-platform': 2.30.0-6.6a90cd8ab569d4e90b1df610be610094bafc1fdf '@timsuchanek/copy': 1.4.5 archiver: 4.0.2 arg: 5.0.0 @@ -1757,7 +1766,7 @@ packages: string-width: 4.2.2 strip-ansi: 6.0.0 strip-indent: 3.0.0 - tar: 6.1.6 + tar: 6.1.7 temp-dir: 2.0.0 temp-write: 4.0.0 tempy: 1.0.1 @@ -1767,13 +1776,13 @@ packages: - supports-color dev: true - /@prisma/studio-pcw/0.419.0_@prisma+sdk@2.29.0: + /@prisma/studio-pcw/0.419.0_@prisma+sdk@2.30.0-dev.12: resolution: {integrity: sha512-74YPH6COysslPnmt/qq12A4iJCgUur1fXilmmD2s71s/iJrkmZ9h5Z6BQe9LjMW9K3Byz99G7xD6vVMajYjSWA==} peerDependencies: '@prisma/client': '*' '@prisma/sdk': '*' dependencies: - '@prisma/sdk': 2.29.0 + '@prisma/sdk': 2.30.0-dev.12 debug: 4.3.1 lodash: 4.17.21 transitivePeerDependencies: @@ -1783,8 +1792,8 @@ packages: /@prisma/studio-server/0.419.0: resolution: {integrity: sha512-b6zY2PV/4fyfTi7VlMYPrB+nJUH94IIQb42z1uYHPTJhEZy1NrjZr3pmTVcyMUS2KR+04ySJ85fol/lOodS5qQ==} dependencies: - '@prisma/sdk': 2.29.0 - '@prisma/studio-pcw': 0.419.0_@prisma+sdk@2.29.0 + '@prisma/sdk': 2.30.0-dev.12 + '@prisma/studio-pcw': 0.419.0_@prisma+sdk@2.30.0-dev.12 '@prisma/studio-transports': 0.419.0 '@sentry/node': 6.2.5 checkpoint-client: 1.1.20 @@ -1944,8 +1953,8 @@ packages: resolution: {integrity: sha512-RKkL8eTdPv6t5EHgFKIVQgsDapugbuOptNd9OOunN/HAkzmmTnZELx1kNCK0rSdUYGmiFMM3rRQMAWiyp023LQ==} dev: true - /@tsconfig/node16/1.0.1: - resolution: {integrity: sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==} + /@tsconfig/node16/1.0.2: + resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} dev: true /@tsd/typescript/4.3.5: @@ -2044,13 +2053,6 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/26.0.24: - resolution: {integrity: sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==} - dependencies: - jest-diff: 26.6.2 - pretty-format: 26.6.2 - dev: true - /@types/jest/27.0.0: resolution: {integrity: sha512-IlpQZVpxufe+3qPaAqEoSPHVSxnJh1cf0BqqWHJeKiAUbwnHdmNzjP3ZCWSZSTbmAGXQPNk9QmM3Bif0pR54rg==} dependencies: @@ -2097,10 +2099,6 @@ packages: form-data: 3.0.1 dev: true - /@types/node/12.20.18: - resolution: {integrity: sha512-YoTiIwdKxM3VLiY2sM05x4iGuTveYiCcDaUVmo1L5ndrXxPGW/NEoZu+pGcBirziomizcZsnsQoemikKcB2fRA==} - dev: true - /@types/node/12.20.19: resolution: {integrity: sha512-niAuZrwrjKck4+XhoCw6AAVQBENHftpXw9F4ryk66fTgYaKQ53R4FI7c9vUGGw5vQis1HKBHDR1gcYI/Bq1xvw==} dev: true @@ -2112,6 +2110,10 @@ packages: resolution: {integrity: sha512-SYTdMaW47se8499q8m0fYKZZRlmq0RaRv6oYmlVm6DUm31l0fhOl1D03X8hGxohCKTI2Bg6w7W0TiYB51aJzag==} dev: true + /@types/node/14.17.9: + resolution: {integrity: sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g==} + dev: true + /@types/node/8.10.66: resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} dev: true @@ -2222,31 +2224,6 @@ packages: '@types/yargs-parser': 20.2.1 dev: true - /@typescript-eslint/eslint-plugin/4.29.0_48ea228fa0647506aa803d17f48b59f7: - resolution: {integrity: sha512-eiREtqWRZ8aVJcNru7cT/AMVnYd9a2UHsfZT8MR1dW3UUEg6jDv9EQ9Cq4CUPZesyQ58YUpoAADGv71jY8RwgA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - '@typescript-eslint/parser': ^4.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/experimental-utils': 4.29.0_eslint@7.32.0+typescript@4.3.5 - '@typescript-eslint/parser': 4.29.0_eslint@7.32.0+typescript@4.3.5 - '@typescript-eslint/scope-manager': 4.29.0 - debug: 4.3.2 - eslint: 7.32.0 - functional-red-black-tree: 1.0.1 - regexpp: 3.1.0 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.3.5 - typescript: 4.3.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/eslint-plugin/4.29.1_d4376362794b743c19f4cba25c7fc6f5: resolution: {integrity: sha512-AHqIU+SqZZgBEiWOrtN94ldR3ZUABV5dUG94j8Nms9rQnHFc8fvDOue/58K4CFz6r8OtDDc35Pw9NQPWo0Ayrw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2290,24 +2267,6 @@ packages: - typescript dev: true - /@typescript-eslint/experimental-utils/4.29.0_eslint@7.32.0+typescript@4.3.5: - resolution: {integrity: sha512-FpNVKykfeaIxlArLUP/yQfv/5/3rhl1ov6RWgud4OgbqWLkEq7lqgQU9iiavZRzpzCRQV4XddyFz3wFXdkiX9w==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: '*' - dependencies: - '@types/json-schema': 7.0.7 - '@typescript-eslint/scope-manager': 4.29.0 - '@typescript-eslint/types': 4.29.0 - '@typescript-eslint/typescript-estree': 4.29.0_typescript@4.3.5 - eslint: 7.32.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@7.32.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/experimental-utils/4.29.1_eslint@7.32.0+typescript@4.3.5: resolution: {integrity: sha512-kl6QG6qpzZthfd2bzPNSJB2YcZpNOrP6r9jueXupcZHnL74WiuSjaft7WSu17J9+ae9zTlk0KJMXPUj0daBxMw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2326,26 +2285,6 @@ packages: - typescript dev: true - /@typescript-eslint/parser/4.29.0_eslint@7.32.0+typescript@4.3.5: - resolution: {integrity: sha512-+92YRNHFdXgq+GhWQPT2bmjX09X7EH36JfgN2/4wmhtwV/HPxozpCNst8jrWcngLtEVd/4zAwA6BKojAlf+YqA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 4.29.0 - '@typescript-eslint/types': 4.29.0 - '@typescript-eslint/typescript-estree': 4.29.0_typescript@4.3.5 - debug: 4.3.2 - eslint: 7.32.0 - typescript: 4.3.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/parser/4.29.1_eslint@7.32.0+typescript@4.3.5: resolution: {integrity: sha512-3fL5iN20hzX3Q4OkG7QEPFjZV2qsVGiDhEwwh+EkmE/w7oteiOvUNzmpu5eSwGJX/anCryONltJ3WDmAzAoCMg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2374,14 +2313,6 @@ packages: '@typescript-eslint/visitor-keys': 4.28.3 dev: true - /@typescript-eslint/scope-manager/4.29.0: - resolution: {integrity: sha512-HPq7XAaDMM3DpmuijxLV9Io8/6pQnliiXMQUcAdjpJJSR+fdmbD/zHCd7hMkjJn04UQtCQBtshgxClzg6NIS2w==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dependencies: - '@typescript-eslint/types': 4.29.0 - '@typescript-eslint/visitor-keys': 4.29.0 - dev: true - /@typescript-eslint/scope-manager/4.29.1: resolution: {integrity: sha512-Hzv/uZOa9zrD/W5mftZa54Jd5Fed3tL6b4HeaOpwVSabJK8CJ+2MkDasnX/XK4rqP5ZTWngK1ZDeCi6EnxPQ7A==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} @@ -2395,11 +2326,6 @@ packages: engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@typescript-eslint/types/4.29.0: - resolution: {integrity: sha512-2YJM6XfWfi8pgU2HRhTp7WgRw78TCRO3dOmSpAvIQ8MOv4B46JD2chnhpNT7Jq8j0APlIbzO1Bach734xxUl4A==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dev: true - /@typescript-eslint/types/4.29.1: resolution: {integrity: sha512-Jj2yu78IRfw4nlaLtKjVaGaxh/6FhofmQ/j8v3NXmAiKafbIqtAPnKYrf0sbGjKdj0hS316J8WhnGnErbJ4RCA==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} @@ -2426,27 +2352,6 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/4.29.0_typescript@4.3.5: - resolution: {integrity: sha512-8ZpNHDIOyqzzgZrQW9+xQ4k5hM62Xy2R4RPO3DQxMc5Rq5QkCdSpk/drka+DL9w6sXNzV5nrdlBmf8+x495QXQ==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 4.29.0 - '@typescript-eslint/visitor-keys': 4.29.0 - debug: 4.3.2 - globby: 11.0.4 - is-glob: 4.0.1 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.3.5 - typescript: 4.3.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree/4.29.1_typescript@4.3.5: resolution: {integrity: sha512-lIkkrR9E4lwZkzPiRDNq0xdC3f2iVCUjw/7WPJ4S2Sl6C3nRWkeE1YXCQ0+KsiaQRbpY16jNaokdWnm9aUIsfw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2476,14 +2381,6 @@ packages: eslint-visitor-keys: 2.0.0 dev: true - /@typescript-eslint/visitor-keys/4.29.0: - resolution: {integrity: sha512-LoaofO1C/jAJYs0uEpYMXfHboGXzOJeV118X4OsZu9f7rG7Pr9B3+4HTU8+err81rADa4xfQmAxnRnPAI2jp+Q==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dependencies: - '@typescript-eslint/types': 4.29.0 - eslint-visitor-keys: 2.0.0 - dev: true - /@typescript-eslint/visitor-keys/4.29.1: resolution: {integrity: sha512-zLqtjMoXvgdZY/PG6gqA73V8BjqPs4af1v2kiiETBObp+uC6gRYnJLmJHxC0QyUrrHDLJPIWNYxoBV3wbcRlag==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} @@ -2535,6 +2432,11 @@ packages: 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'} @@ -3597,24 +3499,6 @@ packages: ignore: 5.1.8 dev: true - /eslint-plugin-jest/24.4.0_8acbcf4842302c074111ae8720519eaa: - resolution: {integrity: sha512-8qnt/hgtZ94E9dA6viqfViKBfkJwFHXgJmTWlMGDgunw1XJEGqm3eiPjDsTanM3/u/3Az82nyQM9GX7PM/QGmg==} - engines: {node: '>=10'} - peerDependencies: - '@typescript-eslint/eslint-plugin': '>= 4' - eslint: '>=5' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 4.29.0_48ea228fa0647506aa803d17f48b59f7 - '@typescript-eslint/experimental-utils': 4.28.3_eslint@7.32.0+typescript@4.3.5 - eslint: 7.32.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /eslint-plugin-jest/24.4.0_f4d5ebf74e0ec1069e4c71ab7b88d1dd: resolution: {integrity: sha512-8qnt/hgtZ94E9dA6viqfViKBfkJwFHXgJmTWlMGDgunw1XJEGqm3eiPjDsTanM3/u/3Az82nyQM9GX7PM/QGmg==} engines: {node: '>=10'} @@ -4059,8 +3943,8 @@ packages: /fs-constants/1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - /fs-jetpack/4.1.0: - resolution: {integrity: sha512-h4nHLIcCaxnXfUWhwP+mLnar03R2DBlqicNvKJG44TJob8RV6GB8EKNwJgSaBeDAfqWhqq01y+Ao96vRwpXlPw==} + /fs-jetpack/4.1.1: + resolution: {integrity: sha512-BSZ+f6VjrMInpA6neNnUhQNFPPdf3M+I8v8M9dBRrbmExd8GNRbTJIq1tjNh86FQ4a+EoMtPcp1oemwY5ghGBw==} dependencies: minimatch: 3.0.4 rimraf: 2.7.1 @@ -4667,7 +4551,7 @@ packages: - supports-color dev: true - /jest-cli/27.0.6_ts-node@10.1.0: + /jest-cli/27.0.6_ts-node@10.2.0: resolution: {integrity: sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -4677,14 +4561,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.0.6_ts-node@10.1.0 + '@jest/core': 27.0.6_ts-node@10.2.0 '@jest/test-result': 27.0.6 '@jest/types': 27.0.6 chalk: 4.1.1 exit: 0.1.2 graceful-fs: 4.2.6 import-local: 3.0.2 - jest-config: 27.0.6_ts-node@10.1.0 + jest-config: 27.0.6_ts-node@10.2.0 jest-util: 27.0.6 jest-validate: 27.0.6 prompts: 2.4.1 @@ -4697,7 +4581,7 @@ packages: - utf-8-validate dev: true - /jest-config/27.0.6_ts-node@10.1.0: + /jest-config/27.0.6_ts-node@10.2.0: resolution: {integrity: sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: @@ -4727,7 +4611,7 @@ packages: jest-validate: 27.0.6 micromatch: 4.0.4 pretty-format: 27.0.6 - ts-node: 10.1.0_7360de416e8b444360c6ec4574012a61 + ts-node: 10.2.0_3cddbd81c3a53971a7cbc3c93cba6165 transitivePeerDependencies: - bufferutil - canvas @@ -5096,7 +4980,7 @@ packages: supports-color: 8.1.1 dev: true - /jest/27.0.6_ts-node@10.1.0: + /jest/27.0.6_ts-node@10.2.0: resolution: {integrity: sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -5106,9 +4990,9 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.0.6_ts-node@10.1.0 + '@jest/core': 27.0.6_ts-node@10.2.0 import-local: 3.0.2 - jest-cli: 27.0.6_ts-node@10.1.0 + jest-cli: 27.0.6_ts-node@10.2.0 transitivePeerDependencies: - bufferutil - canvas @@ -5338,16 +5222,15 @@ packages: /lines-and-columns/1.1.6: resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=} - /lint-staged/11.1.1: - resolution: {integrity: sha512-eTNGe6i78PSUUH2BZi1gZmGmNfb8IeN4z2OzMYxSZ1qnP1WXKn1E7D+OHwLbRDm/wQINnzIj0bsKJ6lLVSuZiQ==} + /lint-staged/11.1.2: + resolution: {integrity: sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w==} hasBin: true dependencies: - chalk: 4.1.1 + chalk: 4.1.2 cli-truncate: 2.1.0 commander: 7.2.0 cosmiconfig: 7.0.0 debug: 4.3.2 - dedent: 0.7.0 enquirer: 2.3.6 execa: 5.1.1 listr2: 3.11.0_enquirer@2.3.6 @@ -5458,7 +5341,7 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: - chalk: 4.1.1 + chalk: 4.1.2 is-unicode-supported: 0.1.0 dev: true @@ -6599,7 +6482,7 @@ packages: dependencies: glob: 7.1.7 - /rollup-plugin-dts/3.0.2_rollup@2.55.1+typescript@4.3.5: + /rollup-plugin-dts/3.0.2_rollup@2.56.2+typescript@4.3.5: resolution: {integrity: sha512-hswlsdWu/x7k5pXzaLP6OvKRKcx8Bzprksz9i9mUe72zvt8LvqAb/AZpzs6FkLgmyRaN8B6rUQOVtzA3yEt9Yw==} engines: {node: '>=v12.22.1'} peerDependencies: @@ -6607,14 +6490,14 @@ packages: typescript: ^4.2.4 dependencies: magic-string: 0.25.7 - rollup: 2.55.1 + rollup: 2.56.2 typescript: 4.3.5 optionalDependencies: '@babel/code-frame': 7.14.5 dev: true - /rollup/2.55.1: - resolution: {integrity: sha512-1P9w5fpb6b4qroePh8vHKGIvPNxwoCQhjJpIqfZGHLKpZ0xcU2/XBmFxFbc9697/6bmHpmFTLk5R1dAQhFSo0g==} + /rollup/2.56.2: + resolution: {integrity: sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -7103,8 +6986,8 @@ packages: yallist: 3.1.1 dev: true - /tar/6.1.6: - resolution: {integrity: sha512-oaWyu5dQbHaYcyZCTfyPpC+VmI62/OM2RTUYavTk1MDr1cwW5Boi3baeYQKiZbY2uSQJGr+iMOzb/JFxLrft+g==} + /tar/6.1.7: + resolution: {integrity: sha512-PBoRkOJU0X3lejJ8GaRCsobjXTgFofRDSPdSUhRSdlwJfifRlQBwGXitDItdGFu0/h0XDMCkig0RN1iT7DBxhA==} engines: {node: '>= 10'} dependencies: chownr: 2.0.0 @@ -7290,7 +7173,7 @@ packages: bs-logger: 0.2.6 buffer-from: 1.1.1 fast-json-stable-stringify: 2.1.0 - jest: 27.0.6_ts-node@10.1.0 + jest: 27.0.6_ts-node@10.2.0 jest-util: 27.0.6 json5: 2.2.0 lodash: 4.17.21 @@ -7301,41 +7184,8 @@ packages: yargs-parser: 20.2.9 dev: true - /ts-jest/27.0.4_52cc4273aa16028085013af47e479e10: - resolution: {integrity: sha512-c4E1ECy9Xz2WGfTMyHbSaArlIva7Wi2p43QOMmCqjSSjHP06KXv+aT+eSY+yZMuqsMi3k7pyGsGj2q5oSl5WfQ==} - 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': ^26.0.0 - babel-jest: '>=27.0.0 <28' - jest: ^27.0.0 - typescript: '>=3.8 <5.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/jest': - optional: true - babel-jest: - optional: true - dependencies: - '@types/jest': 26.0.24 - bs-logger: 0.2.6 - buffer-from: 1.1.1 - fast-json-stable-stringify: 2.1.0 - jest: 27.0.6_ts-node@10.1.0 - jest-util: 27.0.6 - json5: 2.2.0 - lodash: 4.17.21 - make-error: 1.3.6 - mkdirp: 1.0.4 - semver: 7.3.5 - typescript: 4.3.5 - yargs-parser: 20.2.9 - dev: true - - /ts-node/10.1.0_620c6be159ae5abe9d22c4491af881d8: - resolution: {integrity: sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA==} + /ts-node/10.2.0_1be1d6e448db6d942ef39e7e14f59568: + resolution: {integrity: sha512-FstYHtQz6isj8rBtYMN4bZdnXN1vq4HCbqn9vdNQcInRqtB86PePJQIxE6es0PhxKWhj2PHuwbG40H+bxkZPmg==} engines: {node: '>=12.0.0'} hasBin: true peerDependencies: @@ -7349,22 +7199,24 @@ packages: '@swc/wasm': optional: true dependencies: + '@cspotcode/source-map-support': 0.6.1 '@tsconfig/node10': 1.0.7 '@tsconfig/node12': 1.0.7 '@tsconfig/node14': 1.0.0 - '@tsconfig/node16': 1.0.1 - '@types/node': 12.20.18 + '@tsconfig/node16': 1.0.2 + '@types/node': 12.20.19 + acorn: 8.4.1 + acorn-walk: 8.1.1 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - source-map-support: 0.5.19 typescript: 4.3.5 yn: 3.1.1 dev: true - /ts-node/10.1.0_7360de416e8b444360c6ec4574012a61: - resolution: {integrity: sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA==} + /ts-node/10.2.0_3cddbd81c3a53971a7cbc3c93cba6165: + resolution: {integrity: sha512-FstYHtQz6isj8rBtYMN4bZdnXN1vq4HCbqn9vdNQcInRqtB86PePJQIxE6es0PhxKWhj2PHuwbG40H+bxkZPmg==} engines: {node: '>=12.0.0'} hasBin: true peerDependencies: @@ -7378,16 +7230,18 @@ packages: '@swc/wasm': optional: true dependencies: + '@cspotcode/source-map-support': 0.6.1 '@tsconfig/node10': 1.0.7 '@tsconfig/node12': 1.0.7 '@tsconfig/node14': 1.0.0 - '@tsconfig/node16': 1.0.1 - '@types/node': 14.17.7 + '@tsconfig/node16': 1.0.2 + '@types/node': 14.17.9 + acorn: 8.4.1 + acorn-walk: 8.1.1 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - source-map-support: 0.5.19 typescript: 4.3.5 yn: 3.1.1 dev: true diff --git a/scripts/ci/publish.ts b/scripts/ci/publish.ts index 3a37c95d1f34..aa808ba6f469 100644 --- a/scripts/ci/publish.ts +++ b/scripts/ci/publish.ts @@ -858,33 +858,18 @@ async function testPackages( ): Promise { let order = flatten(publishOrder) - // If paralelism is set in builkite we split the testing - // Job 0 all but client - // Job 1 only client + // If parallelism is set in build-kite we split the testing + // Job 0 - Node-API Library + // PRISMA_CLIENT_ENGINE_TYPE="library" + // PRISMA_CLI_QUERY_ENGINE_TYPE="library" + // Job 1 - Binary + // PRISMA_CLIENT_ENGINE_TYPE="binary" + // PRISMA_CLI_QUERY_ENGINE_TYPE="binary" if (process.env.BUILDKITE_PARALLEL_JOB === '0') { - console.log( - 'BUILDKITE_PARALLEL_JOB === 0 - running all tests excluding client', - ) - const index = order.indexOf('@prisma/client') - if (index > -1) { - order.splice(index, 1) - } + console.log('BUILDKITE_PARALLEL_JOB === 0 - Node-API Library') } else if (process.env.BUILDKITE_PARALLEL_JOB === '1') { - console.log('BUILDKITE_PARALLEL_JOB === 1 - running client only') - order = ['@prisma/client'] - } else if (process.env.BUILDKITE_PARALLEL_JOB === '2') { - // This is to test Node-API - console.log( - 'BUILDKITE_PARALLEL_JOB === 2 - running Node API tests for [sdk, migrate, client, cli, integration-tests]', - ) - order = [ - '@prisma/sdk', - '@prisma/migrate', - '@prisma/client', - 'prisma', - '@prisma/integration-tests', - ] - } + console.log('BUILDKITE_PARALLEL_JOB === 1 - Binary') + } console.log(chalk.bold(`\nRun ${chalk.cyanBright('tests')}. Testing order:`)) console.log(order) @@ -893,10 +878,16 @@ async function testPackages( const pkg = packages[pkgName] if (pkg.packageJson.scripts.test) { console.log(`\nTesting ${chalk.magentaBright(pkg.name)}`) - if (process.env.BUILDKITE_PARALLEL_JOB === '2') { + // Sets ENV to override engines + if (process.env.BUILDKITE_PARALLEL_JOB === '0') { + await run( + path.dirname(pkg.path), + 'PRISMA_CLIENT_ENGINE_TYPE="library" PRISMA_CLI_QUERY_ENGINE_TYPE="library" pnpm run test', + ) + } else if (process.env.BUILDKITE_PARALLEL_JOB === '1') { await run( path.dirname(pkg.path), - 'PRISMA_FORCE_NAPI=true pnpm run test', + 'PRISMA_CLIENT_ENGINE_TYPE="binary" PRISMA_CLI_QUERY_ENGINE_TYPE="binary" pnpm run test', ) } else { await run(path.dirname(pkg.path), 'pnpm run test')