From 18223c22efda19a7ba56430a1743191905181c08 Mon Sep 17 00:00:00 2001 From: Himself65 Date: Tue, 18 Apr 2023 00:07:03 -0500 Subject: [PATCH] test(server): migrate to node internal test (#2000) --- .github/actions/setup-node/action.yml | 15 - .github/workflows/build-master.yml | 12 + .github/workflows/build.yml | 14 +- .github/workflows/release-desktop-app.yml | 6 - apps/server/package.json | 30 +- apps/server/src/index.ts | 2 +- .../server/src/modules/workspaces/resolver.ts | 9 + .../__tests__ => tests}/config.spec.ts | 19 +- package.json | 3 +- tsconfig.json | 3 + tsconfig.node.json | 9 + vitest.config.ts | 10 +- yarn.lock | 463 ++---------------- 13 files changed, 108 insertions(+), 487 deletions(-) rename apps/server/src/{config/__tests__ => tests}/config.spec.ts (57%) create mode 100644 tsconfig.node.json diff --git a/.github/actions/setup-node/action.yml b/.github/actions/setup-node/action.yml index 8cf7c5946a..b3fd946c4b 100644 --- a/.github/actions/setup-node/action.yml +++ b/.github/actions/setup-node/action.yml @@ -9,10 +9,6 @@ inputs: description: 'Run the install step.' required: false default: 'true' - electron-workspace-install: - description: 'Run the install step for the electron workspace.' - required: false - default: 'false' playwright-install: description: 'Run the install step for Playwright.' required: false @@ -82,17 +78,6 @@ runs: YARN_INSTALL_STATE_PATH: .yarn/ci-cache/install-state.gz HUSKY: '0' - - name: yarn install (electron) - if: ${{ inputs.electron-workspace-install == 'true' }} - shell: bash - run: yarn install ${{ inputs.extra-flags }} - working-directory: apps/electron - env: - NODE_AUTH_TOKEN: ${{ inputs.npm-token }} - YARN_ENABLE_GLOBAL_CACHE: 'false' - YARN_INSTALL_STATE_PATH: ../../.yarn/ci-cache/install-state.gz - HUSKY: '0' - - name: Get installed Playwright version id: playwright-version if: ${{ inputs.playwright-install == 'true' }} diff --git a/.github/workflows/build-master.yml b/.github/workflows/build-master.yml index 45f06f4a21..7d9988c21a 100644 --- a/.github/workflows/build-master.yml +++ b/.github/workflows/build-master.yml @@ -191,6 +191,18 @@ jobs: name: affine fail_ci_if_error: true + server-test: + name: Server Test + runs-on: ubuntu-latest + environment: development + steps: + - uses: actions/checkout@v3 + - name: Setup Node.js + uses: ./.github/actions/setup-node + - name: Run server tests + run: yarn test:coverage + working-directory: apps/server + e2e-test: name: E2E Test runs-on: ubuntu-latest diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e16e9ccf29..2c3e4ce63c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,8 +26,6 @@ jobs: - uses: actions/checkout@v3 - name: Install All Dependencies uses: ./.github/actions/setup-node - with: - electron-workspace-install: true build-storybook: name: Build Storybook @@ -84,6 +82,18 @@ jobs: path: ./apps/web/.next if-no-files-found: error + server-test: + name: Server Test + runs-on: ubuntu-latest + environment: development + steps: + - uses: actions/checkout@v3 + - name: Setup Node.js + uses: ./.github/actions/setup-node + - name: Run server tests + run: yarn test:coverage + working-directory: apps/server + storybook-test: name: Storybook Test runs-on: ubuntu-latest diff --git a/.github/workflows/release-desktop-app.yml b/.github/workflows/release-desktop-app.yml index b8aec50537..1d2f66ace1 100644 --- a/.github/workflows/release-desktop-app.yml +++ b/.github/workflows/release-desktop-app.yml @@ -67,8 +67,6 @@ jobs: - uses: actions/checkout@v3 - name: Setup Node.js uses: ./.github/actions/setup-node - with: - electron-workspace-install: true - name: Signing By Apple Developer ID uses: apple-actions/import-codesign-certs@v2 @@ -114,8 +112,6 @@ jobs: - uses: actions/checkout@v3 - name: Setup Node.js uses: ./.github/actions/setup-node - with: - electron-workspace-install: true - name: make build run: yarn make-windows-x64 @@ -158,8 +154,6 @@ jobs: - uses: actions/checkout@v3 - name: Setup Node.js uses: ./.github/actions/setup-node - with: - electron-workspace-install: true - name: make build run: yarn make diff --git a/apps/server/package.json b/apps/server/package.json index 8698802979..b439395d4e 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -1,12 +1,13 @@ { "name": "@affine/server", "private": true, - "version": "0.0.0", + "version": "0.5.3", "description": "Affine Node.js server", "type": "module", "scripts": { "dev": "nodemon ./src/index.ts", - "test": "ava" + "test": "NODE_ENV=test node --loader ts-node/esm.mjs --es-module-specifier-resolution node --test ./src/tests/*", + "test:coverage": "NODE_V8_COVERAGE=.coverage NODE_ENV=test node --loader ts-node/esm.mjs --es-module-specifier-resolution node --experimental-test-coverage ./src/tests/*" }, "dependencies": { "@apollo/server": "^4.6.0", @@ -28,10 +29,10 @@ "@nestjs/testing": "^9.4.0", "@types/lodash-es": "^4.14.194", "@types/node": "^18.15.11", - "ava": "^5.2.0", "nodemon": "^2.0.22", "ts-node": "^10.9.1", - "typescript": "^5.0.4" + "typescript": "^5.0.4", + "vitest": "^0.30.1" }, "nodemonConfig": { "exec": "node", @@ -54,26 +55,5 @@ "DEBUG_COLORS": true }, "delay": 1000 - }, - "ava": { - "extensions": { - "ts": "module" - }, - "nodeArguments": [ - "--loader", - "ts-node/esm.mjs", - "--es-module-specifier-resolution", - "node" - ], - "files": [ - "src/**/*.spec.ts" - ], - "require": [ - "./src/prelude.ts" - ], - "environmentVariables": { - "TS_NODE_PROJECT": "./tsconfig.json", - "NODE_ENV": "test" - } } } diff --git a/apps/server/src/index.ts b/apps/server/src/index.ts index 236df1f89f..1da448719e 100644 --- a/apps/server/src/index.ts +++ b/apps/server/src/index.ts @@ -17,4 +17,4 @@ const app = await NestFactory.create(AppModule, { bodyParser: true, }); -await app.listen(process.env.PORT ?? 3000); +await app.listen(process.env.PORT ?? 3010); diff --git a/apps/server/src/modules/workspaces/resolver.ts b/apps/server/src/modules/workspaces/resolver.ts index a0bec2933a..290b695e01 100644 --- a/apps/server/src/modules/workspaces/resolver.ts +++ b/apps/server/src/modules/workspaces/resolver.ts @@ -35,6 +35,15 @@ export class Workspace implements workspaces { export class WorkspaceResolver { constructor(private readonly prisma: PrismaService) {} + // debug only query should be removed + @Query(() => [Workspace], { + name: 'workspaces', + description: 'Get all workspaces', + }) + async workspaces() { + return this.prisma.workspaces.findMany(); + } + @Query(() => Workspace, { name: 'workspace', description: 'Get workspace by id', diff --git a/apps/server/src/config/__tests__/config.spec.ts b/apps/server/src/tests/config.spec.ts similarity index 57% rename from apps/server/src/config/__tests__/config.spec.ts rename to apps/server/src/tests/config.spec.ts index d30c16647f..189dbd8fef 100644 --- a/apps/server/src/config/__tests__/config.spec.ts +++ b/apps/server/src/tests/config.spec.ts @@ -1,10 +1,15 @@ -import { Test } from '@nestjs/testing'; -import test from 'ava'; +import { equal, ok } from 'node:assert'; +import { beforeEach, test } from 'node:test'; -import { Config, ConfigModule } from '..'; +import { Test } from '@nestjs/testing'; + +import { Config, ConfigModule } from '../config'; +import { getDefaultAFFiNEConfig } from '../config/default'; + +globalThis.AFFiNE = getDefaultAFFiNEConfig(); let config: Config; -test.beforeEach(async () => { +beforeEach(async () => { const module = await Test.createTestingModule({ imports: [ConfigModule.forRoot()], }).compile(); @@ -12,8 +17,8 @@ test.beforeEach(async () => { }); test('should be able to get config', t => { - t.assert(typeof config.host === 'string'); - t.is(config.env, 'test'); + ok(typeof config.host === 'string'); + equal(config.env, 'test'); }); test('should be able to override config', async t => { @@ -26,5 +31,5 @@ test('should be able to override config', async t => { }).compile(); const config = module.get(Config); - t.is(config.host, 'testing'); + ok(config.host, 'testing'); }); diff --git a/package.json b/package.json index 73779906a6..ec3ac3fb72 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,8 @@ "vite-plugin-istanbul": "^4.0.1", "vite-tsconfig-paths": "^4.2.0", "vitest": "^0.30.1", - "vitest-fetch-mock": "^0.2.2" + "vitest-fetch-mock": "^0.2.2", + "vitest-mock-extended": "^1.1.3" }, "resolutions": { "lit": "^2.7.2", diff --git a/tsconfig.json b/tsconfig.json index 05196eb0d7..2d17ebe792 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -63,6 +63,9 @@ }, { "path": "./tests/fixtures" + }, + { + "path": "./tsconfig.node.json" } ], "files": [], diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000000..b5376a7db7 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vitest.config.ts"] +} diff --git a/vitest.config.ts b/vitest.config.ts index 417b39978b..7486bb2c35 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,20 +1,26 @@ import { resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin'; import react from '@vitejs/plugin-react'; import { defineConfig } from 'vitest/config'; +const rootDir = fileURLToPath(new URL('.', import.meta.url)); + export default defineConfig({ plugins: [react(), vanillaExtractPlugin()], assetsInclude: ['**/*.md'], resolve: { alias: { 'next/router': 'next-router-mock', - 'next/config': resolve('./scripts/vitest/next-config-mock.ts'), + 'next/config': resolve(rootDir, './scripts/vitest/next-config-mock.ts'), }, }, test: { - setupFiles: ['./scripts/setup/search.ts', './scripts/setup/lottie-web.ts'], + setupFiles: [ + resolve(rootDir, './scripts/setup/search.ts'), + resolve(rootDir, './scripts/setup/lottie-web.ts'), + ], include: [ 'packages/**/*.spec.ts', 'packages/**/*.spec.tsx', diff --git a/yarn.lock b/yarn.lock index 7d681564f7..0c64e5dee7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -214,7 +214,6 @@ __metadata: "@prisma/client": ^4.12.0 "@types/lodash-es": ^4.14.194 "@types/node": ^18.15.11 - ava: ^5.2.0 dotenv: ^16.0.3 graphql: ^16.6.0 graphql-type-json: ^0.3.2 @@ -225,6 +224,7 @@ __metadata: rxjs: ^7.8.0 ts-node: ^10.9.1 typescript: ^5.0.4 + vitest: ^0.30.1 languageName: unknown linkType: soft @@ -8694,6 +8694,7 @@ __metadata: vite-tsconfig-paths: ^4.2.0 vitest: ^0.30.1 vitest-fetch-mock: ^0.2.2 + vitest-mock-extended: ^1.1.3 languageName: unknown linkType: soft @@ -8767,7 +8768,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2": +"acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.2": version: 8.8.2 resolution: "acorn@npm:8.8.2" bin: @@ -8820,16 +8821,6 @@ __metadata: languageName: node linkType: hard -"aggregate-error@npm:^4.0.0": - version: 4.0.1 - resolution: "aggregate-error@npm:4.0.1" - dependencies: - clean-stack: ^4.0.0 - indent-string: ^5.0.0 - checksum: bb3ffdfd13447800fff237c2cba752c59868ee669104bb995dfbbe0b8320e967d679e683dabb640feb32e4882d60258165cde0baafc4cd467cc7d275a13ad6b5 - languageName: node - linkType: hard - "ahocorasick@npm:1.0.2": version: 1.0.2 resolution: "ahocorasick@npm:1.0.2" @@ -8962,7 +8953,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 @@ -9122,13 +9113,6 @@ __metadata: languageName: node linkType: hard -"array-find-index@npm:^1.0.1": - version: 1.0.2 - resolution: "array-find-index@npm:1.0.2" - checksum: aac128bf369e1ac6c06ff0bb330788371c0e256f71279fb92d745e26fb4b9db8920e485b4ec25e841c93146bf71a34dcdbcefa115e7e0f96927a214d237b7081 - languageName: node - linkType: hard - "array-flatten@npm:1.1.1": version: 1.1.1 resolution: "array-flatten@npm:1.1.1" @@ -9200,13 +9184,6 @@ __metadata: languageName: node linkType: hard -"arrgv@npm:^1.0.2": - version: 1.0.2 - resolution: "arrgv@npm:1.0.2" - checksum: 470bbb406ea3b34810dd8b03c0b33282617a42d9fce0ab45d58596efefd042fc548eda49161fa8e3f607cbe9df90e7a67003a09043ab9081eff70f97c63dd0e2 - languageName: node - linkType: hard - "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" @@ -9214,13 +9191,6 @@ __metadata: languageName: node linkType: hard -"arrify@npm:^3.0.0": - version: 3.0.0 - resolution: "arrify@npm:3.0.0" - checksum: d6c6f3dad9571234f320e130d57fddb2cc283c87f2ac7df6c7005dffc5161b7bb9376f4be655ed257050330336e84afc4f3020d77696ad231ff580a94ae5aba6 - languageName: node - linkType: hard - "as-table@npm:^1.0.36": version: 1.0.55 resolution: "as-table@npm:1.0.55" @@ -9359,66 +9329,6 @@ __metadata: languageName: node linkType: hard -"ava@npm:^5.2.0": - version: 5.2.0 - resolution: "ava@npm:5.2.0" - dependencies: - acorn: ^8.8.1 - acorn-walk: ^8.2.0 - ansi-styles: ^6.2.1 - arrgv: ^1.0.2 - arrify: ^3.0.0 - callsites: ^4.0.0 - cbor: ^8.1.0 - chalk: ^5.2.0 - chokidar: ^3.5.3 - chunkd: ^2.0.1 - ci-info: ^3.7.1 - ci-parallel-vars: ^1.0.1 - clean-yaml-object: ^0.1.0 - cli-truncate: ^3.1.0 - code-excerpt: ^4.0.0 - common-path-prefix: ^3.0.0 - concordance: ^5.0.4 - currently-unhandled: ^0.4.1 - debug: ^4.3.4 - del: ^7.0.0 - emittery: ^1.0.1 - figures: ^5.0.0 - globby: ^13.1.3 - ignore-by-default: ^2.1.0 - indent-string: ^5.0.0 - is-error: ^2.2.2 - is-plain-object: ^5.0.0 - is-promise: ^4.0.0 - matcher: ^5.0.0 - mem: ^9.0.2 - ms: ^2.1.3 - p-event: ^5.0.1 - p-map: ^5.5.0 - picomatch: ^2.3.1 - pkg-conf: ^4.0.0 - plur: ^5.1.0 - pretty-ms: ^8.0.0 - resolve-cwd: ^3.0.0 - slash: ^3.0.0 - stack-utils: ^2.0.6 - strip-ansi: ^7.0.1 - supertap: ^3.0.1 - temp-dir: ^3.0.0 - write-file-atomic: ^5.0.0 - yargs: ^17.6.2 - peerDependencies: - "@ava/typescript": "*" - peerDependenciesMeta: - "@ava/typescript": - optional: true - bin: - ava: entrypoints/cli.mjs - checksum: d5991f1f3d7ca0e63e0df185c5c025a9c80614dd42537336a9b96ea29e8a8d5ad680c1e775dacabb55f3b1b2d63764e468f201d52a44166c8a88d4e9309cde61 - languageName: node - linkType: hard - "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" @@ -10048,13 +9958,6 @@ __metadata: languageName: node linkType: hard -"callsites@npm:^4.0.0": - version: 4.0.0 - resolution: "callsites@npm:4.0.0" - checksum: ad3c3a57328a539c0d671cf1ca500abf09461b762807fc545a132026bdf87705fee9c299e1adb38b133c29201a3b04fbf4f2b90d8fa1d9e00ef507e803737cf2 - languageName: node - linkType: hard - "camelcase-keys@npm:^6.2.2": version: 6.2.2 resolution: "camelcase-keys@npm:6.2.2" @@ -10103,15 +10006,6 @@ __metadata: languageName: node linkType: hard -"cbor@npm:^8.1.0": - version: 8.1.0 - resolution: "cbor@npm:8.1.0" - dependencies: - nofilter: ^3.1.0 - checksum: a90338435dc7b45cc01461af979e3bb6ddd4f2a08584c437586039cd5f2235014c06e49d664295debbfb3514d87b2f06728092ab6aa6175e2e85e9cd7dc0c1fd - languageName: node - linkType: hard - "chai@npm:^4.3.7": version: 4.3.7 resolution: "chai@npm:4.3.7" @@ -10287,27 +10181,13 @@ __metadata: languageName: node linkType: hard -"chunkd@npm:^2.0.1": - version: 2.0.1 - resolution: "chunkd@npm:2.0.1" - checksum: bab8cc08c752a3648984385dc6f61d751e89dbeef648d22a3b661e1d470eaa0f5182f0b4303710f13ae83d2f85144f8eb2dde7a975861d9021b5c56b881f457b - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0, ci-info@npm:^3.7.1": +"ci-info@npm:^3.2.0": version: 3.8.0 resolution: "ci-info@npm:3.8.0" checksum: d0a4d3160497cae54294974a7246202244fff031b0a6ea20dd57b10ec510aa17399c41a1b0982142c105f3255aff2173e5c0dd7302ee1b2f28ba3debda375098 languageName: node linkType: hard -"ci-parallel-vars@npm:^1.0.1": - version: 1.0.1 - resolution: "ci-parallel-vars@npm:1.0.1" - checksum: ae859831f7e8e3585db731b8306c336616e37bd709dad1d7775ea4c0731aefd94741dabb48201edc6827d000008fd7fb72cb977967614ee2d99d6b499f0c35fe - languageName: node - linkType: hard - "cjs-module-lexer@npm:^1.0.0": version: 1.2.2 resolution: "cjs-module-lexer@npm:1.2.2" @@ -10322,22 +10202,6 @@ __metadata: languageName: node linkType: hard -"clean-stack@npm:^4.0.0": - version: 4.2.0 - resolution: "clean-stack@npm:4.2.0" - dependencies: - escape-string-regexp: 5.0.0 - checksum: 373f656a31face5c615c0839213b9b542a0a48057abfb1df66900eab4dc2a5c6097628e4a0b5aa559cdfc4e66f8a14ea47be9681773165a44470ef5fb8ccc172 - languageName: node - linkType: hard - -"clean-yaml-object@npm:^0.1.0": - version: 0.1.0 - resolution: "clean-yaml-object@npm:0.1.0" - checksum: 0374ad2f1fbd4984ecf56ebc62200092f6372b9ccf1b7971bb979c328fb12fe76e759fb1e8adc491c80b7b1861f9f00c7f19813dd2a0f49c88231422c70451f4 - languageName: node - linkType: hard - "cli-boxes@npm:^2.2.1": version: 2.2.1 resolution: "cli-boxes@npm:2.2.1" @@ -10549,15 +10413,6 @@ __metadata: languageName: node linkType: hard -"code-excerpt@npm:^4.0.0": - version: 4.0.0 - resolution: "code-excerpt@npm:4.0.0" - dependencies: - convert-to-spaces: ^2.0.1 - checksum: d57137d8f4825879283a828cc02a1115b56858dc54ed06c625c8f67d6685d1becd2fbaa7f0ab19ecca1f5cca03f8c97bbc1f013cab40261e4d3275032e65efe9 - languageName: node - linkType: hard - "collect-v8-coverage@npm:^1.0.0": version: 1.0.1 resolution: "collect-v8-coverage@npm:1.0.1" @@ -10699,13 +10554,6 @@ __metadata: languageName: node linkType: hard -"common-path-prefix@npm:^3.0.0": - version: 3.0.0 - resolution: "common-path-prefix@npm:3.0.0" - checksum: fdb3c4f54e51e70d417ccd950c07f757582de800c0678ca388aedefefc84982039f346f9fd9a1252d08d2da9e9ef4019f580a1d1d3a10da031e4bb3c924c5818 - languageName: node - linkType: hard - "commondir@npm:^1.0.1": version: 1.0.1 resolution: "commondir@npm:1.0.1" @@ -10897,13 +10745,6 @@ __metadata: languageName: node linkType: hard -"convert-to-spaces@npm:^2.0.1": - version: 2.0.1 - resolution: "convert-to-spaces@npm:2.0.1" - checksum: bbb324e5916fe9866f65c0ff5f9c1ea933764d0bdb09fccaf59542e40545ed483db6b2339c6d9eb56a11965a58f1a6038f3174f0e2fb7601343c7107ca5e2751 - languageName: node - linkType: hard - "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" @@ -11136,15 +10977,6 @@ __metadata: languageName: node linkType: hard -"currently-unhandled@npm:^0.4.1": - version: 0.4.1 - resolution: "currently-unhandled@npm:0.4.1" - dependencies: - array-find-index: ^1.0.1 - checksum: 1f59fe10b5339b54b1a1eee110022f663f3495cf7cf2f480686e89edc7fa8bfe42dbab4b54f85034bc8b092a76cc7becbc2dad4f9adad332ab5831bec39ad540 - languageName: node - linkType: hard - "cwd@npm:^0.10.0": version: 0.10.0 resolution: "cwd@npm:0.10.0" @@ -11413,22 +11245,6 @@ __metadata: languageName: node linkType: hard -"del@npm:^7.0.0": - version: 7.0.0 - resolution: "del@npm:7.0.0" - dependencies: - globby: ^13.1.2 - graceful-fs: ^4.2.10 - is-glob: ^4.0.3 - is-path-cwd: ^3.0.0 - is-path-inside: ^4.0.0 - p-map: ^5.5.0 - rimraf: ^3.0.2 - slash: ^4.0.0 - checksum: 33e5077f18b5dfbe81971d1f8a2cd8bf676dd5ede491bab85ec17a4a1d59001bd3ec47fd38e9a4ae01a3c98c07b98c7b3dc56190b86d88926798802d7858d827 - languageName: node - linkType: hard - "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -11955,13 +11771,6 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^1.0.1": - version: 1.0.1 - resolution: "emittery@npm:1.0.1" - checksum: d95faee6ffb2e023cadaa6804265fea5298c53d079f170112af8dfae3e141761363ea4510966128259346418e3ec7639310fd75059ecce2423bf8afd07004226 - languageName: node - linkType: hard - "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -12400,13 +12209,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:5.0.0, escape-string-regexp@npm:^5.0.0": - version: 5.0.0 - resolution: "escape-string-regexp@npm:5.0.0" - checksum: 20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e - languageName: node - linkType: hard - "escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -13193,16 +12995,6 @@ __metadata: languageName: node linkType: hard -"figures@npm:^5.0.0": - version: 5.0.0 - resolution: "figures@npm:5.0.0" - dependencies: - escape-string-regexp: ^5.0.0 - is-unicode-supported: ^1.2.0 - checksum: e6e8b6d1df2f554d4effae4a5ceff5d796f9449f6d4e912d74dab7d5f25916ecda6c305b9084833157d56485a0c78b37164430ddc5675bcee1330e346710669e - languageName: node - linkType: hard - "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -13379,16 +13171,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^6.0.0": - version: 6.3.0 - resolution: "find-up@npm:6.3.0" - dependencies: - locate-path: ^7.1.0 - path-exists: ^5.0.0 - checksum: 9a21b7f9244a420e54c6df95b4f6fc3941efd3c3e5476f8274eb452f6a85706e7a6a90de71353ee4f091fcb4593271a6f92810a324ec542650398f928783c280 - languageName: node - linkType: hard - "firebase@npm:^9.19.1": version: 9.19.1 resolution: "firebase@npm:9.19.1" @@ -14205,7 +13987,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^13.1.2, globby@npm:^13.1.3": +"globby@npm:^13.1.3": version: 13.1.4 resolution: "globby@npm:13.1.4" dependencies: @@ -14272,7 +14054,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -14771,13 +14553,6 @@ __metadata: languageName: node linkType: hard -"ignore-by-default@npm:^2.1.0": - version: 2.1.0 - resolution: "ignore-by-default@npm:2.1.0" - checksum: 2b2df4622b6a07a3e91893987be8f060dc553f7736b67e72aa2312041c450a6fa8371733d03c42f45a02e47ec824e961c2fba63a3d94fc59cbd669220a5b0d7a - languageName: node - linkType: hard - "ignore@npm:^5.2.0": version: 5.2.4 resolution: "ignore@npm:5.2.4" @@ -14858,13 +14633,6 @@ __metadata: languageName: node linkType: hard -"indent-string@npm:^5.0.0": - version: 5.0.0 - resolution: "indent-string@npm:5.0.0" - checksum: e466c27b6373440e6d84fbc19e750219ce25865cb82d578e41a6053d727e5520dc5725217d6eb1cc76005a1bb1696a0f106d84ce7ebda3033b963a38583fb3b3 - languageName: node - linkType: hard - "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" @@ -14967,13 +14735,6 @@ __metadata: languageName: node linkType: hard -"irregular-plurals@npm:^3.3.0": - version: 3.5.0 - resolution: "irregular-plurals@npm:3.5.0" - checksum: 5b663091dc89155df7b2e9d053e8fb11941a0c4be95c4b6549ed3ea020489fdf4f75ea586c915b5b543704252679a5a6e8c6c3587da5ac3fc57b12da90a9aee7 - languageName: node - linkType: hard - "is-absolute-url@npm:^3.0.0": version: 3.0.3 resolution: "is-absolute-url@npm:3.0.3" @@ -15102,13 +14863,6 @@ __metadata: languageName: node linkType: hard -"is-error@npm:^2.2.2": - version: 2.2.2 - resolution: "is-error@npm:2.2.2" - checksum: a97b39587150f0d38f9f93f64699807fe3020fe5edbd63548f234dc2ba96fd7c776d66c062bf031dfeb93c7f48db563ff6bde588418ca041da37c659a416f055 - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -15264,13 +15018,6 @@ __metadata: languageName: node linkType: hard -"is-path-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "is-path-cwd@npm:3.0.0" - checksum: bc34d13b6a03dfca4a3ab6a8a5ba78ae4b24f4f1db4b2b031d2760c60d0913bd16a4b980dcb4e590adfc906649d5f5132684079a3972bd219da49deebb9adea8 - languageName: node - linkType: hard - "is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" @@ -15278,13 +15025,6 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^4.0.0": - version: 4.0.0 - resolution: "is-path-inside@npm:4.0.0" - checksum: 8810fa11c58e6360b82c3e0d6cd7d9c7d0392d3ac9eb10f980b81f9839f40ac6d1d6d6f05d069db0d227759801228f0b072e1b6c343e4469b065ab5fe0b68fe5 - languageName: node - linkType: hard - "is-plain-obj@npm:^1.1.0": version: 1.1.0 resolution: "is-plain-obj@npm:1.1.0" @@ -15292,7 +15032,7 @@ __metadata: languageName: node linkType: hard -"is-plain-object@npm:5.0.0, is-plain-object@npm:^5.0.0": +"is-plain-object@npm:5.0.0": version: 5.0.0 resolution: "is-plain-object@npm:5.0.0" checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c @@ -15315,13 +15055,6 @@ __metadata: languageName: node linkType: hard -"is-promise@npm:^4.0.0": - version: 4.0.0 - resolution: "is-promise@npm:4.0.0" - checksum: 0b46517ad47b00b6358fd6553c83ec1f6ba9acd7ffb3d30a0bf519c5c69e7147c132430452351b8a9fc198f8dd6c4f76f8e6f5a7f100f8c77d57d9e0f4261a8a - languageName: node - linkType: hard - "is-property@npm:^1.0.0, is-property@npm:^1.0.2": version: 1.0.2 resolution: "is-property@npm:1.0.2" @@ -15432,7 +15165,7 @@ __metadata: languageName: node linkType: hard -"is-unicode-supported@npm:*, is-unicode-supported@npm:^1.2.0": +"is-unicode-supported@npm:*": version: 1.3.0 resolution: "is-unicode-supported@npm:1.3.0" checksum: 20a1fc161afafaf49243551a5ac33b6c4cf0bbcce369fcd8f2951fbdd000c30698ce320de3ee6830497310a8f41880f8066d440aa3eb0a853e2aa4836dd89abc @@ -16444,7 +16177,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1": +"js-yaml@npm:^3.13.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -16861,13 +16594,6 @@ __metadata: languageName: node linkType: hard -"load-json-file@npm:^7.0.0": - version: 7.0.1 - resolution: "load-json-file@npm:7.0.1" - checksum: a560288da6891778321ef993e4bdbdf05374a4f3a3aeedd5ba6b64672798c830d748cfc59a2ec9891a3db30e78b3d04172e0dcb0d4828168289a393147ca0e74 - languageName: node - linkType: hard - "loader-runner@npm:^4.2.0": version: 4.3.0 resolution: "loader-runner@npm:4.3.0" @@ -16940,15 +16666,6 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^7.1.0": - version: 7.2.0 - resolution: "locate-path@npm:7.2.0" - dependencies: - p-locate: ^6.0.0 - checksum: c1b653bdf29beaecb3d307dfb7c44d98a2a98a02ebe353c9ad055d1ac45d6ed4e1142563d222df9b9efebc2bcb7d4c792b507fad9e7150a04c29530b7db570f8 - languageName: node - linkType: hard - "lodash-es@npm:^4.17.21": version: 4.17.21 resolution: "lodash-es@npm:4.17.21" @@ -17339,7 +17056,7 @@ __metadata: languageName: node linkType: hard -"map-age-cleaner@npm:^0.1.1, map-age-cleaner@npm:^0.1.3": +"map-age-cleaner@npm:^0.1.1": version: 0.1.3 resolution: "map-age-cleaner@npm:0.1.3" dependencies: @@ -17403,15 +17120,6 @@ __metadata: languageName: node linkType: hard -"matcher@npm:^5.0.0": - version: 5.0.0 - resolution: "matcher@npm:5.0.0" - dependencies: - escape-string-regexp: ^5.0.0 - checksum: 28f191c2d23fee0f6f32fd0181d9fe173b0ab815a919edba55605438a2f9fa40372e002574a1b17add981b0a8669c75bc6194318d065ed2dceffd8b160c38118 - languageName: node - linkType: hard - "md5-hex@npm:^3.0.1": version: 3.0.1 resolution: "md5-hex@npm:3.0.1" @@ -17464,16 +17172,6 @@ __metadata: languageName: node linkType: hard -"mem@npm:^9.0.2": - version: 9.0.2 - resolution: "mem@npm:9.0.2" - dependencies: - map-age-cleaner: ^0.1.3 - mimic-fn: ^4.0.0 - checksum: 07829bb182af0e3ecf748dc2edb1c3b10a256ef10458f7e24d06561a2adc2b3ef34d14abe81678bbcedb46faa477e7370223f118b1a5e1252da5fe43496f3967 - languageName: node - linkType: hard - "memoizerific@npm:^1.11.3": version: 1.11.3 resolution: "memoizerific@npm:1.11.3" @@ -17826,7 +17524,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -18221,13 +17919,6 @@ __metadata: languageName: node linkType: hard -"nofilter@npm:^3.1.0": - version: 3.1.0 - resolution: "nofilter@npm:3.1.0" - checksum: 58aa85a5b4b35cbb6e42de8a8591c5e338061edc9f3e7286f2c335e9e9b9b8fa7c335ae45daa8a1f3433164dc0b9a3d187fa96f9516e04a17a1f9ce722becc4f - languageName: node - linkType: hard - "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" @@ -18634,15 +18325,6 @@ __metadata: languageName: node linkType: hard -"p-event@npm:^5.0.1": - version: 5.0.1 - resolution: "p-event@npm:5.0.1" - dependencies: - p-timeout: ^5.0.2 - checksum: 3bdd8df6092e6b149f25e9c2eb1c0843b3b4279b07be2a2c72c02b65b267a8908c2040fefd606f2497b0f2bcefcd214f8ca5a74f0c883515d400ccf1d88d5683 - languageName: node - linkType: hard - "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -18729,15 +18411,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^6.0.0": - version: 6.0.0 - resolution: "p-locate@npm:6.0.0" - dependencies: - p-limit: ^4.0.0 - checksum: 2bfe5234efa5e7a4e74b30a5479a193fdd9236f8f6b4d2f3f69e3d286d9a7d7ab0c118a2a50142efcf4e41625def635bd9332d6cbf9cc65d85eb0718c579ab38 - languageName: node - linkType: hard - "p-map@npm:^3.0.0": version: 3.0.0 resolution: "p-map@npm:3.0.0" @@ -18756,22 +18429,6 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^5.5.0": - version: 5.5.0 - resolution: "p-map@npm:5.5.0" - dependencies: - aggregate-error: ^4.0.0 - checksum: 065cb6fca6b78afbd070dd9224ff160dc23eea96e57863c09a0c8ea7ce921043f76854be7ee0abc295cff1ac9adcf700e79a1fbe3b80b625081087be58e7effb - languageName: node - linkType: hard - -"p-timeout@npm:^5.0.2": - version: 5.1.0 - resolution: "p-timeout@npm:5.1.0" - checksum: f5cd4e17301ff1ff1d8dbf2817df0ad88c6bba99349fc24d8d181827176ad4f8aca649190b8a5b1a428dfd6ddc091af4606835d3e0cb0656e04045da5c9e270c - languageName: node - linkType: hard - "p-try@npm:^1.0.0": version: 1.0.0 resolution: "p-try@npm:1.0.0" @@ -18867,13 +18524,6 @@ __metadata: languageName: node linkType: hard -"parse-ms@npm:^3.0.0": - version: 3.0.0 - resolution: "parse-ms@npm:3.0.0" - checksum: fc602bba093835562321a67a9d6c8c9687ca4f26a09459a77e07ebd7efddd1a5766725ec60eb0c83a2abe67f7a23808f7deb1c1226727776eaf7f9607ae09db2 - languageName: node - linkType: hard - "parse-passwd@npm:^1.0.0": version: 1.0.0 resolution: "parse-passwd@npm:1.0.0" @@ -18909,13 +18559,6 @@ __metadata: languageName: node linkType: hard -"path-exists@npm:^5.0.0": - version: 5.0.0 - resolution: "path-exists@npm:5.0.0" - checksum: 8ca842868cab09423994596eb2c5ec2a971c17d1a3cb36dbf060592c730c725cd524b9067d7d2a1e031fef9ba7bd2ac6dc5ec9fb92aa693265f7be3987045254 - languageName: node - linkType: hard - "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -19094,16 +18737,6 @@ __metadata: languageName: node linkType: hard -"pkg-conf@npm:^4.0.0": - version: 4.0.0 - resolution: "pkg-conf@npm:4.0.0" - dependencies: - find-up: ^6.0.0 - load-json-file: ^7.0.0 - checksum: 6da0c064a74f6c7ae80d7d68c5853e14f7e762a2a80c6ca9e0aa827002b90b69c86fefe3bac830b10a6f1739e7f96a1f728637f2a141e50b0fdafe92a2c3eab6 - languageName: node - linkType: hard - "pkg-dir@npm:^3.0.0": version: 3.0.0 resolution: "pkg-dir@npm:3.0.0" @@ -19172,15 +18805,6 @@ __metadata: languageName: node linkType: hard -"plur@npm:^5.1.0": - version: 5.1.0 - resolution: "plur@npm:5.1.0" - dependencies: - irregular-plurals: ^3.3.0 - checksum: 57e400dc4b926768fb0abab7f8688fe17e85673712134546e7beaaee188bae7e0504976e847d7e41d0d6103ff2fd61204095f03c2a45de19a8bad15aecb45cc1 - languageName: node - linkType: hard - "polished@npm:^4.2.2": version: 4.2.2 resolution: "polished@npm:4.2.2" @@ -19303,15 +18927,6 @@ __metadata: languageName: node linkType: hard -"pretty-ms@npm:^8.0.0": - version: 8.0.0 - resolution: "pretty-ms@npm:8.0.0" - dependencies: - parse-ms: ^3.0.0 - checksum: b7d2a8182887af0e5ab93f9df331f10db9b8eda86855e2de115eb01a6c501bde5631a8813b1b0abdd7d045e79b08ae875369a8fd279a3dacd6d9e572bdd3bfa6 - languageName: node - linkType: hard - "printable-characters@npm:^1.0.42": version: 1.0.42 resolution: "printable-characters@npm:1.0.42" @@ -21346,7 +20961,7 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.3, stack-utils@npm:^2.0.6": +"stack-utils@npm:^2.0.3": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" dependencies: @@ -21780,18 +21395,6 @@ __metadata: languageName: node linkType: hard -"supertap@npm:^3.0.1": - version: 3.0.1 - resolution: "supertap@npm:3.0.1" - dependencies: - indent-string: ^5.0.0 - js-yaml: ^3.14.1 - serialize-error: ^7.0.1 - strip-ansi: ^7.0.1 - checksum: ee3d71c1d25f7f15d4a849e72b0c5f430df7cd8f702cf082fdbec5642a9546be6557766745655fa3a3e9c88f7c7eed849f2d74457b5b72cb9d94a779c0c8a948 - languageName: node - linkType: hard - "supports-color@npm:^5.3.0, supports-color@npm:^5.5.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -21960,13 +21563,6 @@ __metadata: languageName: node linkType: hard -"temp-dir@npm:^3.0.0": - version: 3.0.0 - resolution: "temp-dir@npm:3.0.0" - checksum: 577211e995d1d584dd60f1469351d45e8a5b4524e4a9e42d3bdd12cfde1d0bb8f5898311bef24e02aaafb69514c1feb58c7b4c33dcec7129da3b0861a4ca935b - languageName: node - linkType: hard - "temp@npm:^0.8.4": version: 0.8.4 resolution: "temp@npm:0.8.4" @@ -22297,6 +21893,15 @@ __metadata: languageName: node linkType: hard +"ts-essentials@npm:^9.3.1": + version: 9.3.1 + resolution: "ts-essentials@npm:9.3.1" + peerDependencies: + typescript: ">=4.1.0" + checksum: 5accaec3eeea93cf19ad9e1959e763ba8a8253c977cd3f88cd7d8a2c04e697e77cc65fd742d9e88482b564a78b3c2dc1269119505bf7ad06320175b490dd49de + languageName: node + linkType: hard + "ts-morph@npm:13.0.2": version: 13.0.2 resolution: "ts-morph@npm:13.0.2" @@ -23181,6 +22786,18 @@ __metadata: languageName: node linkType: hard +"vitest-mock-extended@npm:^1.1.3": + version: 1.1.3 + resolution: "vitest-mock-extended@npm:1.1.3" + dependencies: + ts-essentials: ^9.3.1 + peerDependencies: + typescript: 3.x || 4.x || 5.x + vitest: ">=0.29.2" + checksum: d457dc1dcbf6b0570e9845dff7423c2b88504ce6bb189e71c0984b09b4d6c5894d883706a7639262c92e12b0b4b0d5db747e1d0b93e253b4d6c189cba15c70f9 + languageName: node + linkType: hard + "vitest@npm:^0.30.1": version: 0.30.1 resolution: "vitest@npm:0.30.1" @@ -23710,16 +23327,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^5.0.0": - version: 5.0.0 - resolution: "write-file-atomic@npm:5.0.0" - dependencies: - imurmurhash: ^0.1.4 - signal-exit: ^3.0.7 - checksum: 6ee16b195572386cb1c905f9d29808f77f4de2fd063d74a6f1ab6b566363832d8906a493b764ee715e57ab497271d5fc91642a913724960e8e845adf504a9837 - languageName: node - linkType: hard - "ws@npm:8.13.0, ws@npm:^8.13.0, ws@npm:^8.2.3": version: 8.13.0 resolution: "ws@npm:8.13.0" @@ -23938,7 +23545,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.0.0, yargs@npm:^17.0.1, yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.1": +"yargs@npm:^17.0.0, yargs@npm:^17.0.1, yargs@npm:^17.3.1, yargs@npm:^17.7.1": version: 17.7.1 resolution: "yargs@npm:17.7.1" dependencies: