diff --git a/.babelrc b/.babelrc deleted file mode 100644 index b67cb26..0000000 --- a/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - [ - "@babel/preset-env", - { - "targets": { - "node": "6.4.0" - } - } - ] - ] -} \ No newline at end of file diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 061a1f6..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,50 +0,0 @@ -version: 2.1 -jobs: - test: - docker: - - image: cimg/node:current - - working_directory: ~/repo - - steps: - - checkout - - - restore_cache: - keys: - - npm-cache-{{ checksum "package.json" }} - - - run: yarn - - run: npm install mongoose --no-save - - run: yarn build && yarn test - - - save_cache: - paths: - - node_modules - key: npm-cache-{{ checksum "package.json" }} - lint: - docker: - - image: cimg/node:current - - working_directory: ~/repo - - steps: - - checkout - - - restore_cache: - keys: - - npm-cache-{{ checksum "package.json" }} - - - run: yarn - - run: yarn lint - - - save_cache: - paths: - - node_modules - key: npm-cache-{{ checksum "package.json" }} - -workflows: - version: 2 - build: - jobs: - - lint - - test diff --git a/.claude/skills/github-actions-templates b/.claude/skills/github-actions-templates new file mode 120000 index 0000000..8b2e120 --- /dev/null +++ b/.claude/skills/github-actions-templates @@ -0,0 +1 @@ +../../.agents/skills/github-actions-templates \ No newline at end of file diff --git a/.claude/skills/mongoose-mongodb b/.claude/skills/mongoose-mongodb new file mode 120000 index 0000000..2a4697f --- /dev/null +++ b/.claude/skills/mongoose-mongodb @@ -0,0 +1 @@ +../../.agents/skills/mongoose-mongodb \ No newline at end of file diff --git a/.claude/skills/typescript-advanced-types b/.claude/skills/typescript-advanced-types new file mode 120000 index 0000000..4d2e523 --- /dev/null +++ b/.claude/skills/typescript-advanced-types @@ -0,0 +1 @@ +../../.agents/skills/typescript-advanced-types \ No newline at end of file diff --git a/.claude/skills/typescript-docs b/.claude/skills/typescript-docs new file mode 120000 index 0000000..5929a6e --- /dev/null +++ b/.claude/skills/typescript-docs @@ -0,0 +1 @@ +../../.agents/skills/typescript-docs \ No newline at end of file diff --git a/.claude/skills/vitest b/.claude/skills/vitest new file mode 120000 index 0000000..7661536 --- /dev/null +++ b/.claude/skills/vitest @@ -0,0 +1 @@ +../../.agents/skills/vitest \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1e1e83b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,34 @@ +name: CI + +on: + push: + branches: + - '*' + pull_request: + branches: + - master + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20, 22] + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - run: bun install + - run: bun run typecheck + - run: bun run test + - run: bun run build + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + - run: bun install + - run: bun run lint diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..7b6ec13 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,45 @@ +name: Release + +on: + push: + branches: + - master + +permissions: + contents: write + pull-requests: write + +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: google-github-actions/release-please-action@v4 + id: release + with: + release-type: node + + - uses: actions/checkout@v4 + if: ${{ steps.release.outputs.release_created }} + + - uses: oven-sh/setup-bun@v2 + if: ${{ steps.release.outputs.release_created }} + + - uses: actions/setup-node@v4 + if: ${{ steps.release.outputs.release_created }} + with: + node-version: 20 + registry-url: 'https://registry.npmjs.org' + + - run: bun install + if: ${{ steps.release.outputs.release_created }} + + - run: bun run build + if: ${{ steps.release.outputs.release_created }} + + - run: bun run test + if: ${{ steps.release.outputs.release_created }} + + - run: npm publish + if: ${{ steps.release.outputs.release_created }} + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.gitignore b/.gitignore index 66fc698..d53c79b 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,8 @@ typings/ # dotenv environment variables file .env +# Build output +dist/ + +# opensrc - source code for packages +opensrc/ diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 7f91c9d..0000000 --- a/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -/.idea -/.circleci -/___tests___ -/src -.babelrc -package-lock.json -.npmrc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..d53c79b --- /dev/null +++ b/.prettierignore @@ -0,0 +1,65 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock +.idea + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# Build output +dist/ + +# opensrc - source code for packages +opensrc/ diff --git a/.prettierrc.json b/.prettierrc.json index 8b1cad0..544138b 100755 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,4 +1,3 @@ -{ - "singleQuote": true, - "trailingComma": "es5" -} \ No newline at end of file +{ + "singleQuote": true +} diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..43e2236 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,56 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## What This Is + +Mockingoose is a utility for mocking Mongoose models in tests (Jest or Vitest). It intercepts Mongoose operations (find, save, aggregate, etc.) via mock functions so tests run without a database connection. + +## Commands + +- **Test:** `bun run test` (all tests) or `npx vitest run --testPathPattern=` (single test) +- **Build:** `bun run build` (tsdown: `src/` → `dist/` ESM+CJS) +- **Typecheck:** `bun run typecheck` (tsc --noEmit) +- **Lint:** `bun run lint` (Prettier check) +- **Format:** `bunx prettier --write src` + +## Architecture + +TypeScript library: `src/index.ts` + `src/types.ts` → compiled to `dist/` via tsdown (ESM + CJS dual output with generated `.d.ts`). + +### How It Works + +1. **Connection mocking** — `mongoose.connect` and `mongoose.createConnection` are replaced with mock function stubs +2. **Operation mocking** — All query operations (`find`, `findOne`, `save`, etc.) on `mongoose.Query.prototype` are replaced with mocks that call `mockedReturn()` +3. **`mockedReturn()`** — Core function that looks up mocked data from `mockingoose.__mocks[modelName][op]`, wraps results in Mongoose Model instances (unless the op is a raw-return type like `deleteOne`/`countDocuments`), and supports promise patterns +4. **Instance methods** — `save`, `$save` are mocked on `mongoose.Model.prototype` with pre/post hook support +5. **Aggregate** — Separately handled via `mongoose.Aggregate.prototype.exec` +6. **Proxy API** — `mockingoose` is a Proxy that allows both `mockingoose(Model).toReturn(data, op)` (preferred) and `mockingoose.ModelName.toReturn(data, op)` (deprecated) +7. **Framework detection** — Runtime detection of `vi` (Vitest) or `jest` globals for mock function creation + +### Key Files + +- `src/index.ts` — Main library source +- `src/types.ts` — Exported TypeScript types (Op, MockController, Mockingoose, etc.) +- `__tests__/index.test.ts` — Test suite (Vitest) +- `__tests__/User.ts` — Test fixture model + +### Style + +Prettier with single quotes, trailing commas (es5). See `.prettierrc.json`. + +## Skills + +Use these Claude Code skills when working in this repo: + +- `typescript-docs` — TypeScript documentation generation +- `typescript-advanced-types` — advanced TypeScript type patterns (generics, conditional types, mapped types, etc.) +- `vitest` — testing (writing tests, mocking, coverage, fixtures) +- `mongoose-mongodb` — Mongoose/MongoDB schema design, CRUD, queries +- `github-actions-templates` — GitHub Actions CI/CD workflows, automated testing/building/deploying + +## Package Manager + +- Always use `bun` as the package manager. +- Never add packages manually to package.json — always use `bun add` / `bun add -d`. +- Always use `bun` to install dependencies. diff --git a/README.md b/README.md index 7c8be53..51ce28d 100644 --- a/README.md +++ b/README.md @@ -1,84 +1,70 @@ -# Mockingoose [![CircleCI](https://circleci.com/gh/alonronin/mockingoose/tree/master.svg?style=svg)](https://circleci.com/gh/alonronin/mockingoose/tree/master) +# Mockingoose [![CI](https://github.com/alonronin/mockingoose/actions/workflows/ci.yml/badge.svg)](https://github.com/alonronin/mockingoose/actions/workflows/ci.yml) ![logo] -> A Jest package for mocking mongoose models +> A package for mocking Mongoose models — works with Jest and Vitest ## Installation -With NPM: ```bash -$ npm i mockingoose -D +npm i mockingoose -D ``` -With Yarn: -```bash -$ yarn add mockingoose -D -``` +## Import -## Import the library +```ts +// ESM / TypeScript +import mockingoose from 'mockingoose'; -```js +// CommonJS const mockingoose = require('mockingoose'); - ``` ## Usage -```js -// user.js -const mongoose = require('mongoose'); -const { Schema } = mongoose; +```ts +// user.ts +import mongoose, { Schema } from 'mongoose'; -const schema = Schema({ +const schema = new Schema({ name: String, email: String, created: { type: Date, default: Date.now }, }); -module.exports = mongoose.model('User', schema); +export default mongoose.model('User', schema); ``` #### mockingoose(Model).toReturn(obj, operation = 'find') Returns a plain object. -```js -// __tests__/user.test.js -const mockingoose = require('mockingoose'); - -const model = require('./user'); +```ts +// __tests__/user.test.ts +import mockingoose from 'mockingoose'; +import User from './user'; describe('test mongoose User model', () => { - it('should return the doc with findById', () => { + it('should return the doc with findById', async () => { const _doc = { _id: '507f191e810c19729de860ea', name: 'name', email: 'name@email.com', }; - mockingoose(model).toReturn(_doc, 'findOne'); + mockingoose(User).toReturn(_doc, 'findOne'); - return model.findById({ _id: '507f191e810c19729de860ea' }).then(doc => { - expect(JSON.parse(JSON.stringify(doc))).toMatchObject(_doc); - }); + const doc = await User.findById('507f191e810c19729de860ea'); + expect(JSON.parse(JSON.stringify(doc))).toMatchObject(_doc); }); - it('should return the doc with update', () => { - const _doc = { - _id: '507f191e810c19729de860ea', - name: 'name', - email: 'name@email.com', - }; + it('should return the doc with updateOne', async () => { + const _doc = { ok: 1, nModified: 1, n: 1 }; - mockingoose(model).toReturn(_doc, 'update'); + mockingoose(User).toReturn(_doc, 'updateOne'); - return model - .update({ name: 'changed' }) // this won't really change anything - .where({ _id: '507f191e810c19729de860ea' }) - .then(doc => { - expect(JSON.parse(JSON.stringify(doc))).toMatchObject(_doc); - }); + const result = await User.updateOne({ name: 'changed' }, {}); + expect(result).toMatchObject(_doc); }); }); ``` @@ -89,55 +75,48 @@ Allows passing a function in order to return the result. You will be able to inspect the query using the parameter passed to the function. This will be either a Mongoose [Query](https://mongoosejs.com/docs/api.html#Query) or [Aggregate](https://mongoosejs.com/docs/api.html#Aggregate) class, depending on your usage. -You can use [snapshots](https://jestjs.io/docs/en/snapshot-testing) to automatically test that the queries sent out are valid. - -```js -// __tests__/user.test.js -const mockingoose = require('mockingoose'); -const model = require('./user'); +```ts +import mockingoose from 'mockingoose'; +import User from './user'; describe('test mongoose User model', () => { - it('should return the doc with findById', () => { + it('should return the doc with findById', async () => { const _doc = { _id: '507f191e810c19729de860ea', name: 'name', email: 'name@email.com', }; - const finderMock = query => { - expect(query.getQuery()).toMatchSnapshot('findById query'); + const finderMock = (query: any) => { if (query.getQuery()._id === '507f191e810c19729de860ea') { return _doc; } }; - mockingoose(model).toReturn(finderMock, 'findOne'); // findById is findOne + mockingoose(User).toReturn(finderMock, 'findOne'); - return model.findById('507f191e810c19729de860ea').then(doc => { - expect(JSON.parse(JSON.stringify(doc))).toMatchObject(_doc); - }); + const doc = await User.findById('507f191e810c19729de860ea'); + expect(JSON.parse(JSON.stringify(doc))).toMatchObject(_doc); }); }); ``` #### mockingoose(Model).reset(operation = undefined) -will reset Model mock, if pass an operation, will reset only this operation mock. +Will reset Model mock. If passed an operation, will reset only that operation's mock. -```js -it('should reset model mock', () => { - mockingoose(model).toReturn({ name: '1' }); - mockingoose(model).toReturn({ name: '2' }, 'save'); +```ts +mockingoose(User).toReturn({ name: '1' }); +mockingoose(User).toReturn({ name: '2' }, 'save'); - mockingoose(model).reset(); // will reset all operations; - mockingoose(model).reset('find'); // will reset only find operations; -}); +mockingoose(User).reset(); // will reset all operations +mockingoose(User).reset('find'); // will reset only find operation ``` -you can also chain `mockingoose#ModelName` operations: +You can also chain operations: -```js -mockingoose(model) +```ts +mockingoose(User) .toReturn({ name: 'name' }) .toReturn({ name: 'a name too' }, 'findOne') .toReturn({ name: 'another name' }, 'save') @@ -146,9 +125,9 @@ mockingoose(model) #### mockingoose.resetAll() -will reset all mocks. +Will reset all mocks. -```js +```ts beforeEach(() => { mockingoose.resetAll(); }); @@ -156,52 +135,78 @@ beforeEach(() => { ### Operations available: -- [x] `find` - for find query -- [x] `findOne` - for findOne query -- [x] `count` - for count query (deprecated) -- [x] `countDocuments` for count query -- [x] `estimatedDocumentCount` for count collection documents -- [x] `distinct` - for distinct query -- [x] `findOneAndUpdate` - for findOneAndUpdate query -- [x] `findOneAndRemove` - for findOneAndRemove query -- [x] `update` - for update query (DEPRECATED) -- [x] `updateOne` - for updateOne query -- [x] `updateMany` - for updateMany query -- [x] `save` - for create, and save documents `Model.create()` or `Model.save()` or `doc.save()` -- [x] `remove` - for remove query (DEPRECATED) -- [x] `deleteOne` - for deleteOne query -- [x] `deleteMany` - for deleteMany query -- [x] `aggregate` - for aggregate framework -- [x] `insertMany` - for `Model.insertMany()` bulk insert, can also pass `{ lean: true, rawResult: true }` options. +- `find` - for find query +- `findOne` - for findOne query +- `countDocuments` - for count query +- `estimatedDocumentCount` - for count collection documents +- `distinct` - for distinct query +- `findOneAndUpdate` - for findOneAndUpdate query +- `findOneAndDelete` - for findOneAndDelete query +- `findOneAndReplace` - for findOneAndReplace query +- `updateOne` - for updateOne query +- `updateMany` - for updateMany query +- `save` - for create, and save documents `Model.create()` or `Model.save()` or `doc.save()` +- `deleteOne` - for deleteOne query +- `deleteMany` - for deleteMany query +- `aggregate` - for aggregate framework +- `replaceOne` - for replaceOne query +- `insertMany` - for `Model.insertMany()` bulk insert, can also pass `{ lean: true, rawResult: true }` options. +- `bulkWrite` - for `Model.bulkWrite()` bulk operations +- `bulkSave` - for `Model.bulkSave()` bulk save + +### Cursor Support + +You can mock `cursor()` on find queries. The cursor uses the `find` mock data and supports `next()`, `eachAsync()`, `close()`, and `for await...of`: + +```ts +mockingoose(User).toReturn([{ name: 'a' }, { name: 'b' }]); + +// next() +const cursor = User.find().cursor(); +const first = await cursor.next(); +const second = await cursor.next(); +const done = await cursor.next(); // null + +// for await...of +for await (const doc of User.find().cursor()) { + console.log(doc); +} + +// eachAsync +await User.find() + .cursor() + .eachAsync((doc) => { + console.log(doc); + }); +``` ### Notes -All operations work with `exec`, `promise` and `callback`. +All operations work with `exec` and `promise` patterns. -- if you are using `Model.create` and you don't pass a mock with mockingoose you'll receive the mongoose created doc (with ObjectId and transformations) +- If you are using `Model.create` and you don't pass a mock with mockingoose you'll receive the mongoose created doc (with ObjectId and transformations) -- validations are working as expected. +- Validations work as expected. -- the returned document is an instance of mongoose Model. +- The returned document is an instance of mongoose Model. -- `deleteOne` and `updateOne` operation returns original mocked object. +- `deleteOne` and `updateOne` operations return the original mocked object. -- you can simulate Error by passing an Error to mockingoose: +- You can simulate errors by passing an Error to mockingoose: - ```js - mockingoose(model).toReturn(new Error('My Error'), 'save'); + ```ts + mockingoose(User).toReturn(new Error('My Error'), 'save'); - return model.create({ name: 'name', email: 'name@email.com' }).catch(err => { - expect(err.message).toBe('My Error'); - }); + await expect( + User.create({ name: 'name', email: 'name@email.com' }) + ).rejects.toThrow('My Error'); ``` -- you can mock `.populate` in your mocked result just be sure to change - the `Schema`'s path to appropriate type (eg: `Object` | `Mixed`): - - ```js +- You can mock `.populate` in your mocked result — just change the Schema's path to appropriate type (e.g., `Object` | `Mixed`): + + ```ts User.schema.path('foreignKey', Object); - + const doc = { email: 'test@mail.com', foreignKey: { @@ -212,33 +217,38 @@ All operations work with `exec`, `promise` and `callback`. name: 'Name', saveCount: 1, }; - + mockingoose(User).toReturn(doc); - + const result = await User.find(); - expect(result).toMatchObject(doc); ``` -- you can mock the `Model.exists()` by passing the `findOne` operator. see [Issue #69](https://github.com/alonronin/mockingoose/issues/69) - -- no connection is made to the database (mongoose.connect is jest.fn()) +- You can mock `Model.exists()` via the `findOne` operation. See [Issue #69](https://github.com/alonronin/mockingoose/issues/69) + +- No connection is made to the database (mongoose.connect is mocked) + +- Requires Node.js 18+ and Mongoose 9+. Tested with Vitest and Jest. -- will work with node 6.4.x. tested with mongoose 4.x and jest 20.x. +### v3.0.0 Breaking Changes -- check tests for more, feel free to fork and contribute. +- Rewritten in TypeScript with full type exports +- Requires Node.js >= 18 and Mongoose >= 9 +- Removed deprecated operations: `count`, `update`, `remove`, `findOneAndRemove` +- ESM + CJS dual package (use `import` or `require`) +- Tests use Vitest (Jest still supported at runtime) -#### Recent Changes: +#### Notes: -- `mockingoose.ModelName` is deprecated, `mockingoose(Model)` is the now the recommended usage, with `Model` being a Mongoose model class. +- `mockingoose.ModelName` is deprecated, `mockingoose(Model)` is the recommended usage, with `Model` being a Mongoose model class. Alternatively, you may pass a string with the model name. -- `mockingoose(Model).toReturn((query) => value)` can now take also take a function as a parameter. +- `mockingoose(Model).toReturn((query) => value)` can also take a function as a parameter. The function is called with either a [Query](https://mongoosejs.com/docs/api.html#Query) or [Aggregate](https://mongoosejs.com/docs/api.html#Aggregate) object from Mongoose, depending on the request. This allows tests to ensure that proper queries are sent out, and helps with regression testing. -[logo]: http://animals.sandiegozoo.org/sites/default/files/2016-12/DwarfMongoose_ZN.jpg +[logo]: mockingoose.png ### Shoutout to our amazing community diff --git a/___tests___/User.js b/__tests__/User.ts similarity index 58% rename from ___tests___/User.js rename to __tests__/User.ts index 75a7116..0a414a6 100644 --- a/___tests___/User.js +++ b/__tests__/User.ts @@ -1,19 +1,16 @@ -const mongoose = require('mongoose'); -const { Schema } = mongoose; -const { ObjectId } = Schema.Types; +import mongoose, { Schema } from 'mongoose'; const schema = new Schema({ created: { type: Date, default: Date.now }, email: { type: String, required: true }, - foreignKey: ObjectId, + foreignKey: Schema.Types.ObjectId, name: String, saveCount: { type: Number, default: 0 }, }); -schema.pre('save', function() { +schema.pre('save', function () { this.saveCount++; }); const User = mongoose.model('User', schema); - -module.exports = User; +export default User; diff --git a/___tests___/index.test.js b/__tests__/index.test.ts similarity index 58% rename from ___tests___/index.test.js rename to __tests__/index.test.ts index ddd3bef..baa54ec 100644 --- a/___tests___/index.test.js +++ b/__tests__/index.test.ts @@ -1,13 +1,12 @@ -const mongoose = require('mongoose'); -const mockingoose = require('../'); -const User = require('./User'); - -jest.setTimeout(15000); +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import mongoose from 'mongoose'; +import mockingoose from '../src/index'; +import User from './User'; describe('mockingoose', () => { beforeEach(() => { mockingoose.resetAll(); - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('explicit tests', () => { @@ -41,24 +40,24 @@ describe('mockingoose', () => { }); it('should work with function that is not an instance of a function', async () => { - const returnMock = jest.fn().mockReturnValue({ name: '2' }); + const returnMock = vi.fn().mockReturnValue({ name: '2' }); mockingoose(User).toReturn(returnMock, 'findOne'); const result = await User.findOne(); - expect(result.toObject()).toHaveProperty('_id'); - expect(result.toObject()).toHaveProperty('created'); - expect(result.toObject()).toMatchObject({ name: '2' }); + expect(result!.toObject()).toHaveProperty('_id'); + expect(result!.toObject()).toHaveProperty('created'); + expect(result!.toObject()).toMatchObject({ name: '2' }); expect(result).toBeInstanceOf(User); }); it('should work with mockingoose(User)', async () => { - const returnMock = jest.fn().mockReturnValue({ name: '2' }); + const returnMock = vi.fn().mockReturnValue({ name: '2' }); mockingoose(User).toReturn(returnMock, 'findOne'); const result = await User.findOne(); - expect(result.toObject()).toHaveProperty('_id'); - expect(result.toObject()).toHaveProperty('created'); - expect(result.toObject()).toMatchObject({ name: '2' }); + expect(result!.toObject()).toHaveProperty('_id'); + expect(result!.toObject()).toHaveProperty('created'); + expect(result!.toObject()).toMatchObject({ name: '2' }); expect(result).toBeInstanceOf(User); }); @@ -74,7 +73,7 @@ describe('mockingoose', () => { }); it('should find with function', async () => { - mockingoose(User).toReturn((query) => { + mockingoose(User).toReturn((query: any) => { expect(query.getFilter()).toMatchObject({ name: { $in: [1] } }); return [{ name: '2' }]; }); @@ -106,38 +105,19 @@ describe('mockingoose', () => { mockingoose(User).toReturn(docObj, 'findOne'); const doc = await User.findById(1); - expect(doc.toObject()).toMatchObject(docObj); + expect(doc!.toObject()).toMatchObject(docObj); }); it('should findById with function', async () => { const docObj = { name: 'name' }; - mockingoose(User).toReturn((query) => { + mockingoose(User).toReturn((query: any) => { expect(query).toBeInstanceOf(mongoose.Query); return docObj; }, 'findOne'); const doc = await User.findById(1); - expect(doc.toObject()).toMatchObject(docObj); - }); - - it('should count', async () => { - const count = 2; - mockingoose(User).toReturn(count, 'count'); - - const result = await User.count({}); - expect(result).toBe(count); - }); - - it('should count with function', async () => { - const count = 2; - mockingoose(User).toReturn((query) => { - expect(query).toBeInstanceOf(mongoose.Query); - return count; - }, 'count'); - - const result = await User.count({}); - expect(result).toBe(count); + expect(doc!.toObject()).toMatchObject(docObj); }); it('should countDocuments', async () => { @@ -150,7 +130,7 @@ describe('mockingoose', () => { it('should countDocuments with function', async () => { const count = 2; - mockingoose(User).toReturn((query) => { + mockingoose(User).toReturn((query: any) => { expect(query).toBeInstanceOf(mongoose.Query); return count; }, 'countDocuments'); @@ -169,7 +149,7 @@ describe('mockingoose', () => { it('should estimatedDocumentCount with function', async () => { const count = 2; - mockingoose(User).toReturn((query) => { + mockingoose(User).toReturn((query: any) => { expect(query).toBeInstanceOf(mongoose.Query); return count; }, 'estimatedDocumentCount'); @@ -178,142 +158,108 @@ describe('mockingoose', () => { expect(result).toBe(count); }); - it('should count exec and cb', (done) => { - const count = 2; - mockingoose(User).toReturn(count, 'count'); - - User.count({}).exec((err, result) => { - expect(result).toBe(count); - done(); - }); - }); - - it('should countDocuments exec and cb', (done) => { + it('should countDocuments exec', async () => { const count = 2; mockingoose(User).toReturn(count, 'countDocuments'); - User.countDocuments().exec((err, result) => { - expect(result).toBe(count); - done(); - }); + const result = await User.countDocuments().exec(); + expect(result).toBe(count); }); - it('should estimatedDocumentCount exec and cb', (done) => { + it('should estimatedDocumentCount exec', async () => { const count = 2; mockingoose(User).toReturn(count, 'estimatedDocumentCount'); - User.estimatedDocumentCount().exec((err, result) => { - expect(result).toBe(count); - done(); - }); + const result = await User.estimatedDocumentCount().exec(); + expect(result).toBe(count); }); - it('should distinct with simple array', (done) => { + it('should distinct with simple array', async () => { const distinct = ['a', 'b']; mockingoose(User).toReturn(distinct, 'distinct'); - User.distinct('name').exec((err, result) => { - expect(result).toBe(distinct); - done(); - }); + const result = await User.distinct('name').exec(); + expect(result).toBe(distinct); }); - it('should update with exec and callback', (done) => { + it('should update with exec and callback', async () => { mockingoose(User).toReturn({ ok: 1, nModified: 1, n: 1 }, 'updateMany'); - User.updateMany({ email: 'name@mail.com' }, {}) + const result = await User.updateMany({ email: 'name@mail.com' }, {}) .where('name', 'name') - .exec((err, result) => { - expect(result).toEqual({ ok: 1, nModified: 1, n: 1 }); - done(); - }); + .exec(); + expect(result).toEqual({ ok: 1, nModified: 1, n: 1 }); }); - it('should update with exec and callback with function', (done) => { - mockingoose(User).toReturn((query) => { + it('should update with exec and callback with function', async () => { + mockingoose(User).toReturn((query: any) => { expect(query).toBeInstanceOf(mongoose.Query); return { ok: 1, nModified: 1, n: 1 }; }, 'updateMany'); - User.updateMany({ email: 'name@mail.com' }, {}) + const result = await User.updateMany({ email: 'name@mail.com' }, {}) .where('name', 'name') - .exec((err, result) => { - expect(result).toEqual({ ok: 1, nModified: 1, n: 1 }); - done(); - }); + .exec(); + expect(result).toEqual({ ok: 1, nModified: 1, n: 1 }); }); - it('should update with callback', (done) => { + it('should update with callback', async () => { mockingoose(User).toReturn({ ok: 1, nModified: 1, n: 1 }, 'updateOne'); - User.updateOne( + const result = await User.updateOne( { name: 'name' }, - { email: 'name@mail.com' }, - {}, - (err, result) => { - expect(result).toEqual({ ok: 1, nModified: 1, n: 1 }); - done(); - } + { email: 'name@mail.com' } ); + expect(result).toEqual({ ok: 1, nModified: 1, n: 1 }); }); - it('should aggregate with callback', (done) => { + it('should aggregate with callback', async () => { mockingoose(User).toReturn( [{ _id: { accountId: '5aef17c3d7c488f401c101bd' } }], 'aggregate' ); - User.aggregate( - [ - { - $group: { - _id: { - accountId: '$accountId', - }, + const result = await User.aggregate([ + { + $group: { + _id: { + accountId: '$accountId', }, }, - ], - (err, result) => { - expect(result).toEqual([ - { _id: { accountId: '5aef17c3d7c488f401c101bd' } }, - ]); - done(); - } - ); + }, + ]); + expect(result).toEqual([ + { _id: { accountId: '5aef17c3d7c488f401c101bd' } }, + ]); }); - it('should aggregate with callback using function', (done) => { - mockingoose(User).toReturn((agg) => { + it('should aggregate with callback using function', async () => { + mockingoose(User).toReturn((agg: any) => { expect(agg).toBeInstanceOf(mongoose.Aggregate); return [{ _id: { accountId: '5aef17c3d7c488f401c101bd' } }]; }, 'aggregate'); - User.aggregate( - [ - { - $group: { - _id: { - accountId: '$accountId', - }, + const result = await User.aggregate([ + { + $group: { + _id: { + accountId: '$accountId', }, }, - ], - (err, result) => { - expect(result).toEqual([ - { _id: { accountId: '5aef17c3d7c488f401c101bd' } }, - ]); - done(); - } - ); + }, + ]); + expect(result).toEqual([ + { _id: { accountId: '5aef17c3d7c488f401c101bd' } }, + ]); }); - it('should aggregate with exec and callback', (done) => { + it('should aggregate with exec and callback', async () => { mockingoose(User).toReturn( [{ _id: { accountId: '5aef17c3d7c488f401c101bd' } }], 'aggregate' ); - User.aggregate([ + const result = await User.aggregate([ { $group: { _id: { @@ -321,12 +267,10 @@ describe('mockingoose', () => { }, }, }, - ]).exec((err, result) => { - expect(result).toEqual([ - { _id: { accountId: '5aef17c3d7c488f401c101bd' } }, - ]); - done(); - }); + ]).exec(); + expect(result).toEqual([ + { _id: { accountId: '5aef17c3d7c488f401c101bd' } }, + ]); }); it('should aggregate with promise', async () => { @@ -349,15 +293,6 @@ describe('mockingoose', () => { ]); }); - it.skip('should create returns mock', async () => { - mockingoose(User).toReturn({ _id: '507f191e810c19729de860ea' }, 'save'); - - const result = await User.create({ email: 'name@mail.com' }); - expect(JSON.parse(JSON.stringify(result))).toMatchObject({ - _id: '507f191e810c19729de860ea', - }); - }); - it('should create returns mongoose document', async () => { const result = await User.create({ email: 'name@mail.com', @@ -369,23 +304,12 @@ describe('mockingoose', () => { }); }); - it.skip('should return error', async () => { - const error = new Error('My Error'); - mockingoose(User).toReturn(error, 'save'); - await expect( - User.create({ name: 'name', email: 'name@mail.com' }) - ).rejects.toEqual(error); - }); - - it('should find with callback', (done) => { + it('should find with callback', async () => { const docObj = [{ name: 'name' }]; mockingoose(User).toReturn(docObj); - User.find({ _id: 1 }, (err, doc) => { - expect(err).toBeNull(); - expect(doc[0].toObject()).toMatchObject(docObj[0]); - done(); - }); + const doc = await User.find({ _id: 1 }); + expect(doc[0].toObject()).toMatchObject(docObj[0]); }); it('should reset a single mock', async () => { @@ -418,10 +342,10 @@ describe('mockingoose', () => { .toReturn({ name: 'another name' }, 'save'); const user = await User.findOne(); - expect(user.toObject()).toMatchObject({ name: 'name' }); - user.name = 'another name'; - user.email = 'name@email.com'; // or we will get Schema validation error - const user1 = await user.save(); + expect(user!.toObject()).toMatchObject({ name: 'name' }); + user!.name = 'another name'; + user!.email = 'name@email.com'; // or we will get Schema validation error + const user1 = await user!.save(); expect(user1.toObject()).toMatchObject({ name: 'another name' }); }); @@ -461,7 +385,7 @@ describe('mockingoose', () => { email: 'name@email.com', name: 'name', }; - const finder = (query) => { + const finder = (query: any) => { if (query.getQuery()._id === '507f191e810c19729de860ea') { return docObj; } @@ -494,15 +418,6 @@ describe('mockingoose', () => { expect(result).toMatchObject(doc); }); - it('return correct mock for remove', async () => { - const doc = { n: 0, ok: 0, deletedCount: 0 }; - mockingoose(User).toReturn(doc, 'remove'); - - const result = await User.remove({ name: 'test' }); - - expect(result).toBe(doc); - }); - it('return correct mock for deleteOne', async () => { const doc = { n: 0, ok: 0, deletedCount: 0 }; mockingoose(User).toReturn(doc, 'deleteOne'); @@ -514,9 +429,9 @@ describe('mockingoose', () => { it('return correct mock for deleteMany', async () => { const doc = { n: 1, ok: 1, deletedCount: 10 }; - mockingoose(User).toReturn(doc, 'deleteOne'); + mockingoose(User).toReturn(doc, 'deleteMany'); - const result = await User.deleteOne({ name: 'test' }); + const result = await User.deleteMany({ name: 'test' }); expect(result).toBe(doc); }); @@ -548,41 +463,39 @@ describe('mockingoose', () => { expect(result.length).toEqual(doc.length); }); - }); - - describe('check all instance methods', () => { - const instanceMethods = ['save', 'remove']; - instanceMethods.forEach((op) => { - it(`${op} resolves its promise correctly`, async () => { - const mocked = { - email: 'name@email.com', - name: op, - }; - - mockingoose(User).toReturn(mocked, 'findOne').toReturn(mocked, op); - - const user = await User.findOne(); - const user1 = await user[op](); - expect(user1).toBeTruthy(); - }); + it('should replaceOne', async () => { + const doc = { acknowledged: true, modifiedCount: 1, matchedCount: 1 }; + mockingoose(User).toReturn(doc, 'replaceOne'); + const result = await User.replaceOne( + { name: 'test' }, + { name: 'replaced' } + ); + expect(result).toBe(doc); }); + }); - it.skip(`save calls its hook correctly`, () => { + describe('check all instance methods', () => { + it('save resolves its promise correctly', async () => { const mocked = { email: 'name@email.com', name: 'save', }; - mockingoose(User).toReturn(null, 'save'); + mockingoose(User).toReturn(mocked, 'findOne').toReturn(mocked, 'save'); - User.create(mocked).then((user) => { - expect(user.saveCount).toBe(1); - user.name = 'save2'; - user.save((err, user2) => { - expect(user2.saveCount).toBe(2); - }); - }); + const user = await User.findOne(); + const user1 = await user!.save(); + expect(user1).toBeTruthy(); + }); + + it('$save resolves its promise correctly', async () => { + const mocked = { email: 'name@email.com', name: '$save' }; + mockingoose(User).toReturn(mocked, 'findOne').toReturn(mocked, '$save'); + const user = await User.findOne(); + const saved = await user!.$save(); + expect(saved).toBeTruthy(); + expect(saved.toObject()).toMatchObject(mocked); }); it('returns false for exists method', async () => { @@ -634,13 +547,11 @@ describe('mockingoose', () => { mockingoose(User).toReturn(docs, 'insertMany'); - const result = await User.insertMany(docs, { rawResult: true }); + const result: any = await User.insertMany(docs, { rawResult: true }); - expect(result.map((doc) => doc instanceof mongoose.Model)).toStrictEqual([ - false, - false, - false, - ]); + expect( + result.map((doc: any) => doc instanceof mongoose.Model) + ).toStrictEqual([false, false, false]); }); }); @@ -650,16 +561,14 @@ describe('mockingoose', () => { 'findOne', 'distinct', 'findOneAndUpdate', - 'findOneAndRemove', 'findOneAndDelete', 'findOneAndReplace', - 'remove', - 'update', + 'replaceOne', 'updateOne', 'updateMany', 'deleteOne', 'deleteMany', - ]; + ] as const; describe('with promise', () => { ops.forEach((op) => { @@ -670,85 +579,205 @@ describe('mockingoose', () => { mockingoose(User).toReturn(mocked, op); - const args = []; + const args: any[] = []; - if (op === 'update') { + if (['updateOne', 'updateMany', 'replaceOne'].includes(op)) { args.push({}, {}); } - return User[op](...args).then((doc) => - expect( - doc instanceof mongoose.Model ? doc.toObject() : doc - ).toMatchObject(mocked) - ); + return (User as any) + [op](...args) + .then((doc: any) => + expect( + doc instanceof mongoose.Model ? doc.toObject() : doc + ).toMatchObject(mocked) + ); }); }); }); describe('with exec and callback', () => { ops.forEach((op) => { - it(op, (done) => { + it(op, async () => { const mocked = { name: op, }; mockingoose(User).toReturn(mocked, op); - const args = []; + const args: any[] = []; - if (['update', 'updateOne', 'updateMany'].includes(op)) { + if (['updateOne', 'updateMany', 'replaceOne'].includes(op)) { args.push({}, {}); } - User[op](...args).exec((err, doc) => { - expect(err).toBeNull(); - expect( - doc instanceof mongoose.Model ? doc.toObject() : doc - ).toMatchObject(mocked); - done(); - }); + const doc = await (User as any)[op](...args).exec(); + expect( + doc instanceof mongoose.Model ? doc.toObject() : doc + ).toMatchObject(mocked); }); }); }); describe('with callback', () => { ops.forEach((op) => { - it(op, (done) => { + it(op, async () => { const mocked = { name: op, }; mockingoose(User).toReturn(mocked, op); - const args = []; + const args: any[] = []; switch (op) { case 'distinct': case 'findOne': - case 'findOneAndRemove': case 'findOneAndDelete': case 'findOneAndReplace': args.push({}); break; - case 'update': case 'updateOne': case 'updateMany': case 'findOneAndUpdate': - args.push({}, {}, {}); + case 'replaceOne': + args.push({}, {}); break; } - args.push((err, doc) => { - expect(err).toBeNull(); - expect( - doc instanceof mongoose.Model ? doc.toObject() : doc - ).toMatchObject(mocked); - done(); - }); + const doc = await (User as any)[op](...args); + expect( + doc instanceof mongoose.Model ? doc.toObject() : doc + ).toMatchObject(mocked); + }); + }); + }); + }); + + describe('bulkWrite', () => { + it('should mock bulkWrite', async () => { + const mockResult = { + insertedCount: 1, + modifiedCount: 0, + deletedCount: 0, + }; + mockingoose(User).toReturn(mockResult, 'bulkWrite'); + const result = await User.bulkWrite([ + { insertOne: { document: { name: 'test', email: 'test@mail.com' } } }, + ]); + expect(result).toBe(mockResult); + }); + + it('should mock bulkWrite with function', async () => { + mockingoose(User).toReturn(() => { + return { insertedCount: 2, modifiedCount: 0, deletedCount: 0 }; + }, 'bulkWrite'); + const result = await User.bulkWrite([ + { insertOne: { document: { name: 'a', email: 'a@mail.com' } } }, + { insertOne: { document: { name: 'b', email: 'b@mail.com' } } }, + ]); + expect(result).toEqual({ + insertedCount: 2, + modifiedCount: 0, + deletedCount: 0, + }); + }); + + it('should mock bulkWrite with error', async () => { + mockingoose(User).toReturn(new Error('bulkWrite failed'), 'bulkWrite'); + await expect( + User.bulkWrite([ + { insertOne: { document: { name: 'test', email: 'test@mail.com' } } }, + ]) + ).rejects.toThrow('bulkWrite failed'); + }); + }); - User[op](...args); + describe('bulkSave', () => { + it('should mock bulkSave', async () => { + const mockResult = { + insertedCount: 2, + modifiedCount: 0, + deletedCount: 0, + }; + mockingoose(User).toReturn(mockResult, 'bulkSave'); + const docs = [ + new User({ name: 'a', email: 'a@mail.com' }), + new User({ name: 'b', email: 'b@mail.com' }), + ]; + const result = await User.bulkSave(docs); + expect(result).toBe(mockResult); + }); + }); + + describe('cursor support', () => { + it('should iterate with next()', async () => { + mockingoose(User).toReturn([ + { name: 'a', email: 'a@b.com' }, + { name: 'b', email: 'b@b.com' }, + ]); + const cursor = User.find().cursor(); + const first = await cursor.next(); + const second = await cursor.next(); + const third = await cursor.next(); + expect(first!.toObject()).toMatchObject({ name: 'a' }); + expect(second!.toObject()).toMatchObject({ name: 'b' }); + expect(third).toBeNull(); + }); + + it('should iterate with for-await-of', async () => { + mockingoose(User).toReturn([ + { name: 'x', email: 'x@b.com' }, + { name: 'y', email: 'y@b.com' }, + ]); + const results: any[] = []; + for await (const doc of User.find().cursor()) { + results.push(doc); + } + expect(results).toHaveLength(2); + expect(results[0].toObject()).toMatchObject({ name: 'x' }); + expect(results[1].toObject()).toMatchObject({ name: 'y' }); + }); + + it('should support eachAsync', async () => { + mockingoose(User).toReturn([ + { name: 'p', email: 'p@b.com' }, + { name: 'q', email: 'q@b.com' }, + ]); + const collected: any[] = []; + await User.find() + .cursor() + .eachAsync((doc: any) => { + collected.push(doc.toObject()); }); + expect(collected).toHaveLength(2); + expect(collected[0]).toMatchObject({ name: 'p' }); + }); + + it('should support close()', async () => { + mockingoose(User).toReturn([{ name: 'a', email: 'a@b.com' }]); + const cursor = User.find().cursor(); + await cursor.close(); + const result = await cursor.next(); + expect(result).toBeNull(); + }); + }); + + describe('delegated operations', () => { + it('findByIdAndUpdate delegates to findOneAndUpdate mock', async () => { + const doc = { name: 'updated', email: 'a@b.com' }; + mockingoose(User).toReturn(doc, 'findOneAndUpdate'); + const result = await User.findByIdAndUpdate('507f191e810c19729de860ea', { + name: 'updated', }); + expect(result!.toObject()).toMatchObject(doc); + }); + + it('findByIdAndDelete delegates to findOneAndDelete mock', async () => { + const doc = { name: 'deleted', email: 'a@b.com' }; + mockingoose(User).toReturn(doc, 'findOneAndDelete'); + const result = await User.findByIdAndDelete('507f191e810c19729de860ea'); + expect(result!.toObject()).toMatchObject(doc); }); }); @@ -758,27 +787,22 @@ describe('mockingoose', () => { expect(mongoose.connect).toBeCalled(); }); - it('should mock mongoose.createConnection', (done) => { - mongoose.createConnection('mock').then(() => { - expect(mongoose.createConnection).toBeCalled(); - done(); - }); + it('should mock mongoose.createConnection', async () => { + await mongoose.createConnection('mock'); + expect(mongoose.createConnection).toBeCalled(); }); - it('createConnection with callback', () => { + it('createConnection with callback', async () => { const conn = mongoose.createConnection('mongodb://localhost/test'); - // tslint:disable-next-line:no-console - conn.once('open', console.log); - // tslint:disable-next-line:no-console - conn.on('error', console.error); + (conn as any).once('open', console.log); + (conn as any).on('error', console.error); - conn.then((result) => { - expect(result).toBe(conn); - }); + const result = await conn; + expect(result).toBe(conn); }); - it('register models on createConnection instance', (done) => { + it('register models on createConnection instance', async () => { mockingoose.Model.toReturn({ name: 'test' }, 'save'); const conn = mongoose.createConnection('mongodb://localhost/test'); @@ -788,10 +812,8 @@ describe('mockingoose', () => { const Model = conn.model('Model', schema); - Model.create({ name: 'test' }).then((result) => { - expect(result.toObject()).toMatchObject({ name: 'test' }); - done(); - }); + const result = await Model.create({ name: 'test' }); + expect(result.toObject()).toMatchObject({ name: 'test' }); }); }); }); diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..cda3e18 --- /dev/null +++ b/bun.lock @@ -0,0 +1,346 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "mockingoose", + "devDependencies": { + "@types/node": "^25.2.2", + "prettier": "^2.8.0", + "tsdown": "^0.20.3", + "typescript": "^5.9.3", + "vitest": "^4.0.18", + }, + "peerDependencies": { + "mongoose": "^9.1.6", + }, + }, + }, + "packages": { + "@babel/generator": ["@babel/generator@8.0.0-rc.1", "", { "dependencies": { "@babel/parser": "^8.0.0-rc.1", "@babel/types": "^8.0.0-rc.1", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "@types/jsesc": "^2.5.0", "jsesc": "^3.0.2" } }, "sha512-3ypWOOiC4AYHKr8vYRVtWtWmyvcoItHtVqF8paFax+ydpmUdPsJpLBkBBs5ItmhdrwC3a0ZSqqFAdzls4ODP3w=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@8.0.0-rc.1", "", {}, "sha512-vi/pfmbrOtQmqgfboaBhaCU50G7mcySVu69VU8z+lYoPPB6WzI9VgV7WQfL908M4oeSH5fDkmoupIqoE0SdApw=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@8.0.0-rc.1", "", {}, "sha512-I4YnARytXC2RzkLNVnf5qFNFMzp679qZpmtw/V3Jt2uGnWiIxyJtaukjG7R8pSx8nG2NamICpGfljQsogj+FbQ=="], + + "@babel/parser": ["@babel/parser@8.0.0-rc.1", "", { "dependencies": { "@babel/types": "^8.0.0-rc.1" }, "bin": "./bin/babel-parser.js" }, "sha512-6HyyU5l1yK/7h9Ki52i5h6mDAx4qJdiLQO4FdCyJNoB/gy3T3GGJdhQzzbZgvgZCugYBvwtQiWRt94QKedHnkA=="], + + "@babel/types": ["@babel/types@8.0.0-rc.1", "", { "dependencies": { "@babel/helper-string-parser": "^8.0.0-rc.1", "@babel/helper-validator-identifier": "^8.0.0-rc.1" } }, "sha512-ubmJ6TShyaD69VE9DQrlXcdkvJbmwWPB8qYj0H2kaJi29O7vJT9ajSdBd2W8CG34pwL9pYA74fi7RHC1qbLoVQ=="], + + "@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.3", "", { "os": "android", "cpu": "arm64" }, "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.27.3", "", { "os": "android", "cpu": "x64" }, "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.3", "", { "os": "linux", "cpu": "arm" }, "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.3", "", { "os": "linux", "cpu": "x64" }, "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.3", "", { "os": "none", "cpu": "x64" }, "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@mongodb-js/saslprep": ["@mongodb-js/saslprep@1.4.5", "", { "dependencies": { "sparse-bitfield": "^3.0.3" } }, "sha512-k64Lbyb7ycCSXHSLzxVdb2xsKGPMvYZfCICXvDsI8Z65CeWQzTEKS4YmGbnqw+U9RBvLPTsB6UCmwkgsDTGWIw=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], + + "@oxc-project/types": ["@oxc-project/types@0.112.0", "", {}, "sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ=="], + + "@quansync/fs": ["@quansync/fs@1.0.0", "", { "dependencies": { "quansync": "^1.0.0" } }, "sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ=="], + + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.3", "", { "os": "android", "cpu": "arm64" }, "sha512-0T1k9FinuBZ/t7rZ8jN6OpUKPnUjNdYHoj/cESWrQ3ZraAJ4OMm6z7QjSfCxqj8mOp9kTKc1zHK3kGz5vMu+nQ=="], + + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JWWLzvcmc/3pe7qdJqPpuPk91SoE/N+f3PcWx/6ZwuyDVyungAEJPvKm/eEldiDdwTmaEzWfIR+HORxYWrCi1A=="], + + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-MTakBxfx3tde5WSmbHxuqlDsIW0EzQym+PJYGF4P6lG2NmKzi128OGynoFUqoD5ryCySEY85dug4v+LWGBElIw=="], + + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jje3oopyOLs7IwfvXoS6Lxnmie5JJO7vW29fdGFu5YGY1EDbVDhD+P9vDihqS5X6fFiqL3ZQZCMBg6jyHkSVww=="], + + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.3", "", { "os": "linux", "cpu": "arm" }, "sha512-A0n8P3hdLAaqzSFrQoA42p23ZKBYQOw+8EH5r15Sa9X1kD9/JXe0YT2gph2QTWvdr0CVK2BOXiK6ENfy6DXOag=="], + + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-kWXkoxxarYISBJ4bLNf5vFkEbb4JvccOwxWDxuK9yee8lg5XA7OpvlTptfRuwEvYcOZf+7VS69Uenpmpyo5Bjw=="], + + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Z03/wrqau9Bicfgb3Dbs6SYTHliELk2PM2LpG2nFd+cGupTMF5kanLEcj2vuuJLLhptNyS61rtk7SOZ+lPsTUA=="], + + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.3", "", { "os": "linux", "cpu": "x64" }, "sha512-iSXXZsQp08CSilff/DCTFZHSVEpEwdicV3W8idHyrByrcsRDVh9sGC3sev6d8BygSGj3vt8GvUKBPCoyMA4tgQ=="], + + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.3", "", { "os": "linux", "cpu": "x64" }, "sha512-qaj+MFudtdCv9xZo9znFvkgoajLdc+vwf0Kz5N44g+LU5XMe+IsACgn3UG7uTRlCCvhMAGXm1XlpEA5bZBrOcw=="], + + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.3", "", { "os": "none", "cpu": "arm64" }, "sha512-U662UnMETyjT65gFmG9ma+XziENrs7BBnENi/27swZPYagubfHRirXHG2oMl+pEax2WvO7Kb9gHZmMakpYqBHQ=="], + + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.3", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-gekrQ3Q2HiC1T5njGyuUJoGpK/l6B/TNXKed3fZXNf9YRTJn3L5MOZsFBn4bN2+UX+8+7hgdlTcEsexX988G4g=="], + + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-85y5JifyMgs8m5K2XzR/VDsapKbiFiohl7s5lEj7nmNGO0pkTXE7q6TQScei96BNAsoK7JC3pA7ukA8WRHVJpg=="], + + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.3", "", { "os": "win32", "cpu": "x64" }, "sha512-a4VUQZH7LxGbUJ3qJ/TzQG8HxdHvf+jOnqf7B7oFx1TEBm+j2KNL2zr5SQ7wHkNAcaPevF6gf9tQnVBnC4mD+A=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.3", "", {}, "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.57.1", "", { "os": "android", "cpu": "arm" }, "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.57.1", "", { "os": "android", "cpu": "arm64" }, "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.57.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.57.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.57.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.57.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.57.1", "", { "os": "linux", "cpu": "arm" }, "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.57.1", "", { "os": "linux", "cpu": "arm" }, "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.57.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.57.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA=="], + + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.57.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w=="], + + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.57.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.57.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.57.1", "", { "os": "linux", "cpu": "x64" }, "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.57.1", "", { "os": "linux", "cpu": "x64" }, "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw=="], + + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.57.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.57.1", "", { "os": "none", "cpu": "arm64" }, "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.57.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.57.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.57.1", "", { "os": "win32", "cpu": "x64" }, "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.57.1", "", { "os": "win32", "cpu": "x64" }, "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA=="], + + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], + + "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/jsesc": ["@types/jsesc@2.5.1", "", {}, "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw=="], + + "@types/node": ["@types/node@25.2.2", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ=="], + + "@types/webidl-conversions": ["@types/webidl-conversions@7.0.3", "", {}, "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="], + + "@types/whatwg-url": ["@types/whatwg-url@13.0.0", "", { "dependencies": { "@types/webidl-conversions": "*" } }, "sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q=="], + + "@vitest/expect": ["@vitest/expect@4.0.18", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.0.18", "@vitest/utils": "4.0.18", "chai": "^6.2.1", "tinyrainbow": "^3.0.3" } }, "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ=="], + + "@vitest/mocker": ["@vitest/mocker@4.0.18", "", { "dependencies": { "@vitest/spy": "4.0.18", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0-0" }, "optionalPeers": ["msw", "vite"] }, "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ=="], + + "@vitest/pretty-format": ["@vitest/pretty-format@4.0.18", "", { "dependencies": { "tinyrainbow": "^3.0.3" } }, "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw=="], + + "@vitest/runner": ["@vitest/runner@4.0.18", "", { "dependencies": { "@vitest/utils": "4.0.18", "pathe": "^2.0.3" } }, "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw=="], + + "@vitest/snapshot": ["@vitest/snapshot@4.0.18", "", { "dependencies": { "@vitest/pretty-format": "4.0.18", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA=="], + + "@vitest/spy": ["@vitest/spy@4.0.18", "", {}, "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw=="], + + "@vitest/utils": ["@vitest/utils@4.0.18", "", { "dependencies": { "@vitest/pretty-format": "4.0.18", "tinyrainbow": "^3.0.3" } }, "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA=="], + + "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], + + "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], + + "ast-kit": ["ast-kit@3.0.0-beta.1", "", { "dependencies": { "@babel/parser": "^8.0.0-beta.4", "estree-walker": "^3.0.3", "pathe": "^2.0.3" } }, "sha512-trmleAnZ2PxN/loHWVhhx1qeOHSRXq4TDsBBxq3GqeJitfk3+jTQ+v/C1km/KYq9M7wKqCewMh+/NAvVH7m+bw=="], + + "birpc": ["birpc@4.0.0", "", {}, "sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw=="], + + "bson": ["bson@7.2.0", "", {}, "sha512-YCEo7KjMlbNlyHhz7zAZNDpIpQbd+wOEHJYezv0nMYTn4x31eIUM2yomNNubclAt63dObUzKHWsBLJ9QcZNSnQ=="], + + "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], + + "chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], + + "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], + + "dts-resolver": ["dts-resolver@2.1.3", "", { "peerDependencies": { "oxc-resolver": ">=11.0.0" }, "optionalPeers": ["oxc-resolver"] }, "sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw=="], + + "empathic": ["empathic@2.0.0", "", {}, "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA=="], + + "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], + + "esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], + + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + + "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "get-tsconfig": ["get-tsconfig@4.13.6", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw=="], + + "hookable": ["hookable@6.0.1", "", {}, "sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw=="], + + "import-without-cache": ["import-without-cache@0.2.5", "", {}, "sha512-B6Lc2s6yApwnD2/pMzFh/d5AVjdsDXjgkeJ766FmFuJELIGHNycKRj+l3A39yZPM4CchqNCB4RITEAYB1KUM6A=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "kareem": ["kareem@3.0.0", "", {}, "sha512-RKhaOBSPN8L7y4yAgNhDT2602G5FD6QbOIISbjN9D6mjHPeqeg7K+EB5IGSU5o81/X2Gzm3ICnAvQW3x3OP8HA=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "memory-pager": ["memory-pager@1.5.0", "", {}, "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="], + + "mongodb": ["mongodb@7.0.0", "", { "dependencies": { "@mongodb-js/saslprep": "^1.3.0", "bson": "^7.0.0", "mongodb-connection-string-url": "^7.0.0" }, "peerDependencies": { "@aws-sdk/credential-providers": "^3.806.0", "@mongodb-js/zstd": "^7.0.0", "gcp-metadata": "^7.0.1", "kerberos": "^7.0.0", "mongodb-client-encryption": ">=7.0.0 <7.1.0", "snappy": "^7.3.2", "socks": "^2.8.6" }, "optionalPeers": ["@aws-sdk/credential-providers", "@mongodb-js/zstd", "gcp-metadata", "kerberos", "mongodb-client-encryption", "snappy", "socks"] }, "sha512-vG/A5cQrvGGvZm2mTnCSz1LUcbOPl83hfB6bxULKQ8oFZauyox/2xbZOoGNl+64m8VBrETkdGCDBdOsCr3F3jg=="], + + "mongodb-connection-string-url": ["mongodb-connection-string-url@7.0.1", "", { "dependencies": { "@types/whatwg-url": "^13.0.0", "whatwg-url": "^14.1.0" } }, "sha512-h0AZ9A7IDVwwHyMxmdMXKy+9oNlF0zFoahHiX3vQ8e3KFcSP3VmsmfvtRSuLPxmyv2vjIDxqty8smTgie/SNRQ=="], + + "mongoose": ["mongoose@9.1.6", "", { "dependencies": { "kareem": "3.0.0", "mongodb": "~7.0", "mpath": "0.9.0", "mquery": "6.0.0", "ms": "2.1.3", "sift": "17.1.3" } }, "sha512-ZrtgRsJKtW3od36TVXtAnrNHOO3rqhsqfVut6IzyWyJeLLeLTqW66qej/0qB37GZd5jL06nHfAceTikkfnSqbA=="], + + "mpath": ["mpath@0.9.0", "", {}, "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew=="], + + "mquery": ["mquery@6.0.0", "", {}, "sha512-b2KQNsmgtkscfeDgkYMcWGn9vZI9YoXh802VDEwE6qc50zxBFQ0Oo8ROkawbPAsXCY1/Z1yp0MagqsZStPWJjw=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], + + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + + "prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "quansync": ["quansync@1.0.0", "", {}, "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA=="], + + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + + "rolldown": ["rolldown@1.0.0-rc.3", "", { "dependencies": { "@oxc-project/types": "=0.112.0", "@rolldown/pluginutils": "1.0.0-rc.3" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.3", "@rolldown/binding-darwin-arm64": "1.0.0-rc.3", "@rolldown/binding-darwin-x64": "1.0.0-rc.3", "@rolldown/binding-freebsd-x64": "1.0.0-rc.3", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.3", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.3", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.3", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.3", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.3", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.3", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.3", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.3", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.3" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-Po/YZECDOqVXjIXrtC5h++a5NLvKAQNrd9ggrIG3sbDfGO5BqTUsrI6l8zdniKRp3r5Tp/2JTrXqx4GIguFCMw=="], + + "rolldown-plugin-dts": ["rolldown-plugin-dts@0.22.1", "", { "dependencies": { "@babel/generator": "8.0.0-rc.1", "@babel/helper-validator-identifier": "8.0.0-rc.1", "@babel/parser": "8.0.0-rc.1", "@babel/types": "8.0.0-rc.1", "ast-kit": "^3.0.0-beta.1", "birpc": "^4.0.0", "dts-resolver": "^2.1.3", "get-tsconfig": "^4.13.1", "obug": "^2.1.1" }, "peerDependencies": { "@ts-macro/tsc": "^0.3.6", "@typescript/native-preview": ">=7.0.0-dev.20250601.1", "rolldown": "^1.0.0-rc.3", "typescript": "^5.0.0", "vue-tsc": "~3.2.0" }, "optionalPeers": ["@ts-macro/tsc", "@typescript/native-preview", "typescript", "vue-tsc"] }, "sha512-5E0AiM5RSQhU6cjtkDFWH6laW4IrMu0j1Mo8x04Xo1ALHmaRMs9/7zej7P3RrryVHW/DdZAp85MA7Be55p0iUw=="], + + "rollup": ["rollup@4.57.1", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.57.1", "@rollup/rollup-android-arm64": "4.57.1", "@rollup/rollup-darwin-arm64": "4.57.1", "@rollup/rollup-darwin-x64": "4.57.1", "@rollup/rollup-freebsd-arm64": "4.57.1", "@rollup/rollup-freebsd-x64": "4.57.1", "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", "@rollup/rollup-linux-arm-musleabihf": "4.57.1", "@rollup/rollup-linux-arm64-gnu": "4.57.1", "@rollup/rollup-linux-arm64-musl": "4.57.1", "@rollup/rollup-linux-loong64-gnu": "4.57.1", "@rollup/rollup-linux-loong64-musl": "4.57.1", "@rollup/rollup-linux-ppc64-gnu": "4.57.1", "@rollup/rollup-linux-ppc64-musl": "4.57.1", "@rollup/rollup-linux-riscv64-gnu": "4.57.1", "@rollup/rollup-linux-riscv64-musl": "4.57.1", "@rollup/rollup-linux-s390x-gnu": "4.57.1", "@rollup/rollup-linux-x64-gnu": "4.57.1", "@rollup/rollup-linux-x64-musl": "4.57.1", "@rollup/rollup-openbsd-x64": "4.57.1", "@rollup/rollup-openharmony-arm64": "4.57.1", "@rollup/rollup-win32-arm64-msvc": "4.57.1", "@rollup/rollup-win32-ia32-msvc": "4.57.1", "@rollup/rollup-win32-x64-gnu": "4.57.1", "@rollup/rollup-win32-x64-msvc": "4.57.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A=="], + + "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "sift": ["sift@17.1.3", "", {}, "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ=="], + + "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "sparse-bitfield": ["sparse-bitfield@3.0.3", "", { "dependencies": { "memory-pager": "^1.0.2" } }, "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ=="], + + "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], + + "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], + + "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], + + "tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], + + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + + "tinyrainbow": ["tinyrainbow@3.0.3", "", {}, "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q=="], + + "tr46": ["tr46@5.1.1", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw=="], + + "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], + + "tsdown": ["tsdown@0.20.3", "", { "dependencies": { "ansis": "^4.2.0", "cac": "^6.7.14", "defu": "^6.1.4", "empathic": "^2.0.0", "hookable": "^6.0.1", "import-without-cache": "^0.2.5", "obug": "^2.1.1", "picomatch": "^4.0.3", "rolldown": "1.0.0-rc.3", "rolldown-plugin-dts": "^0.22.1", "semver": "^7.7.3", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tree-kill": "^1.2.2", "unconfig-core": "^7.4.2", "unrun": "^0.2.27" }, "peerDependencies": { "@arethetypeswrong/core": "^0.18.1", "@vitejs/devtools": "*", "publint": "^0.3.0", "typescript": "^5.0.0", "unplugin-lightningcss": "^0.4.0", "unplugin-unused": "^0.5.0" }, "optionalPeers": ["@arethetypeswrong/core", "@vitejs/devtools", "publint", "typescript", "unplugin-lightningcss", "unplugin-unused"], "bin": { "tsdown": "dist/run.mjs" } }, "sha512-qWOUXSbe4jN8JZEgrkc/uhJpC8VN2QpNu3eZkBWwNuTEjc/Ik1kcc54ycfcQ5QPRHeu9OQXaLfCI3o7pEJgB2w=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "unconfig-core": ["unconfig-core@7.4.2", "", { "dependencies": { "@quansync/fs": "^1.0.0", "quansync": "^1.0.0" } }, "sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg=="], + + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + + "unrun": ["unrun@0.2.27", "", { "dependencies": { "rolldown": "1.0.0-rc.3" }, "peerDependencies": { "synckit": "^0.11.11" }, "optionalPeers": ["synckit"], "bin": { "unrun": "dist/cli.mjs" } }, "sha512-Mmur1UJpIbfxasLOhPRvox/QS4xBiDii71hMP7smfRthGcwFL2OAmYRgduLANOAU4LUkvVamuP+02U+c90jlrw=="], + + "vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], + + "vitest": ["vitest@4.0.18", "", { "dependencies": { "@vitest/expect": "4.0.18", "@vitest/mocker": "4.0.18", "@vitest/pretty-format": "4.0.18", "@vitest/runner": "4.0.18", "@vitest/snapshot": "4.0.18", "@vitest/spy": "4.0.18", "@vitest/utils": "4.0.18", "es-module-lexer": "^1.7.0", "expect-type": "^1.2.2", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^3.10.0", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.0.3", "vite": "^6.0.0 || ^7.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.0.18", "@vitest/browser-preview": "4.0.18", "@vitest/browser-webdriverio": "4.0.18", "@vitest/ui": "4.0.18", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ=="], + + "webidl-conversions": ["webidl-conversions@7.0.0", "", {}, "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="], + + "whatwg-url": ["whatwg-url@14.2.0", "", { "dependencies": { "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" } }, "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw=="], + + "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], + } +} diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 9cf975d..0000000 --- a/lib/index.js +++ /dev/null @@ -1,288 +0,0 @@ -"use strict"; - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } -const mongoose = require('mongoose'); -if (!/^5/.test(mongoose.version)) { - mongoose.Promise = Promise; -} -mongoose.connect = jest.fn().mockImplementation(() => Promise.resolve()); -mongoose.createConnection = jest.fn().mockReturnValue({ - catch() { - /* no op */ - }, - model: mongoose.model.bind(mongoose), - on: jest.fn(), - once: jest.fn(), - then(resolve) { - return Promise.resolve(resolve(this)); - } -}); -const ops = ['find', 'findOne', 'count', 'countDocuments', 'estimatedDocumentCount', 'distinct', 'findOneAndUpdate', 'findOneAndDelete', 'findOneAndRemove', 'findOneAndReplace', 'remove', 'update', 'updateOne', 'updateMany', 'deleteOne', 'deleteMany', 'save', 'aggregate', '$save']; -const mockedReturn = /*#__PURE__*/function () { - var _ref = _asyncToGenerator(function* (cb) { - const op = this.op, - modelName = this.model.modelName, - _this$_mongooseOption = this._mongooseOptions, - _mongooseOptions = _this$_mongooseOption === void 0 ? {} : _this$_mongooseOption; - const Model = mongoose.model(modelName); - let mock = mockingoose.__mocks[modelName] && mockingoose.__mocks[modelName][op]; - let err = null; - if (mock instanceof Error) { - err = mock; - } - if (typeof mock === 'function') { - mock = yield mock(this); - } - if (!mock && op === 'save') { - mock = this; - } - if (!mock && op === '$save') { - mock = this; - } - if (mock && !(mock instanceof Model) && !['remove', 'deleteOne', 'deleteMany', 'update', 'updateOne', 'updateMany', 'count', 'countDocuments', 'estimatedDocumentCount', 'distinct'].includes(op)) { - mock = Array.isArray(mock) ? mock.map(item => new Model(item)) : new Model(mock); - if (op === 'insertMany') { - if (!Array.isArray(mock)) mock = [mock]; - var _iterator = _createForOfIteratorHelper(mock), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - const doc = _step.value; - const e = doc.validateSync(); - if (e) throw e; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - if (_mongooseOptions.lean || _mongooseOptions.rawResult) { - mock = Array.isArray(mock) ? mock.map(item => item.toObject()) : mock.toObject(); - } - } - if (cb) { - return cb(err, mock); - } - if (err) { - throw err; - } - return mock; - }); - return function mockedReturn(_x) { - return _ref.apply(this, arguments); - }; -}(); -ops.forEach(op => { - mongoose.Query.prototype[op] = jest.fn().mockImplementation(function (criteria, doc, options, callback) { - if (['find', 'findOne', 'count', 'countDocuments', 'remove', 'deleteOne', 'deleteMany', 'update', 'updateOne', 'updateMany', 'findOneAndUpdate', 'findOneAndRemove', 'findOneAndDelete', 'findOneAndReplace'].includes(op) && typeof criteria !== 'function') { - // find and findOne can take conditions as the first paramter - // ensure they make it into the Query conditions - this.merge(criteria); - } - if (['distinct'].includes(op) && typeof doc !== 'function') { - // distinct has the conditions as the second parameter - this.merge(doc); - } - if (/update/i.test(op) && typeof doc !== 'function' && doc) { - this.setUpdate(doc); - } - switch (arguments.length) { - case 4: - case 3: - if (typeof options === 'function') { - callback = options; - options = {}; - } - break; - case 2: - if (typeof doc === 'function') { - callback = doc; - doc = criteria; - criteria = undefined; - } - options = undefined; - break; - case 1: - if (typeof criteria === 'function') { - callback = criteria; - criteria = options = doc = undefined; - } else { - doc = criteria; - criteria = options = undefined; - } - } - this.op = op; - if (!callback) { - return this; - } - return this.exec.call(this, callback); - }); -}); -mongoose.Query.prototype.exec = jest.fn().mockImplementation(function (cb) { - return mockedReturn.call(this, cb); -}); -mongoose.Query.prototype.orFail = jest.fn().mockImplementation( /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator(function* (err) { - return this.then(doc => { - const hasAnyDocs = doc && Array.isArray(doc) && doc.length > 0; - if (!doc || !hasAnyDocs) { - if (!err) throw new Error(); - const isErrorFn = typeof err === 'function'; - throw isErrorFn ? err() : new Error(err); - } - return this; - }).catch(err => { - throw err; - }); - }); - return function (_x2) { - return _ref2.apply(this, arguments); - }; -}()); -mongoose.Aggregate.prototype.exec = jest.fn().mockImplementation( /*#__PURE__*/function () { - var _ref3 = _asyncToGenerator(function* (cb) { - const modelName = this._model.modelName; - let mock = mockingoose.__mocks[modelName] && mockingoose.__mocks[modelName].aggregate; - let err = null; - if (mock instanceof Error) { - err = mock; - } - if (typeof mock === 'function') { - mock = yield mock(this); - } - if (cb) { - return cb(err, mock); - } - if (err) { - throw err; - } - return mock; - }); - return function (_x3) { - return _ref3.apply(this, arguments); - }; -}()); -mongoose.Model.insertMany = jest.fn().mockImplementation(function (arr, options, cb) { - const op = 'insertMany'; - const modelName = this.modelName; - if (typeof options === 'function') { - cb = options; - options = null; - } else { - this._mongooseOptions = options; - } - Object.assign(this, { - op, - model: { - modelName - } - }); - return mockedReturn.call(this, cb); -}); -const instance = ['remove', 'save', '$save']; -instance.forEach(methodName => { - mongoose.Model.prototype[methodName] = jest.fn().mockImplementation(function (options, cb) { - const op = methodName; - const modelName = this.constructor.modelName; - if (typeof options === 'function') { - cb = options; - } - Object.assign(this, { - op, - model: { - modelName - } - }); - const hooks = this.constructor.hooks; - return new Promise((resolve, reject) => { - hooks.execPre(op, this, [cb], err => { - if (err) { - reject(err); - return; - } - const ret = mockedReturn.call(this, cb); - if (cb) { - hooks.execPost(op, this, [ret], err2 => { - if (err2) { - reject(err2); - return; - } - resolve(ret); - }); - } else { - ret.then(ret2 => { - hooks.execPost(op, this, [ret2], err3 => { - if (err3) { - reject(err3); - return; - } - resolve(ret2); - }); - }).catch(reject); - } - }); - }); - }); -}); -jest.doMock('mongoose', () => mongoose); - -// extend a plain function, we will override it with the Proxy later -const proxyTarget = Object.assign(() => void 0, { - __mocks: {}, - resetAll() { - this.__mocks = {}; - }, - toJSON() { - return this.__mocks; - } -}); -const getMockController = prop => { - return { - toReturn(o, op = 'find') { - proxyTarget.__mocks.hasOwnProperty(prop) ? proxyTarget.__mocks[prop][op] = o : proxyTarget.__mocks[prop] = { - [op]: o - }; - return this; - }, - reset(op) { - if (op) { - delete proxyTarget.__mocks[prop][op]; - } else { - delete proxyTarget.__mocks[prop]; - } - return this; - }, - toJSON() { - return proxyTarget.__mocks[prop] || {}; - } - }; -}; -const proxyTraps = { - get(target, prop) { - if (target.hasOwnProperty(prop)) { - return Reflect.get(target, prop); - } - return getMockController(prop); - }, - apply: (target, thisArg, [prop]) => mockModel(prop) -}; -const mockingoose = new Proxy(proxyTarget, proxyTraps); - -/** - * Returns a helper with which you can set up mocks for a particular Model - */ -const mockModel = model => { - const modelName = typeof model === 'function' ? model.modelName : model; - if (typeof modelName === 'string') { - return getMockController(modelName); - } else { - throw new Error('model must be a string or mongoose.Model'); - } -}; -module.exports = mockingoose; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map deleted file mode 100644 index 2dd74e1..0000000 --- a/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","names":["mongoose","require","test","version","Promise","connect","jest","fn","mockImplementation","resolve","createConnection","mockReturnValue","catch","model","bind","on","once","then","ops","mockedReturn","cb","op","modelName","_mongooseOptions","Model","mock","mockingoose","__mocks","err","Error","includes","Array","isArray","map","item","doc","e","validateSync","lean","rawResult","toObject","forEach","Query","prototype","criteria","options","callback","merge","setUpdate","arguments","length","undefined","exec","call","orFail","hasAnyDocs","isErrorFn","Aggregate","_model","aggregate","insertMany","arr","Object","assign","instance","methodName","constructor","hooks","reject","execPre","ret","execPost","err2","ret2","err3","doMock","proxyTarget","resetAll","toJSON","getMockController","prop","toReturn","o","hasOwnProperty","reset","proxyTraps","get","target","Reflect","apply","thisArg","mockModel","Proxy","module","exports"],"sources":["../src/index.js"],"sourcesContent":["const mongoose = require('mongoose');\n\nif (!/^5/.test(mongoose.version)) {\n mongoose.Promise = Promise;\n}\n\nmongoose.connect = jest.fn().mockImplementation(() => Promise.resolve());\n\nmongoose.createConnection = jest.fn().mockReturnValue({\n catch() {\n /* no op */\n },\n model: mongoose.model.bind(mongoose),\n on: jest.fn(),\n once: jest.fn(),\n then(resolve) {\n return Promise.resolve(resolve(this));\n },\n});\n\nconst ops = [\n 'find',\n 'findOne',\n 'count',\n 'countDocuments',\n 'estimatedDocumentCount',\n 'distinct',\n 'findOneAndUpdate',\n 'findOneAndDelete',\n 'findOneAndRemove',\n 'findOneAndReplace',\n 'remove',\n 'update',\n 'updateOne',\n 'updateMany',\n 'deleteOne',\n 'deleteMany',\n 'save',\n 'aggregate',\n '$save',\n];\n\nconst mockedReturn = async function (cb) {\n const {\n op,\n model: { modelName },\n _mongooseOptions = {},\n } = this;\n const Model = mongoose.model(modelName);\n\n let mock =\n mockingoose.__mocks[modelName] && mockingoose.__mocks[modelName][op];\n\n let err = null;\n\n if (mock instanceof Error) {\n err = mock;\n }\n\n if (typeof mock === 'function') {\n mock = await mock(this);\n }\n\n if (!mock && op === 'save') {\n mock = this;\n }\n\n if (!mock && op === '$save') {\n mock = this;\n }\n\n if (\n mock &&\n !(mock instanceof Model) &&\n ![\n 'remove',\n 'deleteOne',\n 'deleteMany',\n 'update',\n 'updateOne',\n 'updateMany',\n 'count',\n 'countDocuments',\n 'estimatedDocumentCount',\n 'distinct',\n ].includes(op)\n ) {\n mock = Array.isArray(mock)\n ? mock.map((item) => new Model(item))\n : new Model(mock);\n\n if (op === 'insertMany') {\n if (!Array.isArray(mock)) mock = [mock];\n\n for (const doc of mock) {\n const e = doc.validateSync();\n if (e) throw e;\n }\n }\n\n if (_mongooseOptions.lean || _mongooseOptions.rawResult) {\n mock = Array.isArray(mock)\n ? mock.map((item) => item.toObject())\n : mock.toObject();\n }\n }\n\n if (cb) {\n return cb(err, mock);\n }\n\n if (err) {\n throw err;\n }\n\n return mock;\n};\n\nops.forEach((op) => {\n mongoose.Query.prototype[op] = jest\n .fn()\n .mockImplementation(function (criteria, doc, options, callback) {\n if (\n [\n 'find',\n 'findOne',\n 'count',\n 'countDocuments',\n 'remove',\n 'deleteOne',\n 'deleteMany',\n 'update',\n 'updateOne',\n 'updateMany',\n 'findOneAndUpdate',\n 'findOneAndRemove',\n 'findOneAndDelete',\n 'findOneAndReplace',\n ].includes(op) &&\n typeof criteria !== 'function'\n ) {\n // find and findOne can take conditions as the first paramter\n // ensure they make it into the Query conditions\n this.merge(criteria);\n }\n\n if (['distinct'].includes(op) && typeof doc !== 'function') {\n // distinct has the conditions as the second parameter\n this.merge(doc);\n }\n\n if (/update/i.test(op) && typeof doc !== 'function' && doc) {\n this.setUpdate(doc);\n }\n\n switch (arguments.length) {\n case 4:\n case 3:\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n break;\n case 2:\n if (typeof doc === 'function') {\n callback = doc;\n doc = criteria;\n criteria = undefined;\n }\n options = undefined;\n break;\n case 1:\n if (typeof criteria === 'function') {\n callback = criteria;\n criteria = options = doc = undefined;\n } else {\n doc = criteria;\n criteria = options = undefined;\n }\n }\n\n this.op = op;\n\n if (!callback) {\n return this;\n }\n\n return this.exec.call(this, callback);\n });\n});\n\nmongoose.Query.prototype.exec = jest.fn().mockImplementation(function (cb) {\n return mockedReturn.call(this, cb);\n});\n\nmongoose.Query.prototype.orFail = jest\n .fn()\n .mockImplementation(async function (err) {\n return this.then((doc) => {\n const hasAnyDocs = doc && Array.isArray(doc) && doc.length > 0;\n\n if (!doc || !hasAnyDocs) {\n if (!err) throw new Error();\n\n const isErrorFn = typeof err === 'function';\n throw isErrorFn ? err() : new Error(err);\n }\n\n return this;\n }).catch((err) => {\n throw err;\n });\n });\n\nmongoose.Aggregate.prototype.exec = jest\n .fn()\n .mockImplementation(async function (cb) {\n const {\n _model: { modelName },\n } = this;\n\n let mock =\n mockingoose.__mocks[modelName] &&\n mockingoose.__mocks[modelName].aggregate;\n\n let err = null;\n\n if (mock instanceof Error) {\n err = mock;\n }\n\n if (typeof mock === 'function') {\n mock = await mock(this);\n }\n\n if (cb) {\n return cb(err, mock);\n }\n\n if (err) {\n throw err;\n }\n\n return mock;\n });\n\nmongoose.Model.insertMany = jest\n .fn()\n .mockImplementation(function (arr, options, cb) {\n const op = 'insertMany';\n const { modelName } = this;\n\n if (typeof options === 'function') {\n cb = options;\n options = null;\n } else {\n this._mongooseOptions = options;\n }\n\n Object.assign(this, { op, model: { modelName } });\n return mockedReturn.call(this, cb);\n });\n\nconst instance = ['remove', 'save', '$save'];\n\ninstance.forEach((methodName) => {\n mongoose.Model.prototype[methodName] = jest\n .fn()\n .mockImplementation(function (options, cb) {\n const op = methodName;\n const { modelName } = this.constructor;\n\n if (typeof options === 'function') {\n cb = options;\n }\n\n Object.assign(this, { op, model: { modelName } });\n\n const hooks = this.constructor.hooks;\n\n return new Promise((resolve, reject) => {\n hooks.execPre(op, this, [cb], (err) => {\n if (err) {\n reject(err);\n return;\n }\n\n const ret = mockedReturn.call(this, cb);\n\n if (cb) {\n hooks.execPost(op, this, [ret], (err2) => {\n if (err2) {\n reject(err2);\n return;\n }\n\n resolve(ret);\n });\n } else {\n ret\n .then((ret2) => {\n hooks.execPost(op, this, [ret2], (err3) => {\n if (err3) {\n reject(err3);\n return;\n }\n\n resolve(ret2);\n });\n })\n .catch(reject);\n }\n });\n });\n });\n});\n\njest.doMock('mongoose', () => mongoose);\n\n// extend a plain function, we will override it with the Proxy later\nconst proxyTarget = Object.assign(() => void 0, {\n __mocks: {},\n resetAll() {\n this.__mocks = {};\n },\n toJSON() {\n return this.__mocks;\n },\n});\n\nconst getMockController = (prop) => {\n return {\n toReturn(o, op = 'find') {\n proxyTarget.__mocks.hasOwnProperty(prop)\n ? (proxyTarget.__mocks[prop][op] = o)\n : (proxyTarget.__mocks[prop] = { [op]: o });\n\n return this;\n },\n\n reset(op) {\n if (op) {\n delete proxyTarget.__mocks[prop][op];\n } else {\n delete proxyTarget.__mocks[prop];\n }\n\n return this;\n },\n\n toJSON() {\n return proxyTarget.__mocks[prop] || {};\n },\n };\n};\n\nconst proxyTraps = {\n get(target, prop) {\n if (target.hasOwnProperty(prop)) {\n return Reflect.get(target, prop);\n }\n\n return getMockController(prop);\n },\n apply: (target, thisArg, [prop]) => mockModel(prop),\n};\n\nconst mockingoose = new Proxy(proxyTarget, proxyTraps);\n\n/**\n * Returns a helper with which you can set up mocks for a particular Model\n */\nconst mockModel = (model) => {\n const modelName = typeof model === 'function' ? model.modelName : model;\n if (typeof modelName === 'string') {\n return getMockController(modelName);\n } else {\n throw new Error('model must be a string or mongoose.Model');\n }\n};\n\nmodule.exports = mockingoose;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAGC,OAAO,CAAC,UAAU,CAAC;AAEpC,IAAI,CAAC,IAAI,CAACC,IAAI,CAACF,QAAQ,CAACG,OAAO,CAAC,EAAE;EAChCH,QAAQ,CAACI,OAAO,GAAGA,OAAO;AAC5B;AAEAJ,QAAQ,CAACK,OAAO,GAAGC,IAAI,CAACC,EAAE,EAAE,CAACC,kBAAkB,CAAC,MAAMJ,OAAO,CAACK,OAAO,EAAE,CAAC;AAExET,QAAQ,CAACU,gBAAgB,GAAGJ,IAAI,CAACC,EAAE,EAAE,CAACI,eAAe,CAAC;EACpDC,KAAK,GAAG;IACN;EAAA,CACD;EACDC,KAAK,EAAEb,QAAQ,CAACa,KAAK,CAACC,IAAI,CAACd,QAAQ,CAAC;EACpCe,EAAE,EAAET,IAAI,CAACC,EAAE,EAAE;EACbS,IAAI,EAAEV,IAAI,CAACC,EAAE,EAAE;EACfU,IAAI,CAACR,OAAO,EAAE;IACZ,OAAOL,OAAO,CAACK,OAAO,CAACA,OAAO,CAAC,IAAI,CAAC,CAAC;EACvC;AACF,CAAC,CAAC;AAEF,MAAMS,GAAG,GAAG,CACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,wBAAwB,EACxB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,MAAM,EACN,WAAW,EACX,OAAO,CACR;AAED,MAAMC,YAAY;EAAA,6BAAG,WAAgBC,EAAE,EAAE;IACvC,MACEC,EAAE,GAGA,IAAI,CAHNA,EAAE;MACOC,SAAS,GAEhB,IAAI,CAFNT,KAAK,CAAIS,SAAS;MAAA,wBAEhB,IAAI,CADNC,gBAAgB;MAAhBA,gBAAgB,sCAAG,CAAC,CAAC;IAEvB,MAAMC,KAAK,GAAGxB,QAAQ,CAACa,KAAK,CAACS,SAAS,CAAC;IAEvC,IAAIG,IAAI,GACNC,WAAW,CAACC,OAAO,CAACL,SAAS,CAAC,IAAII,WAAW,CAACC,OAAO,CAACL,SAAS,CAAC,CAACD,EAAE,CAAC;IAEtE,IAAIO,GAAG,GAAG,IAAI;IAEd,IAAIH,IAAI,YAAYI,KAAK,EAAE;MACzBD,GAAG,GAAGH,IAAI;IACZ;IAEA,IAAI,OAAOA,IAAI,KAAK,UAAU,EAAE;MAC9BA,IAAI,SAASA,IAAI,CAAC,IAAI,CAAC;IACzB;IAEA,IAAI,CAACA,IAAI,IAAIJ,EAAE,KAAK,MAAM,EAAE;MAC1BI,IAAI,GAAG,IAAI;IACb;IAEA,IAAI,CAACA,IAAI,IAAIJ,EAAE,KAAK,OAAO,EAAE;MAC3BI,IAAI,GAAG,IAAI;IACb;IAEA,IACEA,IAAI,IACJ,EAAEA,IAAI,YAAYD,KAAK,CAAC,IACxB,CAAC,CACC,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,wBAAwB,EACxB,UAAU,CACX,CAACM,QAAQ,CAACT,EAAE,CAAC,EACd;MACAI,IAAI,GAAGM,KAAK,CAACC,OAAO,CAACP,IAAI,CAAC,GACtBA,IAAI,CAACQ,GAAG,CAAEC,IAAI,IAAK,IAAIV,KAAK,CAACU,IAAI,CAAC,CAAC,GACnC,IAAIV,KAAK,CAACC,IAAI,CAAC;MAEnB,IAAIJ,EAAE,KAAK,YAAY,EAAE;QACvB,IAAI,CAACU,KAAK,CAACC,OAAO,CAACP,IAAI,CAAC,EAAEA,IAAI,GAAG,CAACA,IAAI,CAAC;QAAC,2CAEtBA,IAAI;UAAA;QAAA;UAAtB,oDAAwB;YAAA,MAAbU,GAAG;YACZ,MAAMC,CAAC,GAAGD,GAAG,CAACE,YAAY,EAAE;YAC5B,IAAID,CAAC,EAAE,MAAMA,CAAC;UAChB;QAAC;UAAA;QAAA;UAAA;QAAA;MACH;MAEA,IAAIb,gBAAgB,CAACe,IAAI,IAAIf,gBAAgB,CAACgB,SAAS,EAAE;QACvDd,IAAI,GAAGM,KAAK,CAACC,OAAO,CAACP,IAAI,CAAC,GACtBA,IAAI,CAACQ,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACM,QAAQ,EAAE,CAAC,GACnCf,IAAI,CAACe,QAAQ,EAAE;MACrB;IACF;IAEA,IAAIpB,EAAE,EAAE;MACN,OAAOA,EAAE,CAACQ,GAAG,EAAEH,IAAI,CAAC;IACtB;IAEA,IAAIG,GAAG,EAAE;MACP,MAAMA,GAAG;IACX;IAEA,OAAOH,IAAI;EACb,CAAC;EAAA,gBA1EKN,YAAY;IAAA;EAAA;AAAA,GA0EjB;AAEDD,GAAG,CAACuB,OAAO,CAAEpB,EAAE,IAAK;EAClBrB,QAAQ,CAAC0C,KAAK,CAACC,SAAS,CAACtB,EAAE,CAAC,GAAGf,IAAI,CAChCC,EAAE,EAAE,CACJC,kBAAkB,CAAC,UAAUoC,QAAQ,EAAET,GAAG,EAAEU,OAAO,EAAEC,QAAQ,EAAE;IAC9D,IACE,CACE,MAAM,EACN,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,CACpB,CAAChB,QAAQ,CAACT,EAAE,CAAC,IACd,OAAOuB,QAAQ,KAAK,UAAU,EAC9B;MACA;MACA;MACA,IAAI,CAACG,KAAK,CAACH,QAAQ,CAAC;IACtB;IAEA,IAAI,CAAC,UAAU,CAAC,CAACd,QAAQ,CAACT,EAAE,CAAC,IAAI,OAAOc,GAAG,KAAK,UAAU,EAAE;MAC1D;MACA,IAAI,CAACY,KAAK,CAACZ,GAAG,CAAC;IACjB;IAEA,IAAI,SAAS,CAACjC,IAAI,CAACmB,EAAE,CAAC,IAAI,OAAOc,GAAG,KAAK,UAAU,IAAIA,GAAG,EAAE;MAC1D,IAAI,CAACa,SAAS,CAACb,GAAG,CAAC;IACrB;IAEA,QAAQc,SAAS,CAACC,MAAM;MACtB,KAAK,CAAC;MACN,KAAK,CAAC;QACJ,IAAI,OAAOL,OAAO,KAAK,UAAU,EAAE;UACjCC,QAAQ,GAAGD,OAAO;UAClBA,OAAO,GAAG,CAAC,CAAC;QACd;QACA;MACF,KAAK,CAAC;QACJ,IAAI,OAAOV,GAAG,KAAK,UAAU,EAAE;UAC7BW,QAAQ,GAAGX,GAAG;UACdA,GAAG,GAAGS,QAAQ;UACdA,QAAQ,GAAGO,SAAS;QACtB;QACAN,OAAO,GAAGM,SAAS;QACnB;MACF,KAAK,CAAC;QACJ,IAAI,OAAOP,QAAQ,KAAK,UAAU,EAAE;UAClCE,QAAQ,GAAGF,QAAQ;UACnBA,QAAQ,GAAGC,OAAO,GAAGV,GAAG,GAAGgB,SAAS;QACtC,CAAC,MAAM;UACLhB,GAAG,GAAGS,QAAQ;UACdA,QAAQ,GAAGC,OAAO,GAAGM,SAAS;QAChC;IAAC;IAGL,IAAI,CAAC9B,EAAE,GAAGA,EAAE;IAEZ,IAAI,CAACyB,QAAQ,EAAE;MACb,OAAO,IAAI;IACb;IAEA,OAAO,IAAI,CAACM,IAAI,CAACC,IAAI,CAAC,IAAI,EAAEP,QAAQ,CAAC;EACvC,CAAC,CAAC;AACN,CAAC,CAAC;AAEF9C,QAAQ,CAAC0C,KAAK,CAACC,SAAS,CAACS,IAAI,GAAG9C,IAAI,CAACC,EAAE,EAAE,CAACC,kBAAkB,CAAC,UAAUY,EAAE,EAAE;EACzE,OAAOD,YAAY,CAACkC,IAAI,CAAC,IAAI,EAAEjC,EAAE,CAAC;AACpC,CAAC,CAAC;AAEFpB,QAAQ,CAAC0C,KAAK,CAACC,SAAS,CAACW,MAAM,GAAGhD,IAAI,CACnCC,EAAE,EAAE,CACJC,kBAAkB;EAAA,8BAAC,WAAgBoB,GAAG,EAAE;IACvC,OAAO,IAAI,CAACX,IAAI,CAAEkB,GAAG,IAAK;MACxB,MAAMoB,UAAU,GAAGpB,GAAG,IAAIJ,KAAK,CAACC,OAAO,CAACG,GAAG,CAAC,IAAIA,GAAG,CAACe,MAAM,GAAG,CAAC;MAE9D,IAAI,CAACf,GAAG,IAAI,CAACoB,UAAU,EAAE;QACvB,IAAI,CAAC3B,GAAG,EAAE,MAAM,IAAIC,KAAK,EAAE;QAE3B,MAAM2B,SAAS,GAAG,OAAO5B,GAAG,KAAK,UAAU;QAC3C,MAAM4B,SAAS,GAAG5B,GAAG,EAAE,GAAG,IAAIC,KAAK,CAACD,GAAG,CAAC;MAC1C;MAEA,OAAO,IAAI;IACb,CAAC,CAAC,CAAChB,KAAK,CAAEgB,GAAG,IAAK;MAChB,MAAMA,GAAG;IACX,CAAC,CAAC;EACJ,CAAC;EAAA;IAAA;EAAA;AAAA,IAAC;AAEJ5B,QAAQ,CAACyD,SAAS,CAACd,SAAS,CAACS,IAAI,GAAG9C,IAAI,CACrCC,EAAE,EAAE,CACJC,kBAAkB;EAAA,8BAAC,WAAgBY,EAAE,EAAE;IACtC,MACYE,SAAS,GACjB,IAAI,CADNoC,MAAM,CAAIpC,SAAS;IAGrB,IAAIG,IAAI,GACNC,WAAW,CAACC,OAAO,CAACL,SAAS,CAAC,IAC9BI,WAAW,CAACC,OAAO,CAACL,SAAS,CAAC,CAACqC,SAAS;IAE1C,IAAI/B,GAAG,GAAG,IAAI;IAEd,IAAIH,IAAI,YAAYI,KAAK,EAAE;MACzBD,GAAG,GAAGH,IAAI;IACZ;IAEA,IAAI,OAAOA,IAAI,KAAK,UAAU,EAAE;MAC9BA,IAAI,SAASA,IAAI,CAAC,IAAI,CAAC;IACzB;IAEA,IAAIL,EAAE,EAAE;MACN,OAAOA,EAAE,CAACQ,GAAG,EAAEH,IAAI,CAAC;IACtB;IAEA,IAAIG,GAAG,EAAE;MACP,MAAMA,GAAG;IACX;IAEA,OAAOH,IAAI;EACb,CAAC;EAAA;IAAA;EAAA;AAAA,IAAC;AAEJzB,QAAQ,CAACwB,KAAK,CAACoC,UAAU,GAAGtD,IAAI,CAC7BC,EAAE,EAAE,CACJC,kBAAkB,CAAC,UAAUqD,GAAG,EAAEhB,OAAO,EAAEzB,EAAE,EAAE;EAC9C,MAAMC,EAAE,GAAG,YAAY;EACvB,MAAQC,SAAS,GAAK,IAAI,CAAlBA,SAAS;EAEjB,IAAI,OAAOuB,OAAO,KAAK,UAAU,EAAE;IACjCzB,EAAE,GAAGyB,OAAO;IACZA,OAAO,GAAG,IAAI;EAChB,CAAC,MAAM;IACL,IAAI,CAACtB,gBAAgB,GAAGsB,OAAO;EACjC;EAEAiB,MAAM,CAACC,MAAM,CAAC,IAAI,EAAE;IAAE1C,EAAE;IAAER,KAAK,EAAE;MAAES;IAAU;EAAE,CAAC,CAAC;EACjD,OAAOH,YAAY,CAACkC,IAAI,CAAC,IAAI,EAAEjC,EAAE,CAAC;AACpC,CAAC,CAAC;AAEJ,MAAM4C,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AAE5CA,QAAQ,CAACvB,OAAO,CAAEwB,UAAU,IAAK;EAC/BjE,QAAQ,CAACwB,KAAK,CAACmB,SAAS,CAACsB,UAAU,CAAC,GAAG3D,IAAI,CACxCC,EAAE,EAAE,CACJC,kBAAkB,CAAC,UAAUqC,OAAO,EAAEzB,EAAE,EAAE;IACzC,MAAMC,EAAE,GAAG4C,UAAU;IACrB,MAAQ3C,SAAS,GAAK,IAAI,CAAC4C,WAAW,CAA9B5C,SAAS;IAEjB,IAAI,OAAOuB,OAAO,KAAK,UAAU,EAAE;MACjCzB,EAAE,GAAGyB,OAAO;IACd;IAEAiB,MAAM,CAACC,MAAM,CAAC,IAAI,EAAE;MAAE1C,EAAE;MAAER,KAAK,EAAE;QAAES;MAAU;IAAE,CAAC,CAAC;IAEjD,MAAM6C,KAAK,GAAG,IAAI,CAACD,WAAW,CAACC,KAAK;IAEpC,OAAO,IAAI/D,OAAO,CAAC,CAACK,OAAO,EAAE2D,MAAM,KAAK;MACtCD,KAAK,CAACE,OAAO,CAAChD,EAAE,EAAE,IAAI,EAAE,CAACD,EAAE,CAAC,EAAGQ,GAAG,IAAK;QACrC,IAAIA,GAAG,EAAE;UACPwC,MAAM,CAACxC,GAAG,CAAC;UACX;QACF;QAEA,MAAM0C,GAAG,GAAGnD,YAAY,CAACkC,IAAI,CAAC,IAAI,EAAEjC,EAAE,CAAC;QAEvC,IAAIA,EAAE,EAAE;UACN+C,KAAK,CAACI,QAAQ,CAAClD,EAAE,EAAE,IAAI,EAAE,CAACiD,GAAG,CAAC,EAAGE,IAAI,IAAK;YACxC,IAAIA,IAAI,EAAE;cACRJ,MAAM,CAACI,IAAI,CAAC;cACZ;YACF;YAEA/D,OAAO,CAAC6D,GAAG,CAAC;UACd,CAAC,CAAC;QACJ,CAAC,MAAM;UACLA,GAAG,CACArD,IAAI,CAAEwD,IAAI,IAAK;YACdN,KAAK,CAACI,QAAQ,CAAClD,EAAE,EAAE,IAAI,EAAE,CAACoD,IAAI,CAAC,EAAGC,IAAI,IAAK;cACzC,IAAIA,IAAI,EAAE;gBACRN,MAAM,CAACM,IAAI,CAAC;gBACZ;cACF;cAEAjE,OAAO,CAACgE,IAAI,CAAC;YACf,CAAC,CAAC;UACJ,CAAC,CAAC,CACD7D,KAAK,CAACwD,MAAM,CAAC;QAClB;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACN,CAAC,CAAC;AAEF9D,IAAI,CAACqE,MAAM,CAAC,UAAU,EAAE,MAAM3E,QAAQ,CAAC;;AAEvC;AACA,MAAM4E,WAAW,GAAGd,MAAM,CAACC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;EAC9CpC,OAAO,EAAE,CAAC,CAAC;EACXkD,QAAQ,GAAG;IACT,IAAI,CAAClD,OAAO,GAAG,CAAC,CAAC;EACnB,CAAC;EACDmD,MAAM,GAAG;IACP,OAAO,IAAI,CAACnD,OAAO;EACrB;AACF,CAAC,CAAC;AAEF,MAAMoD,iBAAiB,GAAIC,IAAI,IAAK;EAClC,OAAO;IACLC,QAAQ,CAACC,CAAC,EAAE7D,EAAE,GAAG,MAAM,EAAE;MACvBuD,WAAW,CAACjD,OAAO,CAACwD,cAAc,CAACH,IAAI,CAAC,GACnCJ,WAAW,CAACjD,OAAO,CAACqD,IAAI,CAAC,CAAC3D,EAAE,CAAC,GAAG6D,CAAC,GACjCN,WAAW,CAACjD,OAAO,CAACqD,IAAI,CAAC,GAAG;QAAE,CAAC3D,EAAE,GAAG6D;MAAE,CAAE;MAE7C,OAAO,IAAI;IACb,CAAC;IAEDE,KAAK,CAAC/D,EAAE,EAAE;MACR,IAAIA,EAAE,EAAE;QACN,OAAOuD,WAAW,CAACjD,OAAO,CAACqD,IAAI,CAAC,CAAC3D,EAAE,CAAC;MACtC,CAAC,MAAM;QACL,OAAOuD,WAAW,CAACjD,OAAO,CAACqD,IAAI,CAAC;MAClC;MAEA,OAAO,IAAI;IACb,CAAC;IAEDF,MAAM,GAAG;MACP,OAAOF,WAAW,CAACjD,OAAO,CAACqD,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC;EACF,CAAC;AACH,CAAC;AAED,MAAMK,UAAU,GAAG;EACjBC,GAAG,CAACC,MAAM,EAAEP,IAAI,EAAE;IAChB,IAAIO,MAAM,CAACJ,cAAc,CAACH,IAAI,CAAC,EAAE;MAC/B,OAAOQ,OAAO,CAACF,GAAG,CAACC,MAAM,EAAEP,IAAI,CAAC;IAClC;IAEA,OAAOD,iBAAiB,CAACC,IAAI,CAAC;EAChC,CAAC;EACDS,KAAK,EAAE,CAACF,MAAM,EAAEG,OAAO,EAAE,CAACV,IAAI,CAAC,KAAKW,SAAS,CAACX,IAAI;AACpD,CAAC;AAED,MAAMtD,WAAW,GAAG,IAAIkE,KAAK,CAAChB,WAAW,EAAES,UAAU,CAAC;;AAEtD;AACA;AACA;AACA,MAAMM,SAAS,GAAI9E,KAAK,IAAK;EAC3B,MAAMS,SAAS,GAAG,OAAOT,KAAK,KAAK,UAAU,GAAGA,KAAK,CAACS,SAAS,GAAGT,KAAK;EACvE,IAAI,OAAOS,SAAS,KAAK,QAAQ,EAAE;IACjC,OAAOyD,iBAAiB,CAACzD,SAAS,CAAC;EACrC,CAAC,MAAM;IACL,MAAM,IAAIO,KAAK,CAAC,0CAA0C,CAAC;EAC7D;AACF,CAAC;AAEDgE,MAAM,CAACC,OAAO,GAAGpE,WAAW"} \ No newline at end of file diff --git a/mockingoose.png b/mockingoose.png new file mode 100644 index 0000000..df51af6 Binary files /dev/null and b/mockingoose.png differ diff --git a/package.json b/package.json index 7f6947c..dce7d01 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,32 @@ { "name": "mockingoose", - "version": "2.16.2", + "version": "3.0.0", "description": "A Jest package for mocking mongoose models", - "main": "./lib", - "types": "./types.d.ts", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.cts", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + } + }, + "files": [ + "dist" + ], "scripts": { - "test": "jest", - "dev": "yarn build -w", - "build": "babel src -d lib -s", - "lint": "prettier -c src" + "build": "tsdown", + "test": "vitest run", + "test:watch": "vitest", + "format": "prettier --write .", + "lint": "prettier -c src", + "typecheck": "tsc --noEmit -p tsconfig.build.json" }, "repository": { "type": "git", @@ -17,7 +35,9 @@ "keywords": [ "jest", "mock", - "mongoose" + "mongoose", + "typescript", + "vitest" ], "author": "Alon Valadji", "license": "The Unlicense", @@ -26,25 +46,16 @@ }, "homepage": "https://github.com/alonronin/mockingoose#readme", "devDependencies": { - "@babel/cli": "^7.19.3", - "@babel/preset-env": "^7.20.2", - "jest": "^29.3.1", - "prettier": "^2.8.0" + "@types/node": "^25.2.2", + "prettier": "^2.8.0", + "tsdown": "^0.20.3", + "typescript": "^5.9.3", + "vitest": "^4.0.18" }, "peerDependencies": { - "mongoose": ">=4.9.10" - }, - "jest": { - "testEnvironment": "node", - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "testRegex": ".test.js$", - "transform": {} + "mongoose": "^9.1.6" }, "engines": { - "node": ">=6.4.0" + "node": ">=20.0.0" } } diff --git a/src/index.js b/src/index.js deleted file mode 100644 index ae431c5..0000000 --- a/src/index.js +++ /dev/null @@ -1,382 +0,0 @@ -const mongoose = require('mongoose'); - -if (!/^5/.test(mongoose.version)) { - mongoose.Promise = Promise; -} - -mongoose.connect = jest.fn().mockImplementation(() => Promise.resolve()); - -mongoose.createConnection = jest.fn().mockReturnValue({ - catch() { - /* no op */ - }, - model: mongoose.model.bind(mongoose), - on: jest.fn(), - once: jest.fn(), - then(resolve) { - return Promise.resolve(resolve(this)); - }, -}); - -const ops = [ - 'find', - 'findOne', - 'count', - 'countDocuments', - 'estimatedDocumentCount', - 'distinct', - 'findOneAndUpdate', - 'findOneAndDelete', - 'findOneAndRemove', - 'findOneAndReplace', - 'remove', - 'update', - 'updateOne', - 'updateMany', - 'deleteOne', - 'deleteMany', - 'save', - 'aggregate', - '$save', -]; - -const mockedReturn = async function (cb) { - const { - op, - model: { modelName }, - _mongooseOptions = {}, - } = this; - const Model = mongoose.model(modelName); - - let mock = - mockingoose.__mocks[modelName] && mockingoose.__mocks[modelName][op]; - - let err = null; - - if (mock instanceof Error) { - err = mock; - } - - if (typeof mock === 'function') { - mock = await mock(this); - } - - if (!mock && op === 'save') { - mock = this; - } - - if (!mock && op === '$save') { - mock = this; - } - - if ( - mock && - !(mock instanceof Model) && - ![ - 'remove', - 'deleteOne', - 'deleteMany', - 'update', - 'updateOne', - 'updateMany', - 'count', - 'countDocuments', - 'estimatedDocumentCount', - 'distinct', - ].includes(op) - ) { - mock = Array.isArray(mock) - ? mock.map((item) => new Model(item)) - : new Model(mock); - - if (op === 'insertMany') { - if (!Array.isArray(mock)) mock = [mock]; - - for (const doc of mock) { - const e = doc.validateSync(); - if (e) throw e; - } - } - - if (_mongooseOptions.lean || _mongooseOptions.rawResult) { - mock = Array.isArray(mock) - ? mock.map((item) => item.toObject()) - : mock.toObject(); - } - } - - if (cb) { - return cb(err, mock); - } - - if (err) { - throw err; - } - - return mock; -}; - -ops.forEach((op) => { - mongoose.Query.prototype[op] = jest - .fn() - .mockImplementation(function (criteria, doc, options, callback) { - if ( - [ - 'find', - 'findOne', - 'count', - 'countDocuments', - 'remove', - 'deleteOne', - 'deleteMany', - 'update', - 'updateOne', - 'updateMany', - 'findOneAndUpdate', - 'findOneAndRemove', - 'findOneAndDelete', - 'findOneAndReplace', - ].includes(op) && - typeof criteria !== 'function' - ) { - // find and findOne can take conditions as the first paramter - // ensure they make it into the Query conditions - this.merge(criteria); - } - - if (['distinct'].includes(op) && typeof doc !== 'function') { - // distinct has the conditions as the second parameter - this.merge(doc); - } - - if (/update/i.test(op) && typeof doc !== 'function' && doc) { - this.setUpdate(doc); - } - - switch (arguments.length) { - case 4: - case 3: - if (typeof options === 'function') { - callback = options; - options = {}; - } - break; - case 2: - if (typeof doc === 'function') { - callback = doc; - doc = criteria; - criteria = undefined; - } - options = undefined; - break; - case 1: - if (typeof criteria === 'function') { - callback = criteria; - criteria = options = doc = undefined; - } else { - doc = criteria; - criteria = options = undefined; - } - } - - this.op = op; - - if (!callback) { - return this; - } - - return this.exec.call(this, callback); - }); -}); - -mongoose.Query.prototype.exec = jest.fn().mockImplementation(function (cb) { - return mockedReturn.call(this, cb); -}); - -mongoose.Query.prototype.orFail = jest - .fn() - .mockImplementation(async function (err) { - return this.then((doc) => { - const hasAnyDocs = doc && Array.isArray(doc) && doc.length > 0; - - if (!doc || !hasAnyDocs) { - if (!err) throw new Error(); - - const isErrorFn = typeof err === 'function'; - throw isErrorFn ? err() : new Error(err); - } - - return this; - }).catch((err) => { - throw err; - }); - }); - -mongoose.Aggregate.prototype.exec = jest - .fn() - .mockImplementation(async function (cb) { - const { - _model: { modelName }, - } = this; - - let mock = - mockingoose.__mocks[modelName] && - mockingoose.__mocks[modelName].aggregate; - - let err = null; - - if (mock instanceof Error) { - err = mock; - } - - if (typeof mock === 'function') { - mock = await mock(this); - } - - if (cb) { - return cb(err, mock); - } - - if (err) { - throw err; - } - - return mock; - }); - -mongoose.Model.insertMany = jest - .fn() - .mockImplementation(function (arr, options, cb) { - const op = 'insertMany'; - const { modelName } = this; - - if (typeof options === 'function') { - cb = options; - options = null; - } else { - this._mongooseOptions = options; - } - - Object.assign(this, { op, model: { modelName } }); - return mockedReturn.call(this, cb); - }); - -const instance = ['remove', 'save', '$save']; - -instance.forEach((methodName) => { - mongoose.Model.prototype[methodName] = jest - .fn() - .mockImplementation(function (options, cb) { - const op = methodName; - const { modelName } = this.constructor; - - if (typeof options === 'function') { - cb = options; - } - - Object.assign(this, { op, model: { modelName } }); - - const hooks = this.constructor.hooks; - - return new Promise((resolve, reject) => { - hooks.execPre(op, this, [cb], (err) => { - if (err) { - reject(err); - return; - } - - const ret = mockedReturn.call(this, cb); - - if (cb) { - hooks.execPost(op, this, [ret], (err2) => { - if (err2) { - reject(err2); - return; - } - - resolve(ret); - }); - } else { - ret - .then((ret2) => { - hooks.execPost(op, this, [ret2], (err3) => { - if (err3) { - reject(err3); - return; - } - - resolve(ret2); - }); - }) - .catch(reject); - } - }); - }); - }); -}); - -jest.doMock('mongoose', () => mongoose); - -// extend a plain function, we will override it with the Proxy later -const proxyTarget = Object.assign(() => void 0, { - __mocks: {}, - resetAll() { - this.__mocks = {}; - }, - toJSON() { - return this.__mocks; - }, -}); - -const getMockController = (prop) => { - return { - toReturn(o, op = 'find') { - proxyTarget.__mocks.hasOwnProperty(prop) - ? (proxyTarget.__mocks[prop][op] = o) - : (proxyTarget.__mocks[prop] = { [op]: o }); - - return this; - }, - - reset(op) { - if (op) { - delete proxyTarget.__mocks[prop][op]; - } else { - delete proxyTarget.__mocks[prop]; - } - - return this; - }, - - toJSON() { - return proxyTarget.__mocks[prop] || {}; - }, - }; -}; - -const proxyTraps = { - get(target, prop) { - if (target.hasOwnProperty(prop)) { - return Reflect.get(target, prop); - } - - return getMockController(prop); - }, - apply: (target, thisArg, [prop]) => mockModel(prop), -}; - -const mockingoose = new Proxy(proxyTarget, proxyTraps); - -/** - * Returns a helper with which you can set up mocks for a particular Model - */ -const mockModel = (model) => { - const modelName = typeof model === 'function' ? model.modelName : model; - if (typeof modelName === 'string') { - return getMockController(modelName); - } else { - throw new Error('model must be a string or mongoose.Model'); - } -}; - -module.exports = mockingoose; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..2cac6c0 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,489 @@ +import mongoose from 'mongoose'; +import { + ops, + type Op, + type MockController, + type MockingooseTarget, + type Mockingoose, +} from './types'; + +function createMockFn(): any { + if (typeof globalThis !== 'undefined' && 'vi' in globalThis) { + return (globalThis as any).vi.fn(); + } + if (typeof globalThis !== 'undefined' && 'jest' in globalThis) { + return (globalThis as any).jest.fn(); + } + // Fallback for environments without test framework + const fn: any = function (this: any, ...args: any[]) { + return fn._impl?.apply(this, args); + }; + fn._impl = undefined; + fn.mockImplementation = (impl: (...args: any[]) => any) => { + fn._impl = impl; + return fn; + }; + fn.mockReturnValue = (val: any) => { + fn._impl = () => val; + return fn; + }; + return fn; +} + +function doMock(moduleName: string, factory: () => any): void { + if (typeof globalThis !== 'undefined' && 'vi' in globalThis) { + (globalThis as any).vi.doMock(moduleName, factory); + } else if (typeof globalThis !== 'undefined' && 'jest' in globalThis) { + (globalThis as any).jest.doMock(moduleName, factory); + } +} + +// Connection mocking +mongoose.connect = createMockFn().mockImplementation(() => Promise.resolve()); + +const connectionMock: any = { + catch() { + /* no op */ + }, + model: mongoose.model.bind(mongoose), + on: createMockFn(), + once: createMockFn(), + then(resolve: (val: any) => any) { + // Temporarily remove `then` to prevent infinite thenable unwrapping + // when used with `await`. Without this, `resolve(this)` returns a thenable, + // causing the runtime to recursively call `.then()` forever. + const thenFn = connectionMock.then; + delete connectionMock.then; + const result = resolve(connectionMock); + connectionMock.then = thenFn; + return Promise.resolve(result); + }, +}; + +mongoose.createConnection = createMockFn().mockReturnValue(connectionMock); + +// Core mock return function +const mockedReturn = async function (this: any, cb?: Function) { + const { + op, + model: { modelName }, + _mongooseOptions = {}, + } = this; + const Model = mongoose.model(modelName); + + let mock = + mockingoose.__mocks[modelName] && mockingoose.__mocks[modelName][op]; + + let err: Error | null = null; + + if (mock instanceof Error) { + err = mock; + } + + if (typeof mock === 'function') { + mock = await mock(this); + } + + if (!mock && op === 'save') { + mock = this; + } + + if (!mock && op === '$save') { + mock = this; + } + + if ( + mock && + !(mock instanceof Model) && + ![ + 'deleteOne', + 'deleteMany', + 'updateOne', + 'updateMany', + 'countDocuments', + 'estimatedDocumentCount', + 'distinct', + 'replaceOne', + 'bulkWrite', + 'bulkSave', + ].includes(op) + ) { + mock = Array.isArray(mock) + ? mock.map((item: any) => new Model(item)) + : new Model(mock); + + if (op === 'insertMany') { + if (!Array.isArray(mock)) mock = [mock]; + + for (const doc of mock) { + const e = doc.validateSync(); + if (e) throw e; + } + } + + if (_mongooseOptions.lean || _mongooseOptions.rawResult) { + mock = Array.isArray(mock) + ? mock.map((item: any) => item.toObject()) + : mock.toObject(); + } + } + + if (cb) { + return cb(err, mock); + } + + if (err) { + throw err; + } + + return mock; +}; + +// Patch Query.prototype for each operation +ops.forEach((op) => { + (mongoose.Query.prototype as any)[op] = createMockFn().mockImplementation( + function (this: any, criteria: any, doc: any, options: any, callback: any) { + if ( + [ + 'find', + 'findOne', + 'countDocuments', + 'deleteOne', + 'deleteMany', + 'updateOne', + 'updateMany', + 'findOneAndUpdate', + 'findOneAndDelete', + 'findOneAndReplace', + 'replaceOne', + ].includes(op) && + typeof criteria !== 'function' + ) { + // find and findOne can take conditions as the first parameter + // ensure they make it into the Query conditions + this.merge(criteria); + } + + if (['distinct'].includes(op) && typeof doc !== 'function') { + // distinct has the conditions as the second parameter + this.merge(doc); + } + + if (/update/i.test(op) && typeof doc !== 'function' && doc) { + this.setUpdate(doc); + } + + switch (arguments.length) { + case 4: + case 3: + if (typeof options === 'function') { + callback = options; + options = {}; + } + break; + case 2: + if (typeof doc === 'function') { + callback = doc; + doc = criteria; + criteria = undefined; + } + options = undefined; + break; + case 1: + if (typeof criteria === 'function') { + callback = criteria; + criteria = options = doc = undefined; + } else { + doc = criteria; + criteria = options = undefined; + } + } + + this.op = op; + + if (!callback) { + return this; + } + + return this.exec.call(this, callback); + } + ); +}); + +// Patch Query.prototype.exec +(mongoose.Query.prototype as any).exec = createMockFn().mockImplementation( + function (this: any, cb?: Function) { + return mockedReturn.call(this, cb); + } +); + +// Patch Query.prototype.orFail +(mongoose.Query.prototype as any).orFail = createMockFn().mockImplementation( + async function (this: any, err?: Function | string) { + return this.then((doc: any) => { + const hasAnyDocs = doc && Array.isArray(doc) && doc.length > 0; + + if (!doc || !hasAnyDocs) { + if (!err) throw new Error(); + + const isErrorFn = typeof err === 'function'; + throw isErrorFn ? err() : new Error(err as string); + } + + return this; + }).catch((err: any) => { + throw err; + }); + } +); + +// Patch Query.prototype.cursor +(mongoose.Query.prototype as any).cursor = createMockFn().mockImplementation( + function (this: any) { + const query = this; + query.op = query.op || 'find'; + + let data: any[] | null = null; + let index = 0; + + const loadData = async () => { + if (data === null) { + const result = await mockedReturn.call(query); + data = Array.isArray(result) ? result : result ? [result] : []; + index = 0; + } + }; + + const cursor: any = { + async next() { + await loadData(); + if (index < data!.length) { + return data![index++]; + } + return null; + }, + async close() { + data = []; + index = 0; + }, + async eachAsync(fn: (doc: any, i: number) => any) { + await loadData(); + for (let i = 0; i < data!.length; i++) { + await fn(data![i], i); + } + }, + [Symbol.asyncIterator]() { + let started = false; + return { + async next() { + if (!started) { + await loadData(); + started = true; + } + if (index < data!.length) { + return { value: data![index++], done: false }; + } + return { value: undefined, done: true }; + }, + }; + }, + }; + + return cursor; + } +); + +// Patch Aggregate.prototype.exec +(mongoose.Aggregate.prototype as any).exec = createMockFn().mockImplementation( + async function (this: any, cb?: Function) { + const { + _model: { modelName }, + } = this; + + let mock = + mockingoose.__mocks[modelName] && + mockingoose.__mocks[modelName].aggregate; + + let err: Error | null = null; + + if (mock instanceof Error) { + err = mock; + } + + if (typeof mock === 'function') { + mock = await mock(this); + } + + if (cb) { + return cb(err, mock); + } + + if (err) { + throw err; + } + + return mock; + } +); + +// Patch Model.insertMany +(mongoose.Model as any).insertMany = createMockFn().mockImplementation( + function (this: any, _arr: any, options: any, cb?: Function) { + const op = 'insertMany'; + const { modelName } = this; + + if (typeof options === 'function') { + cb = options; + options = null; + } else { + this._mongooseOptions = options; + } + + Object.assign(this, { op, model: { modelName } }); + return mockedReturn.call(this, cb); + } +); + +// Patch Model.bulkWrite +(mongoose.Model as any).bulkWrite = createMockFn().mockImplementation(function ( + this: any, + _writes: any, + options: any, + cb?: Function +) { + const op = 'bulkWrite'; + const { modelName } = this; + + if (typeof options === 'function') { + cb = options; + options = null; + } + + Object.assign(this, { op, model: { modelName } }); + return mockedReturn.call(this, cb); +}); + +// Patch Model.bulkSave +(mongoose.Model as any).bulkSave = createMockFn().mockImplementation(function ( + this: any, + _documents: any, + options: any, + cb?: Function +) { + const op = 'bulkSave'; + const { modelName } = this; + + if (typeof options === 'function') { + cb = options; + options = null; + } + + Object.assign(this, { op, model: { modelName } }); + return mockedReturn.call(this, cb); +}); + +// Patch instance methods (save, remove, $save) +const instance = ['save', '$save'] as const; + +instance.forEach((methodName) => { + (mongoose.Model.prototype as any)[methodName] = + createMockFn().mockImplementation(async function ( + this: any, + options: any, + cb?: Function + ) { + const op = methodName; + const { modelName } = this.constructor; + + if (typeof options === 'function') { + cb = options; + } + + Object.assign(this, { op, model: { modelName } }); + + const hooks = this.constructor.hooks; + + await hooks.execPre(op, this, []); + const ret = await mockedReturn.call(this, cb); + await hooks.execPost(op, this, [ret]); + + return ret; + }); +}); + +// Mock the mongoose module +doMock('mongoose', () => mongoose); + +// Proxy target and controller +const proxyTarget: MockingooseTarget & ((...args: any[]) => any) = + Object.assign(() => void 0, { + __mocks: {} as Record>, + resetAll() { + this.__mocks = {}; + }, + toJSON() { + return this.__mocks; + }, + }); + +const getMockController = (prop: string): MockController => { + return { + toReturn(o, op: Op = 'find') { + proxyTarget.__mocks.hasOwnProperty(prop) + ? (proxyTarget.__mocks[prop][op] = o) + : (proxyTarget.__mocks[prop] = { [op]: o }); + + return this; + }, + + reset(op?: Op) { + if (op) { + delete proxyTarget.__mocks[prop][op]; + } else { + delete proxyTarget.__mocks[prop]; + } + + return this; + }, + + toJSON() { + return proxyTarget.__mocks[prop] || {}; + }, + }; +}; + +const mockModel = (model: any): MockController => { + const modelName = typeof model === 'function' ? model.modelName : model; + if (typeof modelName === 'string') { + return getMockController(modelName); + } else { + throw new Error('model must be a string or mongoose.Model'); + } +}; + +const proxyTraps: ProxyHandler = { + get(target, prop: string) { + if (target.hasOwnProperty(prop)) { + return Reflect.get(target, prop); + } + + return getMockController(prop); + }, + apply: (_target, _thisArg, [prop]) => mockModel(prop), +}; + +const mockingoose = new Proxy( + proxyTarget, + proxyTraps +) as unknown as Mockingoose; + +export default mockingoose; +export { mockingoose }; +export type { + Op, + MockController, + MockingooseTarget, + Mockingoose, + ReturnFunction, + MockReturnValue, +} from './types'; diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..f2afc57 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,56 @@ +import type { Query, Aggregate } from 'mongoose'; + +export const ops = [ + 'find', + 'findOne', + 'countDocuments', + 'estimatedDocumentCount', + 'distinct', + 'findOneAndUpdate', + 'findOneAndDelete', + 'findOneAndReplace', + 'updateOne', + 'updateMany', + 'deleteOne', + 'deleteMany', + 'save', + 'aggregate', + '$save', + 'insertMany', + 'replaceOne', + 'bulkWrite', + 'bulkSave', +] as const; + +export type Op = (typeof ops)[number]; + +export type ReturnFunction = (param: Query | Aggregate) => any; + +export type MockReturnValue = + | string + | number + | boolean + | symbol + | object + | void + | null + | undefined + | Error + | ReturnFunction; + +export interface MockController { + toReturn(expected: MockReturnValue, op?: Op): MockController; + reset(op?: Op): MockController; + toJSON(): Record; +} + +export interface MockingooseTarget { + __mocks: Record>; + resetAll(): void; + toJSON(): Record>; +} + +export type Mockingoose = MockingooseTarget & { + (model: any): MockController; + [modelName: string]: any; +}; diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 0000000..2ca505c --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "bundler", + "lib": ["ES2022"], + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "isolatedModules": true, + "isolatedDeclarations": true, + "outDir": "./dist", + "rootDir": "./src", + "types": ["vitest/globals"] + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "__tests__", "opensrc"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..9b9fb4b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.build.json", + "compilerOptions": { + "rootDir": null, + "isolatedDeclarations": false, + "noEmit": true, + "types": ["vitest/globals", "node"] + }, + "include": ["src/**/*", "__tests__/**/*"], + "exclude": ["node_modules", "dist", "opensrc"] +} diff --git a/tsdown.config.ts b/tsdown.config.ts new file mode 100644 index 0000000..c96a734 --- /dev/null +++ b/tsdown.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'tsdown'; + +export default defineConfig({ + entry: ['src/index.ts'], + format: ['esm', 'cjs'], + sourcemap: true, +}); diff --git a/types.d.ts b/types.d.ts deleted file mode 100644 index 9c20746..0000000 --- a/types.d.ts +++ /dev/null @@ -1,62 +0,0 @@ -import * as mongoose from 'mongoose'; - -declare const ops: [ - 'find', - 'findOne', - 'count', - 'countDocuments', - 'estimatedDocumentCount', - 'distinct', - 'findOneAndUpdate', - 'findOneAndDelete', - 'findOneAndRemove', - 'findOneAndReplace', - 'remove', - 'update', - 'deleteOne', - 'deleteMany', - 'save', - 'aggregate' -]; -declare type Ops = typeof ops[number]; -declare type ReturnFunction = (param: mongoose.Query | mongoose.Aggregate) => {}; -declare type ExpectedReturnType = string | number | boolean | symbol | object | {} | void | null | undefined; -interface Mock { - /** - * Specify an expected result for a specific mongoose function. This can be a primitive value or a function. - * If used with a function, you will have access to the Query or Aggregate mongoose class. - * @param expected Primitive value or function that returns the mocked value - * @param op The operation to mock - */ - toReturn(expected: ExpectedReturnType | ReturnFunction, op?: Ops): this; - /** - * Reset all mocks - * @param op Optional parameter to reset, if not specified, resets everything - */ - reset(op?: Ops): this; - /** - * Returns an object of mocks for this model. Only serializable if all mock results are primitives, not functions. - */ - toJSON(): any; -} -interface Target { - __mocks: any; - /** - * Resets all mocks. - */ - resetAll(): void; - /** - * Returns an object of mocks for all models. Only serializable if all mock results are primitives, not functions. - */ - toJSON(): any; -} -declare type Proxy = Target & { - [index: string]: Mock; -} & typeof mockModel; -declare const mockingoose: Proxy; -/** - * Returns a helper with which you can set up mocks for a particular Model - * @param {string | mongoose.Model} model either a string model name, or a mongoose.Model instance - */ -declare const mockModel: (model: string | mongoose.Model) => Mock; -export = mockingoose; diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..f10cb6a --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + environment: 'node', + testTimeout: 15000, + include: ['__tests__/**/*.test.ts'], + }, +}); diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index a8d0443..0000000 --- a/yarn.lock +++ /dev/null @@ -1,4037 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@aws-crypto/ie11-detection@^2.0.0": - "integrity" "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==" - "resolved" "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "tslib" "^1.11.1" - -"@aws-crypto/sha256-browser@2.0.0": - "integrity" "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==" - "resolved" "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "@aws-crypto/ie11-detection" "^2.0.0" - "@aws-crypto/sha256-js" "^2.0.0" - "@aws-crypto/supports-web-crypto" "^2.0.0" - "@aws-crypto/util" "^2.0.0" - "@aws-sdk/types" "^3.1.0" - "@aws-sdk/util-locate-window" "^3.0.0" - "@aws-sdk/util-utf8-browser" "^3.0.0" - "tslib" "^1.11.1" - -"@aws-crypto/sha256-js@^2.0.0", "@aws-crypto/sha256-js@2.0.0": - "integrity" "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==" - "resolved" "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "@aws-crypto/util" "^2.0.0" - "@aws-sdk/types" "^3.1.0" - "tslib" "^1.11.1" - -"@aws-crypto/supports-web-crypto@^2.0.0": - "integrity" "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==" - "resolved" "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "tslib" "^1.11.1" - -"@aws-crypto/util@^2.0.0": - "integrity" "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==" - "resolved" "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "@aws-sdk/types" "^3.110.0" - "@aws-sdk/util-utf8-browser" "^3.0.0" - "tslib" "^1.11.1" - -"@aws-sdk/abort-controller@3.222.0": - "integrity" "sha512-Ric2vJQEWrzz915wBeZlYLWAnIsnywOcZpzroPVTY/TNKRvM0GcSPVuD9vv1lOwybVnDHsipukzwQBAZXkNWVA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/client-cognito-identity@3.222.0": - "integrity" "sha512-MGjs8UC+lX5k/LCGf6lHdGQVITQMh8vCRgCxGnlegQ/LldTbkzNWfeSZufvNvwJ9uAsOKDScVEaPrYRqGXkJzg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-crypto/sha256-browser" "2.0.0" - "@aws-crypto/sha256-js" "2.0.0" - "@aws-sdk/client-sts" "3.222.0" - "@aws-sdk/config-resolver" "3.222.0" - "@aws-sdk/credential-provider-node" "3.222.0" - "@aws-sdk/fetch-http-handler" "3.222.0" - "@aws-sdk/hash-node" "3.222.0" - "@aws-sdk/invalid-dependency" "3.222.0" - "@aws-sdk/middleware-content-length" "3.222.0" - "@aws-sdk/middleware-endpoint" "3.222.0" - "@aws-sdk/middleware-host-header" "3.222.0" - "@aws-sdk/middleware-logger" "3.222.0" - "@aws-sdk/middleware-recursion-detection" "3.222.0" - "@aws-sdk/middleware-retry" "3.222.0" - "@aws-sdk/middleware-serde" "3.222.0" - "@aws-sdk/middleware-signing" "3.222.0" - "@aws-sdk/middleware-stack" "3.222.0" - "@aws-sdk/middleware-user-agent" "3.222.0" - "@aws-sdk/node-config-provider" "3.222.0" - "@aws-sdk/node-http-handler" "3.222.0" - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/smithy-client" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/url-parser" "3.222.0" - "@aws-sdk/util-base64" "3.208.0" - "@aws-sdk/util-body-length-browser" "3.188.0" - "@aws-sdk/util-body-length-node" "3.208.0" - "@aws-sdk/util-defaults-mode-browser" "3.222.0" - "@aws-sdk/util-defaults-mode-node" "3.222.0" - "@aws-sdk/util-endpoints" "3.222.0" - "@aws-sdk/util-retry" "3.222.0" - "@aws-sdk/util-user-agent-browser" "3.222.0" - "@aws-sdk/util-user-agent-node" "3.222.0" - "@aws-sdk/util-utf8-browser" "3.188.0" - "@aws-sdk/util-utf8-node" "3.208.0" - "tslib" "^2.3.1" - -"@aws-sdk/client-sso-oidc@3.222.0": - "integrity" "sha512-qC4SOKojOWCixvtma3/pwumRzkqHd19FL17ImR+p3C6J0CsSIzjBsKOxLjQMfaE0usAdqStxjULxJDAvWLElJA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-crypto/sha256-browser" "2.0.0" - "@aws-crypto/sha256-js" "2.0.0" - "@aws-sdk/config-resolver" "3.222.0" - "@aws-sdk/fetch-http-handler" "3.222.0" - "@aws-sdk/hash-node" "3.222.0" - "@aws-sdk/invalid-dependency" "3.222.0" - "@aws-sdk/middleware-content-length" "3.222.0" - "@aws-sdk/middleware-endpoint" "3.222.0" - "@aws-sdk/middleware-host-header" "3.222.0" - "@aws-sdk/middleware-logger" "3.222.0" - "@aws-sdk/middleware-recursion-detection" "3.222.0" - "@aws-sdk/middleware-retry" "3.222.0" - "@aws-sdk/middleware-serde" "3.222.0" - "@aws-sdk/middleware-stack" "3.222.0" - "@aws-sdk/middleware-user-agent" "3.222.0" - "@aws-sdk/node-config-provider" "3.222.0" - "@aws-sdk/node-http-handler" "3.222.0" - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/smithy-client" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/url-parser" "3.222.0" - "@aws-sdk/util-base64" "3.208.0" - "@aws-sdk/util-body-length-browser" "3.188.0" - "@aws-sdk/util-body-length-node" "3.208.0" - "@aws-sdk/util-defaults-mode-browser" "3.222.0" - "@aws-sdk/util-defaults-mode-node" "3.222.0" - "@aws-sdk/util-endpoints" "3.222.0" - "@aws-sdk/util-retry" "3.222.0" - "@aws-sdk/util-user-agent-browser" "3.222.0" - "@aws-sdk/util-user-agent-node" "3.222.0" - "@aws-sdk/util-utf8-browser" "3.188.0" - "@aws-sdk/util-utf8-node" "3.208.0" - "tslib" "^2.3.1" - -"@aws-sdk/client-sso@3.222.0": - "integrity" "sha512-ISJRxT7DLaBwUJSdQoLS/7rWLoYGv6b3C7vTm4hQwDz83+JcdfDODir4iR0REhZfisce8Er6S06WtwAIyokzpQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-crypto/sha256-browser" "2.0.0" - "@aws-crypto/sha256-js" "2.0.0" - "@aws-sdk/config-resolver" "3.222.0" - "@aws-sdk/fetch-http-handler" "3.222.0" - "@aws-sdk/hash-node" "3.222.0" - "@aws-sdk/invalid-dependency" "3.222.0" - "@aws-sdk/middleware-content-length" "3.222.0" - "@aws-sdk/middleware-endpoint" "3.222.0" - "@aws-sdk/middleware-host-header" "3.222.0" - "@aws-sdk/middleware-logger" "3.222.0" - "@aws-sdk/middleware-recursion-detection" "3.222.0" - "@aws-sdk/middleware-retry" "3.222.0" - "@aws-sdk/middleware-serde" "3.222.0" - "@aws-sdk/middleware-stack" "3.222.0" - "@aws-sdk/middleware-user-agent" "3.222.0" - "@aws-sdk/node-config-provider" "3.222.0" - "@aws-sdk/node-http-handler" "3.222.0" - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/smithy-client" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/url-parser" "3.222.0" - "@aws-sdk/util-base64" "3.208.0" - "@aws-sdk/util-body-length-browser" "3.188.0" - "@aws-sdk/util-body-length-node" "3.208.0" - "@aws-sdk/util-defaults-mode-browser" "3.222.0" - "@aws-sdk/util-defaults-mode-node" "3.222.0" - "@aws-sdk/util-endpoints" "3.222.0" - "@aws-sdk/util-retry" "3.222.0" - "@aws-sdk/util-user-agent-browser" "3.222.0" - "@aws-sdk/util-user-agent-node" "3.222.0" - "@aws-sdk/util-utf8-browser" "3.188.0" - "@aws-sdk/util-utf8-node" "3.208.0" - "tslib" "^2.3.1" - -"@aws-sdk/client-sts@3.222.0": - "integrity" "sha512-CZ2eY6aM5YnMzNIvy8t03tr2/iMljkWA4YbMV4lc8HN9qGEh/zUQcNQU2og8nVuo8KjL/4fXXllyUCS8odPnDQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-crypto/sha256-browser" "2.0.0" - "@aws-crypto/sha256-js" "2.0.0" - "@aws-sdk/config-resolver" "3.222.0" - "@aws-sdk/credential-provider-node" "3.222.0" - "@aws-sdk/fetch-http-handler" "3.222.0" - "@aws-sdk/hash-node" "3.222.0" - "@aws-sdk/invalid-dependency" "3.222.0" - "@aws-sdk/middleware-content-length" "3.222.0" - "@aws-sdk/middleware-endpoint" "3.222.0" - "@aws-sdk/middleware-host-header" "3.222.0" - "@aws-sdk/middleware-logger" "3.222.0" - "@aws-sdk/middleware-recursion-detection" "3.222.0" - "@aws-sdk/middleware-retry" "3.222.0" - "@aws-sdk/middleware-sdk-sts" "3.222.0" - "@aws-sdk/middleware-serde" "3.222.0" - "@aws-sdk/middleware-signing" "3.222.0" - "@aws-sdk/middleware-stack" "3.222.0" - "@aws-sdk/middleware-user-agent" "3.222.0" - "@aws-sdk/node-config-provider" "3.222.0" - "@aws-sdk/node-http-handler" "3.222.0" - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/smithy-client" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/url-parser" "3.222.0" - "@aws-sdk/util-base64" "3.208.0" - "@aws-sdk/util-body-length-browser" "3.188.0" - "@aws-sdk/util-body-length-node" "3.208.0" - "@aws-sdk/util-defaults-mode-browser" "3.222.0" - "@aws-sdk/util-defaults-mode-node" "3.222.0" - "@aws-sdk/util-endpoints" "3.222.0" - "@aws-sdk/util-retry" "3.222.0" - "@aws-sdk/util-user-agent-browser" "3.222.0" - "@aws-sdk/util-user-agent-node" "3.222.0" - "@aws-sdk/util-utf8-browser" "3.188.0" - "@aws-sdk/util-utf8-node" "3.208.0" - "fast-xml-parser" "4.0.11" - "tslib" "^2.3.1" - -"@aws-sdk/config-resolver@3.222.0": - "integrity" "sha512-rG/Yh0R+GQe86ofEb24QAjQ19tHb4HMCyCuMZUZCsIdgNmUfcaH21Ug5s7pJrAfEy/F2gwxs+VfBeXKjT0MqSQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/signature-v4" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/util-config-provider" "3.208.0" - "@aws-sdk/util-middleware" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/credential-provider-cognito-identity@3.222.0": - "integrity" "sha512-ehEmhY3+s+ZlyPSP5BaFvJAkVIiJVNtjOjmXvbhI7+zFJW9UmChkAEwtF28ySZaFlflkEub9nO5tbkYKUyEjlQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/client-cognito-identity" "3.222.0" - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/credential-provider-env@3.222.0": - "integrity" "sha512-xV6cmJ9zMi8nWySqBv1ze/EFlzXEfazu3i/T/5MpOufPvuGpXTQ3/PDEbC6mKBtvomoQ0fonc/cZrix7YcJV0Q==" - "resolved" "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/credential-provider-imds@3.222.0": - "integrity" "sha512-n090ouw5AFhb0EfzRElUTmqCNOQ1zjlxau30oVM7+qKtXH85hEGMQOoRQAl9ch/pXcbjKLh1mbUhmonR97/Kvw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/node-config-provider" "3.222.0" - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/url-parser" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/credential-provider-ini@3.222.0": - "integrity" "sha512-KtOYx0nGwu8466G7oWtFU2u3uKZziwV14xeoYNysnMn77nPE7PtlC3WOzE2p3tSGwfVnaGlmYqWEN4+QrY1zpQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/credential-provider-env" "3.222.0" - "@aws-sdk/credential-provider-imds" "3.222.0" - "@aws-sdk/credential-provider-sso" "3.222.0" - "@aws-sdk/credential-provider-web-identity" "3.222.0" - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/shared-ini-file-loader" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/credential-provider-node@3.222.0": - "integrity" "sha512-aWolcqDLgxL7ugyF5954/DrqcAl81PzwZ+ik2IMPCHOGWmsIWoecxMmXXbukrhzIegmVc7DwmN1qmT8KsURj0Q==" - "resolved" "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/credential-provider-env" "3.222.0" - "@aws-sdk/credential-provider-imds" "3.222.0" - "@aws-sdk/credential-provider-ini" "3.222.0" - "@aws-sdk/credential-provider-process" "3.222.0" - "@aws-sdk/credential-provider-sso" "3.222.0" - "@aws-sdk/credential-provider-web-identity" "3.222.0" - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/shared-ini-file-loader" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/credential-provider-process@3.222.0": - "integrity" "sha512-IgEk8Tne1b2v2k/wVjuddKi+HEAFJWUoEcvLCnYRdlVX5l+Nnatw8vGYb+gTi9X7nKNqEGfMbifKCFoePKjC0Q==" - "resolved" "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/shared-ini-file-loader" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/credential-provider-sso@3.222.0": - "integrity" "sha512-2bl4lapUNDk95tVyTvbaYYSczxpC5WCFW7mmf8HGxTau4a6oELRsFaKeNzyuaL/IQ8hYhaVWR7nUCxIEqVngWw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/client-sso" "3.222.0" - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/shared-ini-file-loader" "3.222.0" - "@aws-sdk/token-providers" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/credential-provider-web-identity@3.222.0": - "integrity" "sha512-dImqTEWt38nVcDe/wQqHWJ+R2zyNqVKwejfslgbH2YilUnDU43xq2KJhNe4s+YhCB6tHOTkbNnpZo7vPV5Zxog==" - "resolved" "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/credential-providers@^3.186.0": - "integrity" "sha512-oPWtoUwE83N729gmo8LydVR9EnHulpaUmYQohIbPVLRfTSY3kX7eCjOyWx7CdLnLXGJSFn54WTEwqRswcQt+hA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/client-cognito-identity" "3.222.0" - "@aws-sdk/client-sso" "3.222.0" - "@aws-sdk/client-sts" "3.222.0" - "@aws-sdk/credential-provider-cognito-identity" "3.222.0" - "@aws-sdk/credential-provider-env" "3.222.0" - "@aws-sdk/credential-provider-imds" "3.222.0" - "@aws-sdk/credential-provider-ini" "3.222.0" - "@aws-sdk/credential-provider-node" "3.222.0" - "@aws-sdk/credential-provider-process" "3.222.0" - "@aws-sdk/credential-provider-sso" "3.222.0" - "@aws-sdk/credential-provider-web-identity" "3.222.0" - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/shared-ini-file-loader" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/fetch-http-handler@3.222.0": - "integrity" "sha512-0PWnOp47mNfwBFEZhuBpz5A+66jbvb2ySidnM5vWHRxu5yN7rCJEdEMSJKDzR6nH3GLZ9dHoOxTzQy21NoDTtA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/querystring-builder" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/util-base64" "3.208.0" - "tslib" "^2.3.1" - -"@aws-sdk/hash-node@3.222.0": - "integrity" "sha512-Fw0acblG0LQT9tfD2/4j98QHNq+Crotig/M1/zPDcVoGb8OBHd2442zpeA0fYYjGnGGhy9psRHdJrjZGj1vDUw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "@aws-sdk/util-buffer-from" "3.208.0" - "tslib" "^2.3.1" - -"@aws-sdk/invalid-dependency@3.222.0": - "integrity" "sha512-tWJWWTcL7DrhFiDmPBvLaw2lopHJMsF4Uj52yIQJskwd2IeBOxjl30zLo/oidmk73IFUB7TCObc85zJrtt/KcQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/is-array-buffer@3.201.0": - "integrity" "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz" - "version" "3.201.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/middleware-content-length@3.222.0": - "integrity" "sha512-Wlah+nrPhcq5qcwHiK1ymVRAvcKjV2py2RXhJsNZWgYwphdt5RHaZHPDKoodI27alrDJVyBBQWGzIm/Ag1bypQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/middleware-endpoint@3.222.0": - "integrity" "sha512-e1bM+CvuUWmBdydQpV5sF8cxZrXQ++0G5s1M7pLimKdWXQvCQ1ZEwA3LLi2IWomXmS9a3BaH3iKAf87RTWjIXw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/middleware-serde" "3.222.0" - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/signature-v4" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/url-parser" "3.222.0" - "@aws-sdk/util-config-provider" "3.208.0" - "@aws-sdk/util-middleware" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/middleware-host-header@3.222.0": - "integrity" "sha512-R4STwHkWgdxMRqOy6riYfXepsQURR5YhK6psPFZHkBYByIRc9JxJdLA0qZcfLRriQIAGmqEO2WWsqRmr8nkbBw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/middleware-logger@3.222.0": - "integrity" "sha512-eAxGCcNXl1APMOFbkUaAC6pNBPUbajyGqsDf6GLdlrYHrMVAtJdYd988ov6C52h7k6iDZ+OPHwv8dwUz+PRfpw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/middleware-recursion-detection@3.222.0": - "integrity" "sha512-4JRVs7y5JDXXjc5fkz0FCZJt/0HTP2vh3QyZsWRbCYesw2cWVqQlp/fUXp8w5KGqm5nYkTF4e5SQ7Ca8powJNA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/middleware-retry@3.222.0": - "integrity" "sha512-8FZpGuJDtntjXZ/mfJ9EdP5mYiUunQHEmk6OERk3h4XW3D/e97denwDAcBBIK8iYYGic5PoWF4KgTFJWs1YOcw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/service-error-classification" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/util-middleware" "3.222.0" - "tslib" "^2.3.1" - "uuid" "^8.3.2" - -"@aws-sdk/middleware-sdk-sts@3.222.0": - "integrity" "sha512-YbL4lTBFgqyL2Ob+dMyw/UNd5K9IOnZHHxjpwWlYKMrfT+pp2bvrr7XUbRHnxSoDsOg9bf6IyTSRVnVxP4psJg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/middleware-signing" "3.222.0" - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/signature-v4" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/middleware-serde@3.222.0": - "integrity" "sha512-UoeLbgCJB07dX8tRByR0KzZaOwCoIyXj/SfFTuOhBUjkpKwqFCam/hofDlK3FR6kvl+xiURv57W/FtKV/9TDHg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/middleware-signing@3.222.0": - "integrity" "sha512-MwMw2Lz7SBOniAc0slWXt65ocqL+E956bdW+LOvBin6OgkVWaLRbWI9nOzA6B2d8b65fCGEc+N15i0UdrEf+MQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/signature-v4" "3.222.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/util-middleware" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/middleware-stack@3.222.0": - "integrity" "sha512-ASKbstAKbOBUZhFhst6/NCr11x94BDBiQn2zDs2Lvjo89n2efMeb4wEr17VCMZVeKI6ojtPFa1ZVLsH8AOn4Yw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/middleware-user-agent@3.222.0": - "integrity" "sha512-fjdxCRIAhOTsI9OcEKwJp4lhsvyCSXoeYV49mO/bdG6pFyFRm3Jezx7TNVNeLTGuMHTTTvRrCTF8sgE5t17Pzw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/node-config-provider@3.222.0": - "integrity" "sha512-hrbw90LlVa4xJJc4WiyAfaPMY/sJubSeTwuxTChLsFOavr6hSMCwLASrWmOiKRIj5hKdSfEA87n/q+DnKHlA8A==" - "resolved" "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/shared-ini-file-loader" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/node-http-handler@3.222.0": - "integrity" "sha512-k3WqxUgZzGbiCQt1HyzDGlRzq8muGIOWZs9T3HtCa5LtACvl0qlNmiwCc+C/o7GRLyC9FuWkP3lOW6MiAFQUcA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/abort-controller" "3.222.0" - "@aws-sdk/protocol-http" "3.222.0" - "@aws-sdk/querystring-builder" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/property-provider@3.222.0": - "integrity" "sha512-rEqAgQ7itmB7GB+WWLgyT7/YWJkjEBCfggxycccChWAeqg+gjpstIiGX2BjP2K/wnzwE0D91JsozSXcQIDOtNQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/protocol-http@3.222.0": - "integrity" "sha512-Zj+ytEgrOagCE7yczjdDan7W+1a0OL5DPAx69Z00NxGoBI2h0GRZD28dRYb3Pzs5/Ft4KbCedH/RUnyaYjaZxw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/querystring-builder@3.222.0": - "integrity" "sha512-qrNUGDyDp9yVQMnBbz1T5YBQkA/u6D5o0PPzSwfZ9azdAcBLjHOEfsBrKhxP+K92L/nilbnmY89KrjMR8+BNtw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "@aws-sdk/util-uri-escape" "3.201.0" - "tslib" "^2.3.1" - -"@aws-sdk/querystring-parser@3.222.0": - "integrity" "sha512-3KfkCA/753PlF5QqhGuQ7u+NOgLyiBFeV8R8ut/pfBmG8fF6l3RKrkbcu+87QpqXntRzG+RLHDqS7ryT3B2ICg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/service-error-classification@3.222.0": - "integrity" "sha512-Dn/WGtm+v5nney0CaYZjdOtJmdEuI8EQiQ5J3eQ3G0jjT6mr1/tCajsNpq3ZqHXiwLtydwaVvsL3AKXn+oxFVA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.222.0.tgz" - "version" "3.222.0" - -"@aws-sdk/shared-ini-file-loader@3.222.0": - "integrity" "sha512-2dowzMXjvIf5gwX5gNCwpv/TzAbbXxrId3zYJgPdEtApsa7NxyFs5MfnHt1zZI6P3YORGheRnNUK9RUYOPKHgA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/signature-v4@3.222.0": - "integrity" "sha512-2qQZuKqx56b2uN2rdjdKL6u0Cvk82uTGNtIuetmySY9xPEAljSBdriaxTqNqK9Gs3M4obG22alUK4a85uwqS3g==" - "resolved" "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/is-array-buffer" "3.201.0" - "@aws-sdk/types" "3.222.0" - "@aws-sdk/util-hex-encoding" "3.201.0" - "@aws-sdk/util-middleware" "3.222.0" - "@aws-sdk/util-uri-escape" "3.201.0" - "tslib" "^2.3.1" - -"@aws-sdk/smithy-client@3.222.0": - "integrity" "sha512-4dnU7TvwKxVuOWduvFGClYe0EgNov5Ke1ef7O1bdKaj5MmlH6wBDgGJM4NKREBFapC2dUXkoPtwsihtYBci1Bw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/middleware-stack" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/token-providers@3.222.0": - "integrity" "sha512-VlLQDWjwKm6WezheyZ+wxfEw+X05s1NSZLY5N5HYE6+MSPcqllKCp0ArLcK1MUs68s/4TIOVKQrNeeJm/bLEPw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/client-sso-oidc" "3.222.0" - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/shared-ini-file-loader" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.110.0", "@aws-sdk/types@3.222.0": - "integrity" "sha512-yXRYptInkfEFaOvWFxlRXsRh9jWOmQc1sZeKqjfx2UCtzNJ7ebedN0VfCz4SaDotcw9Q4JWuN66qhRMJjDx7/w==" - "resolved" "https://registry.npmjs.org/@aws-sdk/types/-/types-3.222.0.tgz" - "version" "3.222.0" - -"@aws-sdk/url-parser@3.222.0": - "integrity" "sha512-1+QbVdT/phYDb5JDQRJWoZeCujkXaI5m8z3bIiPxcRRY3NPuluDGrfX3kfnFen5s9QGByLvJxWKWZS+i+iUFRg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/querystring-parser" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/util-base64@3.208.0": - "integrity" "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz" - "version" "3.208.0" - dependencies: - "@aws-sdk/util-buffer-from" "3.208.0" - "tslib" "^2.3.1" - -"@aws-sdk/util-body-length-browser@3.188.0": - "integrity" "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz" - "version" "3.188.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/util-body-length-node@3.208.0": - "integrity" "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz" - "version" "3.208.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/util-buffer-from@3.208.0": - "integrity" "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz" - "version" "3.208.0" - dependencies: - "@aws-sdk/is-array-buffer" "3.201.0" - "tslib" "^2.3.1" - -"@aws-sdk/util-config-provider@3.208.0": - "integrity" "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz" - "version" "3.208.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/util-defaults-mode-browser@3.222.0": - "integrity" "sha512-+dGsp59lrEkDmK7OO5ecMYasrTGIKacFHjqZ6aqmbn1xtcUd/o3Qe7g5YSRXMGwtZ6xhvBD+NJLkEERI7U7cMw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/types" "3.222.0" - "bowser" "^2.11.0" - "tslib" "^2.3.1" - -"@aws-sdk/util-defaults-mode-node@3.222.0": - "integrity" "sha512-W/duYMtmCCWdzHP+yscBB6yrARgAqWpFdxgBvMSlT8TjOTrh/F+aj4NPamiNMeUfqfMFGnboYfyWRr1avkcAGQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/config-resolver" "3.222.0" - "@aws-sdk/credential-provider-imds" "3.222.0" - "@aws-sdk/node-config-provider" "3.222.0" - "@aws-sdk/property-provider" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/util-endpoints@3.222.0": - "integrity" "sha512-qujJQv8lFysAr1lOlBTJhz7949NZyq5cj74Q9dR99AcAMXXeI9CQayPKH7477AnXRGOTMahZ3mV0HZ1bCJoNTw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/util-hex-encoding@3.201.0": - "integrity" "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz" - "version" "3.201.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/util-locate-window@^3.0.0": - "integrity" "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz" - "version" "3.208.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/util-middleware@3.222.0": - "integrity" "sha512-Y4BPtSa+6+qvg6OVW6RrdDx0OADfWa2Uxsxqdozpdnx2OQY0q+1diqsNgFMV+FIvdXqffE147KG7roG+/AfPeA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/util-retry@3.222.0": - "integrity" "sha512-poiWqhiTjExUYKxgN5tRAvKNN23lGHn9ZJAGOu8sY2GHb6gatMfj46k31om3KrM3YGRuyXAo8YXRhA+QZ5CX0g==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/service-error-classification" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/util-uri-escape@3.201.0": - "integrity" "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz" - "version" "3.201.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/util-user-agent-browser@3.222.0": - "integrity" "sha512-DREMeL0XHl4QIS2GVSHFwVH4mJZ+Dr04R3U8WfiMktXdA93j5tDMJpU3+PNaCZPeaqz2QNwrVSBWKwbwA357zQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/types" "3.222.0" - "bowser" "^2.11.0" - "tslib" "^2.3.1" - -"@aws-sdk/util-user-agent-node@3.222.0": - "integrity" "sha512-BMRMrPXL/HS3dSha9vcABkoANluKjB0pH78bc659EY2WUj9wCZdbUNQpACiYx8bwm7xKSxugCkmPd6NLWXUURw==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.222.0.tgz" - "version" "3.222.0" - dependencies: - "@aws-sdk/node-config-provider" "3.222.0" - "@aws-sdk/types" "3.222.0" - "tslib" "^2.3.1" - -"@aws-sdk/util-utf8-browser@^3.0.0", "@aws-sdk/util-utf8-browser@3.188.0": - "integrity" "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz" - "version" "3.188.0" - dependencies: - "tslib" "^2.3.1" - -"@aws-sdk/util-utf8-node@3.208.0": - "integrity" "sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==" - "resolved" "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz" - "version" "3.208.0" - dependencies: - "@aws-sdk/util-buffer-from" "3.208.0" - "tslib" "^2.3.1" - -"@babel/cli@^7.19.3": - "integrity" "sha512-643/TybmaCAe101m2tSVHi9UKpETXP9c/Ff4mD2tAwkdP6esKIfaauZFc67vGEM6r9fekbEGid+sZhbEnSe3dg==" - "resolved" "https://registry.npmjs.org/@babel/cli/-/cli-7.19.3.tgz" - "version" "7.19.3" - dependencies: - "@jridgewell/trace-mapping" "^0.3.8" - "commander" "^4.0.1" - "convert-source-map" "^1.1.0" - "fs-readdir-recursive" "^1.1.0" - "glob" "^7.2.0" - "make-dir" "^2.1.0" - "slash" "^2.0.0" - optionalDependencies: - "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" - "chokidar" "^3.4.0" - -"@babel/code-frame@^7.0.0": - "integrity" "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz" - "version" "7.12.13" - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": - "integrity" "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz" - "version" "7.20.5" - -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.8.0": - "integrity" "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-module-transforms" "^7.20.2" - "@babel/helpers" "^7.20.5" - "@babel/parser" "^7.20.5" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.1" - "semver" "^6.3.0" - -"@babel/generator@^7.20.5", "@babel/generator@^7.7.2": - "integrity" "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/types" "^7.20.5" - "@jridgewell/gen-mapping" "^0.3.2" - "jsesc" "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - "integrity" "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==" - "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0": - "integrity" "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz" - "version" "7.20.0" - dependencies: - "@babel/compat-data" "^7.20.0" - "@babel/helper-validator-option" "^7.18.6" - "browserslist" "^4.21.3" - "semver" "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.5": - "integrity" "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.19.1" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": - "integrity" "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "regexpu-core" "^5.2.1" - -"@babel/helper-define-polyfill-provider@^0.3.3": - "integrity" "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" - "semver" "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - "version" "7.18.9" - -"@babel/helper-explode-assignable-expression@^7.18.6": - "integrity" "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==" - "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - "integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.18.9": - "integrity" "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==" - "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.18.6": - "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2": - "integrity" "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - -"@babel/helper-optimise-call-expression@^7.18.6": - "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" - "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - "integrity" "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" - "version" "7.20.2" - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - "integrity" "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1": - "integrity" "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==" - "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz" - "version" "7.19.1" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" - -"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": - "integrity" "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/types" "^7.20.2" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - "integrity" "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==" - "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" - "version" "7.20.0" - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-split-export-declaration@^7.18.6": - "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - "integrity" "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" - "version" "7.19.4" - -"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - "version" "7.19.1" - -"@babel/helper-validator-option@^7.18.6": - "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" - "version" "7.18.6" - -"@babel/helper-wrap-function@^7.18.9": - "integrity" "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" - -"@babel/helpers@^7.20.5": - "integrity" "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz" - "version" "7.20.6" - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" - -"@babel/highlight@^7.12.13", "@babel/highlight@^7.18.6": - "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" - -"@babel/parser@^7.1.0": - "integrity" "sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.13.11.tgz" - "version" "7.13.11" - -"@babel/parser@^7.12.13", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.5": - "integrity" "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz" - "version" "7.20.5" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - "integrity" "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - "integrity" "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - -"@babel/plugin-proposal-async-generator-functions@^7.20.1": - "integrity" "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz" - "version" "7.20.1" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.18.6": - "integrity" "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - "integrity" "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - "integrity" "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - "integrity" "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - "integrity" "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - "integrity" "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - "integrity" "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - "integrity" "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.20.2": - "integrity" "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.1" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - "integrity" "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.9": - "integrity" "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - "integrity" "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - "integrity" "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.20.5" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - "integrity" "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.20.0": - "integrity" "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" - "version" "7.20.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-syntax-import-meta@^7.8.3": - "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - "integrity" "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz" - "version" "7.12.13" - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-typescript@^7.7.2": - "integrity" "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz" - "version" "7.20.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-arrow-functions@^7.18.6": - "integrity" "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.18.6": - "integrity" "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - "integrity" "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.20.2": - "integrity" "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-classes@^7.20.2": - "integrity" "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.19.1" - "@babel/helper-split-export-declaration" "^7.18.6" - "globals" "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.18.9": - "integrity" "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.20.2": - "integrity" "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - "integrity" "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - "integrity" "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - "integrity" "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.18.8": - "integrity" "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" - "version" "7.18.8" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.18.9": - "integrity" "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.18.9": - "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.18.6": - "integrity" "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.19.6": - "integrity" "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz" - "version" "7.19.6" - dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-modules-commonjs@^7.19.6": - "integrity" "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz" - "version" "7.19.6" - dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-simple-access" "^7.19.4" - -"@babel/plugin-transform-modules-systemjs@^7.19.6": - "integrity" "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz" - "version" "7.19.6" - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.19.1" - -"@babel/plugin-transform-modules-umd@^7.18.6": - "integrity" "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - "integrity" "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.20.5" - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-new-target@^7.18.6": - "integrity" "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.18.6": - "integrity" "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.20.1": - "integrity" "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-property-literals@^7.18.6": - "integrity" "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.18.6": - "integrity" "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "regenerator-transform" "^0.15.1" - -"@babel/plugin-transform-reserved-words@^7.18.6": - "integrity" "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-shorthand-properties@^7.18.6": - "integrity" "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.19.0": - "integrity" "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.18.6": - "integrity" "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.18.9": - "integrity" "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - "integrity" "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - "integrity" "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-regex@^7.18.6": - "integrity" "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@^7.20.2": - "integrity" "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.20.1" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.20.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.20.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.20.2" - "@babel/plugin-transform-classes" "^7.20.2" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.20.2" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.19.6" - "@babel/plugin-transform-modules-commonjs" "^7.19.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.6" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.20.1" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.20.2" - "babel-plugin-polyfill-corejs2" "^0.3.3" - "babel-plugin-polyfill-corejs3" "^0.6.0" - "babel-plugin-polyfill-regenerator" "^0.4.1" - "core-js-compat" "^3.25.1" - "semver" "^6.3.0" - -"@babel/preset-modules@^0.1.5": - "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" - "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" - "version" "0.1.5" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - "esutils" "^2.0.2" - -"@babel/runtime@^7.8.4": - "integrity" "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz" - "version" "7.20.6" - dependencies: - "regenerator-runtime" "^0.13.11" - -"@babel/template@^7.18.10": - "integrity" "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/template@^7.3.3": - "integrity" "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz" - "version" "7.12.13" - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.7.2": - "integrity" "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.5" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.5" - "@babel/types" "^7.20.5" - "debug" "^4.1.0" - "globals" "^11.1.0" - -"@babel/types@^7.0.0": - "integrity" "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz" - "version" "7.13.0" - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - "lodash" "^4.17.19" - "to-fast-properties" "^2.0.0" - -"@babel/types@^7.12.13": - "integrity" "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - "to-fast-properties" "^2.0.0" - -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.4.4": - "integrity" "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz" - "version" "7.20.5" - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - "to-fast-properties" "^2.0.0" - -"@babel/types@^7.3.0": - "integrity" "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz" - "version" "7.13.0" - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - "lodash" "^4.17.19" - "to-fast-properties" "^2.0.0" - -"@babel/types@^7.3.3": - "integrity" "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz" - "version" "7.13.0" - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - "lodash" "^4.17.19" - "to-fast-properties" "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - "version" "0.2.3" - -"@istanbuljs/load-nyc-config@^1.0.0": - "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" - "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "camelcase" "^5.3.1" - "find-up" "^4.1.0" - "get-package-type" "^0.1.0" - "js-yaml" "^3.13.1" - "resolve-from" "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" - "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - "version" "0.1.3" - -"@jest/console@^29.3.1": - "integrity" "sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/types" "^29.3.1" - "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^29.3.1" - "jest-util" "^29.3.1" - "slash" "^3.0.0" - -"@jest/core@^29.3.1": - "integrity" "sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==" - "resolved" "https://registry.npmjs.org/@jest/core/-/core-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/console" "^29.3.1" - "@jest/reporters" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" - "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "jest-changed-files" "^29.2.0" - "jest-config" "^29.3.1" - "jest-haste-map" "^29.3.1" - "jest-message-util" "^29.3.1" - "jest-regex-util" "^29.2.0" - "jest-resolve" "^29.3.1" - "jest-resolve-dependencies" "^29.3.1" - "jest-runner" "^29.3.1" - "jest-runtime" "^29.3.1" - "jest-snapshot" "^29.3.1" - "jest-util" "^29.3.1" - "jest-validate" "^29.3.1" - "jest-watcher" "^29.3.1" - "micromatch" "^4.0.4" - "pretty-format" "^29.3.1" - "slash" "^3.0.0" - "strip-ansi" "^6.0.0" - -"@jest/environment@^29.3.1": - "integrity" "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/fake-timers" "^29.3.1" - "@jest/types" "^29.3.1" - "@types/node" "*" - "jest-mock" "^29.3.1" - -"@jest/expect-utils@^29.3.1": - "integrity" "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==" - "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "jest-get-type" "^29.2.0" - -"@jest/expect@^29.3.1": - "integrity" "sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==" - "resolved" "https://registry.npmjs.org/@jest/expect/-/expect-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "expect" "^29.3.1" - "jest-snapshot" "^29.3.1" - -"@jest/fake-timers@^29.3.1": - "integrity" "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/types" "^29.3.1" - "@sinonjs/fake-timers" "^9.1.2" - "@types/node" "*" - "jest-message-util" "^29.3.1" - "jest-mock" "^29.3.1" - "jest-util" "^29.3.1" - -"@jest/globals@^29.3.1": - "integrity" "sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==" - "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/environment" "^29.3.1" - "@jest/expect" "^29.3.1" - "@jest/types" "^29.3.1" - "jest-mock" "^29.3.1" - -"@jest/reporters@^29.3.1": - "integrity" "sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==" - "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" - "@jridgewell/trace-mapping" "^0.3.15" - "@types/node" "*" - "chalk" "^4.0.0" - "collect-v8-coverage" "^1.0.0" - "exit" "^0.1.2" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "istanbul-lib-coverage" "^3.0.0" - "istanbul-lib-instrument" "^5.1.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-lib-source-maps" "^4.0.0" - "istanbul-reports" "^3.1.3" - "jest-message-util" "^29.3.1" - "jest-util" "^29.3.1" - "jest-worker" "^29.3.1" - "slash" "^3.0.0" - "string-length" "^4.0.1" - "strip-ansi" "^6.0.0" - "v8-to-istanbul" "^9.0.1" - -"@jest/schemas@^29.0.0": - "integrity" "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==" - "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz" - "version" "29.0.0" - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/source-map@^29.2.0": - "integrity" "sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==" - "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "@jridgewell/trace-mapping" "^0.3.15" - "callsites" "^3.0.0" - "graceful-fs" "^4.2.9" - -"@jest/test-result@^29.3.1": - "integrity" "sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/console" "^29.3.1" - "@jest/types" "^29.3.1" - "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" - -"@jest/test-sequencer@^29.3.1": - "integrity" "sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==" - "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/test-result" "^29.3.1" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.3.1" - "slash" "^3.0.0" - -"@jest/transform@^29.3.1": - "integrity" "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.3.1" - "@jridgewell/trace-mapping" "^0.3.15" - "babel-plugin-istanbul" "^6.1.1" - "chalk" "^4.0.0" - "convert-source-map" "^2.0.0" - "fast-json-stable-stringify" "^2.1.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.3.1" - "jest-regex-util" "^29.2.0" - "jest-util" "^29.3.1" - "micromatch" "^4.0.4" - "pirates" "^4.0.4" - "slash" "^3.0.0" - "write-file-atomic" "^4.0.1" - -"@jest/types@^29.3.1": - "integrity" "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/schemas" "^29.0.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - "chalk" "^4.0.0" - -"@jridgewell/gen-mapping@^0.1.0": - "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - "version" "0.1.1" - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0": - "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - "version" "3.1.0" - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": - "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - "version" "1.4.14" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" - "version" "0.3.17" - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": - "integrity" "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==" - "resolved" "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz" - "version" "2.1.8-no-fsevents.3" - -"@sinclair/typebox@^0.24.1": - "integrity" "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" - "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" - "version" "0.24.51" - -"@sinonjs/commons@^1.7.0": - "integrity" "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz" - "version" "1.8.2" - dependencies: - "type-detect" "4.0.8" - -"@sinonjs/fake-timers@^9.1.2": - "integrity" "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz" - "version" "9.1.2" - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@types/babel__core@^7.1.14": - "integrity" "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==" - "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz" - "version" "7.1.20" - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - "integrity" "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==" - "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz" - "version" "7.6.2" - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - "integrity" "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==" - "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz" - "version" "7.4.0" - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - "integrity" "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==" - "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz" - "version" "7.11.1" - dependencies: - "@babel/types" "^7.3.0" - -"@types/graceful-fs@^4.1.3": - "integrity" "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==" - "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" - "version" "4.1.5" - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - "integrity" "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz" - "version" "2.0.3" - -"@types/istanbul-lib-report@*": - "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - "integrity" "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/node@*": - "integrity" "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz" - "version" "14.14.35" - -"@types/prettier@^2.1.5": - "integrity" "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==" - "resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" - -"@types/stack-utils@^2.0.0": - "integrity" "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz" - "version" "2.0.0" - -"@types/webidl-conversions@*": - "integrity" "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - "resolved" "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz" - "version" "7.0.0" - -"@types/whatwg-url@^8.2.1": - "integrity" "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==" - "resolved" "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz" - "version" "8.2.2" - dependencies: - "@types/node" "*" - "@types/webidl-conversions" "*" - -"@types/yargs-parser@*": - "integrity" "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz" - "version" "20.2.0" - -"@types/yargs@^17.0.8": - "integrity" "sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.15.tgz" - "version" "17.0.15" - dependencies: - "@types/yargs-parser" "*" - -"ansi-escapes@^4.2.1": - "integrity" "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "type-fest" "^0.11.0" - -"ansi-regex@^5.0.0", "ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"ansi-styles@^5.0.0": - "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - "version" "5.2.0" - -"anymatch@^3.0.3": - "integrity" "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"anymatch@~3.1.2": - "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - "version" "3.1.3" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"babel-jest@^29.3.1": - "integrity" "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==" - "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/transform" "^29.3.1" - "@types/babel__core" "^7.1.14" - "babel-plugin-istanbul" "^6.1.1" - "babel-preset-jest" "^29.2.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "slash" "^3.0.0" - -"babel-plugin-istanbul@^6.1.1": - "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-instrument" "^5.0.4" - "test-exclude" "^6.0.0" - -"babel-plugin-jest-hoist@^29.2.0": - "integrity" "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==" - "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -"babel-plugin-polyfill-corejs2@^0.3.3": - "integrity" "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - "semver" "^6.1.1" - -"babel-plugin-polyfill-corejs3@^0.6.0": - "integrity" "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - "core-js-compat" "^3.25.1" - -"babel-plugin-polyfill-regenerator@^0.4.1": - "integrity" "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - -"babel-preset-current-node-syntax@^1.0.0": - "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" - "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -"babel-preset-jest@^29.2.0": - "integrity" "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==" - "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "babel-plugin-jest-hoist" "^29.2.0" - "babel-preset-current-node-syntax" "^1.0.0" - -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" - -"base64-js@^1.3.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" - -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" - -"bowser@^2.11.0": - "integrity" "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" - "resolved" "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz" - "version" "2.11.0" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"braces@^3.0.2", "braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"browserslist@^4.21.3", "browserslist@^4.21.4", "browserslist@>= 4.21.0": - "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" - "version" "4.21.4" - dependencies: - "caniuse-lite" "^1.0.30001400" - "electron-to-chromium" "^1.4.251" - "node-releases" "^2.0.6" - "update-browserslist-db" "^1.0.9" - -"bser@2.1.1": - "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" - "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "node-int64" "^0.4.0" - -"bson@^4.7.0": - "integrity" "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==" - "resolved" "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz" - "version" "4.7.0" - dependencies: - "buffer" "^5.6.0" - -"buffer-from@^1.0.0": - "integrity" "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" - "version" "1.1.1" - -"buffer@^5.6.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" - -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" - -"camelcase@^5.3.1": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelcase@^6.2.0": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" - -"caniuse-lite@^1.0.30001400": - "integrity" "sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz" - "version" "1.0.30001435" - -"chalk@^2.0.0": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^4.0.0": - "integrity" "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"char-regex@^1.0.2": - "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - "version" "1.0.2" - -"chokidar@^3.4.0": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" - dependencies: - "anymatch" "~3.1.2" - "braces" "~3.0.2" - "glob-parent" "~5.1.2" - "is-binary-path" "~2.1.0" - "is-glob" "~4.0.1" - "normalize-path" "~3.0.0" - "readdirp" "~3.6.0" - optionalDependencies: - "fsevents" "~2.3.2" - -"ci-info@^3.2.0": - "integrity" "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz" - "version" "3.7.0" - -"cjs-module-lexer@^1.0.0": - "integrity" "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" - "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" - "version" "1.2.2" - -"cliui@^8.0.1": - "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - "version" "8.0.1" - dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.1" - "wrap-ansi" "^7.0.0" - -"co@^4.6.0": - "integrity" "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - "version" "4.6.0" - -"collect-v8-coverage@^1.0.0": - "integrity" "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" - "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" - "version" "1.0.1" - -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"commander@^4.0.1": - "integrity" "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - "version" "4.1.1" - -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"convert-source-map@^1.1.0": - "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - "version" "1.9.0" - -"convert-source-map@^1.6.0", "convert-source-map@^1.7.0": - "integrity" "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "safe-buffer" "~5.1.1" - -"convert-source-map@^2.0.0": - "integrity" "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" - "version" "2.0.0" - -"core-js-compat@^3.25.1": - "integrity" "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==" - "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz" - "version" "3.26.1" - dependencies: - "browserslist" "^4.21.4" - -"cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"debug@^4.1.0", "debug@^4.1.1", "debug@4.x": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"dedent@^0.7.0": - "integrity" "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" - "resolved" "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" - "version" "0.7.0" - -"deepmerge@^4.2.2": - "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - "version" "4.2.2" - -"denque@^2.1.0": - "integrity" "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" - "resolved" "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" - "version" "2.1.0" - -"detect-newline@^3.0.0": - "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" - "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - "version" "3.1.0" - -"diff-sequences@^29.3.1": - "integrity" "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz" - "version" "29.3.1" - -"electron-to-chromium@^1.4.251": - "integrity" "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" - "version" "1.4.284" - -"emittery@^0.13.1": - "integrity" "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" - "version" "0.13.1" - -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" - -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@^2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" - -"esprima@^4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" - -"execa@^5.0.0": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.0" - "human-signals" "^2.1.0" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.1" - "onetime" "^5.1.2" - "signal-exit" "^3.0.3" - "strip-final-newline" "^2.0.0" - -"exit@^0.1.2": - "integrity" "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" - "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - "version" "0.1.2" - -"expect@^29.3.1": - "integrity" "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==" - "resolved" "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/expect-utils" "^29.3.1" - "jest-get-type" "^29.2.0" - "jest-matcher-utils" "^29.3.1" - "jest-message-util" "^29.3.1" - "jest-util" "^29.3.1" - -"fast-json-stable-stringify@^2.1.0": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" - -"fast-xml-parser@4.0.11": - "integrity" "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==" - "resolved" "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz" - "version" "4.0.11" - dependencies: - "strnum" "^1.0.5" - -"fb-watchman@^2.0.0": - "integrity" "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==" - "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "bser" "2.1.1" - -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"find-up@^4.0.0", "find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"fs-readdir-recursive@^1.1.0": - "integrity" "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" - "resolved" "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" - "version" "1.1.0" - -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"fsevents@^2.3.2", "fsevents@~2.3.2": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"get-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" - -"get-package-type@^0.1.0": - "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - "version" "0.1.0" - -"get-stream@^6.0.0": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" - -"glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob@^7.1.3", "glob@^7.1.4": - "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - "version" "7.1.6" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.2.0": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"globals@^11.1.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"graceful-fs@^4.2.9": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" - -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"html-escaper@^2.0.0": - "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - "version" "2.0.2" - -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" - -"ieee754@^1.1.13": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" - -"import-local@^3.0.2": - "integrity" "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==" - "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "pkg-dir" "^4.2.0" - "resolve-cwd" "^3.0.0" - -"imurmurhash@^0.1.4": - "integrity" "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"inflight@^1.0.4": - "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@2": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"ip@^2.0.0": - "integrity" "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - "resolved" "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" - "version" "2.0.0" - -"is-arrayish@^0.2.1": - "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "binary-extensions" "^2.0.0" - -"is-core-module@^2.9.0": - "integrity" "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" - "version" "2.11.0" - dependencies: - "has" "^1.0.3" - -"is-extglob@^2.1.1": - "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-generator-fn@^2.0.0": - "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - "version" "2.1.0" - -"is-glob@^4.0.1", "is-glob@~4.0.1": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "is-extglob" "^2.1.1" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-stream@^2.0.0": - "integrity" "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" - "version" "2.0.0" - -"isexe@^2.0.0": - "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"istanbul-lib-coverage@^3.0.0": - "integrity" "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz" - "version" "3.0.0" - -"istanbul-lib-coverage@^3.2.0": - "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - "version" "3.2.0" - -"istanbul-lib-instrument@^5.0.4", "istanbul-lib-instrument@^5.1.0": - "integrity" "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-coverage" "^3.2.0" - "semver" "^6.3.0" - -"istanbul-lib-report@^3.0.0": - "integrity" "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "istanbul-lib-coverage" "^3.0.0" - "make-dir" "^3.0.0" - "supports-color" "^7.1.0" - -"istanbul-lib-source-maps@^4.0.0": - "integrity" "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==" - "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "debug" "^4.1.1" - "istanbul-lib-coverage" "^3.0.0" - "source-map" "^0.6.1" - -"istanbul-reports@^3.1.3": - "integrity" "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==" - "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "html-escaper" "^2.0.0" - "istanbul-lib-report" "^3.0.0" - -"jest-changed-files@^29.2.0": - "integrity" "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==" - "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "execa" "^5.0.0" - "p-limit" "^3.1.0" - -"jest-circus@^29.3.1": - "integrity" "sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==" - "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/environment" "^29.3.1" - "@jest/expect" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/types" "^29.3.1" - "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "dedent" "^0.7.0" - "is-generator-fn" "^2.0.0" - "jest-each" "^29.3.1" - "jest-matcher-utils" "^29.3.1" - "jest-message-util" "^29.3.1" - "jest-runtime" "^29.3.1" - "jest-snapshot" "^29.3.1" - "jest-util" "^29.3.1" - "p-limit" "^3.1.0" - "pretty-format" "^29.3.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-cli@^29.3.1": - "integrity" "sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==" - "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/core" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/types" "^29.3.1" - "chalk" "^4.0.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "import-local" "^3.0.2" - "jest-config" "^29.3.1" - "jest-util" "^29.3.1" - "jest-validate" "^29.3.1" - "prompts" "^2.0.1" - "yargs" "^17.3.1" - -"jest-config@^29.3.1": - "integrity" "sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==" - "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.3.1" - "@jest/types" "^29.3.1" - "babel-jest" "^29.3.1" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "deepmerge" "^4.2.2" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-circus" "^29.3.1" - "jest-environment-node" "^29.3.1" - "jest-get-type" "^29.2.0" - "jest-regex-util" "^29.2.0" - "jest-resolve" "^29.3.1" - "jest-runner" "^29.3.1" - "jest-util" "^29.3.1" - "jest-validate" "^29.3.1" - "micromatch" "^4.0.4" - "parse-json" "^5.2.0" - "pretty-format" "^29.3.1" - "slash" "^3.0.0" - "strip-json-comments" "^3.1.1" - -"jest-diff@^29.3.1": - "integrity" "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^29.3.1" - "jest-get-type" "^29.2.0" - "pretty-format" "^29.3.1" - -"jest-docblock@^29.2.0": - "integrity" "sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==" - "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "detect-newline" "^3.0.0" - -"jest-each@^29.3.1": - "integrity" "sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==" - "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/types" "^29.3.1" - "chalk" "^4.0.0" - "jest-get-type" "^29.2.0" - "jest-util" "^29.3.1" - "pretty-format" "^29.3.1" - -"jest-environment-node@^29.3.1": - "integrity" "sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==" - "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/environment" "^29.3.1" - "@jest/fake-timers" "^29.3.1" - "@jest/types" "^29.3.1" - "@types/node" "*" - "jest-mock" "^29.3.1" - "jest-util" "^29.3.1" - -"jest-get-type@^29.2.0": - "integrity" "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz" - "version" "29.2.0" - -"jest-haste-map@^29.3.1": - "integrity" "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/types" "^29.3.1" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-regex-util" "^29.2.0" - "jest-util" "^29.3.1" - "jest-worker" "^29.3.1" - "micromatch" "^4.0.4" - "walker" "^1.0.8" - optionalDependencies: - "fsevents" "^2.3.2" - -"jest-leak-detector@^29.3.1": - "integrity" "sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==" - "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "jest-get-type" "^29.2.0" - "pretty-format" "^29.3.1" - -"jest-matcher-utils@^29.3.1": - "integrity" "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "chalk" "^4.0.0" - "jest-diff" "^29.3.1" - "jest-get-type" "^29.2.0" - "pretty-format" "^29.3.1" - -"jest-message-util@^29.3.1": - "integrity" "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.3.1" - "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^29.3.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-mock@^29.3.1": - "integrity" "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/types" "^29.3.1" - "@types/node" "*" - "jest-util" "^29.3.1" - -"jest-pnp-resolver@^1.2.2": - "integrity" "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" - "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" - "version" "1.2.2" - -"jest-regex-util@^29.2.0": - "integrity" "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz" - "version" "29.2.0" - -"jest-resolve-dependencies@^29.3.1": - "integrity" "sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==" - "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "jest-regex-util" "^29.2.0" - "jest-snapshot" "^29.3.1" - -"jest-resolve@*", "jest-resolve@^29.3.1": - "integrity" "sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.3.1" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^29.3.1" - "jest-validate" "^29.3.1" - "resolve" "^1.20.0" - "resolve.exports" "^1.1.0" - "slash" "^3.0.0" - -"jest-runner@^29.3.1": - "integrity" "sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==" - "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/console" "^29.3.1" - "@jest/environment" "^29.3.1" - "@jest/test-result" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" - "@types/node" "*" - "chalk" "^4.0.0" - "emittery" "^0.13.1" - "graceful-fs" "^4.2.9" - "jest-docblock" "^29.2.0" - "jest-environment-node" "^29.3.1" - "jest-haste-map" "^29.3.1" - "jest-leak-detector" "^29.3.1" - "jest-message-util" "^29.3.1" - "jest-resolve" "^29.3.1" - "jest-runtime" "^29.3.1" - "jest-util" "^29.3.1" - "jest-watcher" "^29.3.1" - "jest-worker" "^29.3.1" - "p-limit" "^3.1.0" - "source-map-support" "0.5.13" - -"jest-runtime@^29.3.1": - "integrity" "sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==" - "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/environment" "^29.3.1" - "@jest/fake-timers" "^29.3.1" - "@jest/globals" "^29.3.1" - "@jest/source-map" "^29.2.0" - "@jest/test-result" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" - "@types/node" "*" - "chalk" "^4.0.0" - "cjs-module-lexer" "^1.0.0" - "collect-v8-coverage" "^1.0.0" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.3.1" - "jest-message-util" "^29.3.1" - "jest-mock" "^29.3.1" - "jest-regex-util" "^29.2.0" - "jest-resolve" "^29.3.1" - "jest-snapshot" "^29.3.1" - "jest-util" "^29.3.1" - "slash" "^3.0.0" - "strip-bom" "^4.0.0" - -"jest-snapshot@^29.3.1": - "integrity" "sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==" - "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.3.1" - "@jest/transform" "^29.3.1" - "@jest/types" "^29.3.1" - "@types/babel__traverse" "^7.0.6" - "@types/prettier" "^2.1.5" - "babel-preset-current-node-syntax" "^1.0.0" - "chalk" "^4.0.0" - "expect" "^29.3.1" - "graceful-fs" "^4.2.9" - "jest-diff" "^29.3.1" - "jest-get-type" "^29.2.0" - "jest-haste-map" "^29.3.1" - "jest-matcher-utils" "^29.3.1" - "jest-message-util" "^29.3.1" - "jest-util" "^29.3.1" - "natural-compare" "^1.4.0" - "pretty-format" "^29.3.1" - "semver" "^7.3.5" - -"jest-util@^29.3.1": - "integrity" "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/types" "^29.3.1" - "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" - -"jest-validate@^29.3.1": - "integrity" "sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==" - "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/types" "^29.3.1" - "camelcase" "^6.2.0" - "chalk" "^4.0.0" - "jest-get-type" "^29.2.0" - "leven" "^3.1.0" - "pretty-format" "^29.3.1" - -"jest-watcher@^29.3.1": - "integrity" "sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/test-result" "^29.3.1" - "@jest/types" "^29.3.1" - "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.13.1" - "jest-util" "^29.3.1" - "string-length" "^4.0.1" - -"jest-worker@^29.3.1": - "integrity" "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@types/node" "*" - "jest-util" "^29.3.1" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest@^29.3.1": - "integrity" "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==" - "resolved" "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/core" "^29.3.1" - "@jest/types" "^29.3.1" - "import-local" "^3.0.2" - "jest-cli" "^29.3.1" - -"js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" - -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" - -"json-parse-even-better-errors@^2.3.0": - "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - "version" "2.3.1" - -"json5@^2.2.1": - "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - "version" "2.2.1" - -"kareem@2.4.1": - "integrity" "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" - "resolved" "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz" - "version" "2.4.1" - -"kleur@^3.0.3": - "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - "version" "3.0.3" - -"leven@^3.1.0": - "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - "version" "3.1.0" - -"lines-and-columns@^1.1.6": - "integrity" "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" - "version" "1.1.6" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"lodash.debounce@^4.0.8": - "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash@^4.17.19": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"make-dir@^2.1.0": - "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "pify" "^4.0.1" - "semver" "^5.6.0" - -"make-dir@^3.0.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "semver" "^6.0.0" - -"makeerror@1.0.12": - "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" - "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - "version" "1.0.12" - dependencies: - "tmpl" "1.0.5" - -"memory-pager@^1.0.2": - "integrity" "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" - "resolved" "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" - "version" "1.5.0" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"micromatch@^4.0.4": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" - -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"minimatch@^3.0.4", "minimatch@^3.1.1": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "brace-expansion" "^1.1.7" - -"mongodb-connection-string-url@^2.5.4": - "integrity" "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==" - "resolved" "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz" - "version" "2.6.0" - dependencies: - "@types/whatwg-url" "^8.2.1" - "whatwg-url" "^11.0.0" - -"mongodb@4.11.0": - "integrity" "sha512-9l9n4Nk2BYZzljW3vHah3Z0rfS5npKw6ktnkmFgTcnzaXH1DRm3pDl6VMHu84EVb1lzmSaJC4OzWZqTkB5i2wg==" - "resolved" "https://registry.npmjs.org/mongodb/-/mongodb-4.11.0.tgz" - "version" "4.11.0" - dependencies: - "bson" "^4.7.0" - "denque" "^2.1.0" - "mongodb-connection-string-url" "^2.5.4" - "socks" "^2.7.1" - optionalDependencies: - "@aws-sdk/credential-providers" "^3.186.0" - "saslprep" "^1.0.3" - -"mongoose@>=4.9.10": - "integrity" "sha512-3ppxBxDUIoQKYISVpAg7hjmV1lkGBN3tN9AkQr1Vqc68L5k+Bo+uyfOhpbCFpCf5JZLcEO4cmuB5YX+d9h3plw==" - "resolved" "https://registry.npmjs.org/mongoose/-/mongoose-6.7.5.tgz" - "version" "6.7.5" - dependencies: - "bson" "^4.7.0" - "kareem" "2.4.1" - "mongodb" "4.11.0" - "mpath" "0.9.0" - "mquery" "4.0.3" - "ms" "2.1.3" - "sift" "16.0.1" - -"mpath@0.9.0": - "integrity" "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" - "resolved" "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz" - "version" "0.9.0" - -"mquery@4.0.3": - "integrity" "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==" - "resolved" "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "debug" "4.x" - -"ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"ms@2.1.3": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"natural-compare@^1.4.0": - "integrity" "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" - -"node-int64@^0.4.0": - "integrity" "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" - "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - "version" "0.4.0" - -"node-releases@^2.0.6": - "integrity" "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" - "version" "2.0.6" - -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "path-key" "^3.0.0" - -"once@^1.3.0": - "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"onetime@^5.1.2": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "mimic-fn" "^2.1.0" - -"p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^3.1.0": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "yocto-queue" "^0.1.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "p-limit" "^2.2.0" - -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" - -"parse-json@^5.2.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "@babel/code-frame" "^7.0.0" - "error-ex" "^1.3.1" - "json-parse-even-better-errors" "^2.3.0" - "lines-and-columns" "^1.1.6" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0": - "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-key@^3.0.0", "path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" - -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" - -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3", "picomatch@^2.3.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" - -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" - -"pirates@^4.0.4": - "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" - "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - "version" "4.0.5" - -"pkg-dir@^4.2.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "find-up" "^4.0.0" - -"prettier@^2.8.0": - "integrity" "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz" - "version" "2.8.0" - -"pretty-format@^29.3.1": - "integrity" "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz" - "version" "29.3.1" - dependencies: - "@jest/schemas" "^29.0.0" - "ansi-styles" "^5.0.0" - "react-is" "^18.0.0" - -"prompts@^2.0.1": - "integrity" "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" - "version" "2.4.0" - dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" - -"punycode@^2.1.1": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" - -"react-is@^18.0.0": - "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - "version" "18.2.0" - -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "picomatch" "^2.2.1" - -"regenerate-unicode-properties@^10.1.0": - "integrity" "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==" - "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "regenerate" "^1.4.2" - -"regenerate@^1.4.2": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" - -"regenerator-runtime@^0.13.11": - "integrity" "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - "version" "0.13.11" - -"regenerator-transform@^0.15.1": - "integrity" "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" - "version" "0.15.1" - dependencies: - "@babel/runtime" "^7.8.4" - -"regexpu-core@^5.2.1": - "integrity" "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz" - "version" "5.2.2" - dependencies: - "regenerate" "^1.4.2" - "regenerate-unicode-properties" "^10.1.0" - "regjsgen" "^0.7.1" - "regjsparser" "^0.9.1" - "unicode-match-property-ecmascript" "^2.0.0" - "unicode-match-property-value-ecmascript" "^2.1.0" - -"regjsgen@^0.7.1": - "integrity" "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" - "version" "0.7.1" - -"regjsparser@^0.9.1": - "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - "version" "0.9.1" - dependencies: - "jsesc" "~0.5.0" - -"require-directory@^2.1.1": - "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" - -"resolve-cwd@^3.0.0": - "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" - "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "resolve-from" "^5.0.0" - -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" - -"resolve.exports@^1.1.0": - "integrity" "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==" - "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" - "version" "1.1.0" - -"resolve@^1.14.2", "resolve@^1.20.0": - "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - "version" "1.22.1" - dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"safe-buffer@~5.1.1": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"saslprep@^1.0.3": - "integrity" "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==" - "resolved" "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "sparse-bitfield" "^3.0.3" - -"semver@^5.6.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^6.0.0", "semver@^6.1.1", "semver@^6.1.2", "semver@^6.3.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^7.3.5": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" - dependencies: - "lru-cache" "^6.0.0" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"sift@16.0.1": - "integrity" "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - "resolved" "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz" - "version" "16.0.1" - -"signal-exit@^3.0.3", "signal-exit@^3.0.7": - "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - "version" "3.0.7" - -"sisteransi@^1.0.5": - "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - "version" "1.0.5" - -"slash@^2.0.0": - "integrity" "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - "resolved" "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" - "version" "2.0.0" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"smart-buffer@^4.2.0": - "integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - "resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" - "version" "4.2.0" - -"socks@^2.7.1": - "integrity" "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==" - "resolved" "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "ip" "^2.0.0" - "smart-buffer" "^4.2.0" - -"source-map-support@0.5.13": - "integrity" "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" - "version" "0.5.13" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map@^0.6.0", "source-map@^0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"sparse-bitfield@^3.0.3": - "integrity" "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==" - "resolved" "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "memory-pager" "^1.0.2" - -"sprintf-js@~1.0.2": - "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"stack-utils@^2.0.3": - "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - "version" "2.0.6" - dependencies: - "escape-string-regexp" "^2.0.0" - -"string-length@^4.0.1": - "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "char-regex" "^1.0.2" - "strip-ansi" "^6.0.0" - -"string-width@^4.1.0", "string-width@^4.2.0": - "integrity" "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz" - "version" "4.2.2" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.0" - -"string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"strip-ansi@^6.0.0": - "integrity" "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "ansi-regex" "^5.0.0" - -"strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "ansi-regex" "^5.0.1" - -"strip-bom@^4.0.0": - "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - "version" "4.0.0" - -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" - -"strip-json-comments@^3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" - -"strnum@^1.0.5": - "integrity" "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" - "resolved" "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" - "version" "1.0.5" - -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^8.0.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" - -"test-exclude@^6.0.0": - "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "@istanbuljs/schema" "^0.1.2" - "glob" "^7.1.4" - "minimatch" "^3.0.4" - -"tmpl@1.0.5": - "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - "version" "1.0.5" - -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"tr46@^3.0.0": - "integrity" "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "punycode" "^2.1.1" - -"tslib@^1.11.1": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslib@^2.3.1": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"type-detect@4.0.8": - "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - "version" "4.0.8" - -"type-fest@^0.11.0": - "integrity" "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz" - "version" "0.11.0" - -"unicode-canonical-property-names-ecmascript@^2.0.0": - "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" - "version" "2.0.0" - -"unicode-match-property-ecmascript@^2.0.0": - "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" - "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "unicode-canonical-property-names-ecmascript" "^2.0.0" - "unicode-property-aliases-ecmascript" "^2.0.0" - -"unicode-match-property-value-ecmascript@^2.1.0": - "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" - "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"unicode-property-aliases-ecmascript@^2.0.0": - "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"update-browserslist-db@^1.0.9": - "integrity" "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" - -"uuid@^8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" - -"v8-to-istanbul@^9.0.1": - "integrity" "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==" - "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" - "version" "9.0.1" - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - "convert-source-map" "^1.6.0" - -"walker@^1.0.8": - "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" - "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "makeerror" "1.0.12" - -"webidl-conversions@^7.0.0": - "integrity" "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" - "version" "7.0.0" - -"whatwg-url@^11.0.0": - "integrity" "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" - "version" "11.0.0" - dependencies: - "tr46" "^3.0.0" - "webidl-conversions" "^7.0.0" - -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "isexe" "^2.0.0" - -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrappy@1": - "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write-file-atomic@^4.0.1": - "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "imurmurhash" "^0.1.4" - "signal-exit" "^3.0.7" - -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yargs-parser@^21.1.1": - "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - "version" "21.1.1" - -"yargs@^17.3.1": - "integrity" "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" - "version" "17.6.2" - dependencies: - "cliui" "^8.0.1" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.3" - "y18n" "^5.0.5" - "yargs-parser" "^21.1.1" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0"