From 2f201bcdfa60516097de4a28cabea6da2120a97a Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:36:07 -0700 Subject: [PATCH 001/414] Create .github/workflows/npm-publish.yml --- .github/workflows/npm-publish.yml | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/npm-publish.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml new file mode 100644 index 00000000..4f051d3e --- /dev/null +++ b/.github/workflows/npm-publish.yml @@ -0,0 +1,33 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Node.js Package + +on: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - run: npm ci + - run: npm test + + publish-npm: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + registry-url: https://registry.npmjs.org/ + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.npm_token}} From 1da79eb547740d93669767ee52188573b73cec07 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:36:29 -0700 Subject: [PATCH 002/414] Delete codeql.yml --- .github/workflows/codeql.yml | 76 ------------------------------------ 1 file changed, 76 deletions(-) delete mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 2d08f4a2..00000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,76 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [ "dev" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "dev" ] - schedule: - - cron: '15 9 * * 5' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'javascript' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Use only 'java' to analyze code written in Java, Kotlin or both - # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - - # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # â„šī¸ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - with: - category: "/language:${{matrix.language}}" From 6cb4f2a81aed2992779a728730a37f1fa65d86cc Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:39:23 -0700 Subject: [PATCH 003/414] Update node.js.yml --- .github/workflows/node.js.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index dca91910..4bc3bd01 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -6,6 +6,11 @@ name: Node.js CI on: push: branches: ["dev"] + paths: + - "src/**" + - "tests/**" + - "package.json" + - "tsconfig.json" pull_request: branches: ["dev"] From e80d0b8ef635b0c2b697113cf14fc7e779e5b385 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sat, 25 Mar 2023 22:40:39 -0400 Subject: [PATCH 004/414] Changing scripts to use build --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8b08a5f3..7cf47429 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,8 @@ "build": "tsc", "lint": "eslint --ext \".ts\" ./src", "prettier": "prettier --write ./src", - "prepublishOnly": "tsc", - "prepare": "tsc", + "prepublishOnly": "npm run build", + "prepare": "npm run build", "docgen": "typedoc" }, "lint-staged": { From 838ca01a83e45564307d65db459c180030f2c4f3 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:41:13 -0700 Subject: [PATCH 005/414] Update npm-publish.yml --- .github/workflows/npm-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 4f051d3e..648cd6ba 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -6,6 +6,7 @@ name: Node.js Package on: release: types: [created] + workflow_dispatch: jobs: build: From d3082fdaab6dc29a705a4b4a32b7c37b2f6108a6 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 08:09:27 -0700 Subject: [PATCH 006/414] Delete npm-publish.yml --- .github/workflows/npm-publish.yml | 34 ------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 .github/workflows/npm-publish.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml deleted file mode 100644 index 648cd6ba..00000000 --- a/.github/workflows/npm-publish.yml +++ /dev/null @@ -1,34 +0,0 @@ -# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created -# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages - -name: Node.js Package - -on: - release: - types: [created] - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - run: npm ci - - run: npm test - - publish-npm: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - registry-url: https://registry.npmjs.org/ - - run: npm ci - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} From 54069fdb0d5e82ca0ab437f8ef415f6cfc1f79c7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 15:58:50 +0000 Subject: [PATCH 007/414] Add renovate.json --- renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000..39a2b6e9 --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base" + ] +} From a4246826e0522fbe30baeec52c8a1e0a6849cfc3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 16:02:14 +0000 Subject: [PATCH 008/414] Update actions/deploy-pages action to v2 --- .github/workflows/docgen-static.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docgen-static.yml b/.github/workflows/docgen-static.yml index 9535dec6..f2724340 100644 --- a/.github/workflows/docgen-static.yml +++ b/.github/workflows/docgen-static.yml @@ -49,4 +49,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v2 From bfd09643104a299c1ebab44b4fada2d288b9c6b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 16:02:27 +0000 Subject: [PATCH 009/414] Update dependency @faker-js/faker to v7 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 542a6efb..3c4b8464 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@faker-js/faker": "^6.1.2", + "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", "@types/jest": "^27.0.3", "@types/lodash": "^4.14.178", @@ -1829,9 +1829,9 @@ } }, "node_modules/@faker-js/faker": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-6.3.1.tgz", - "integrity": "sha512-8YXBE2ZcU/pImVOHX7MWrSR/X5up7t6rPWZlk34RwZEcdr3ua6X+32pSd6XuOQRN+vbuvYNfA6iey8NbrjuMFQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", + "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", "dev": true, "engines": { "node": ">=14.0.0", @@ -8735,9 +8735,9 @@ "dev": true }, "@faker-js/faker": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-6.3.1.tgz", - "integrity": "sha512-8YXBE2ZcU/pImVOHX7MWrSR/X5up7t6rPWZlk34RwZEcdr3ua6X+32pSd6XuOQRN+vbuvYNfA6iey8NbrjuMFQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", + "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", "dev": true }, "@humanwhocodes/config-array": { diff --git a/package.json b/package.json index 7cf47429..f6d51f61 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "out/index.js", "types": "out/index.d.ts", "devDependencies": { - "@faker-js/faker": "^6.1.2", + "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", "@types/jest": "^27.0.3", "@types/lodash": "^4.14.178", From 67222423321a5c33ad94fd38a838ed745e47efc1 Mon Sep 17 00:00:00 2001 From: DarkenLM Date: Sun, 26 Mar 2023 17:18:27 +0100 Subject: [PATCH 010/414] Added DriverUnion --- src/drivers/DriverUnion.ts | 101 +++++++++++++++++++++++++++++++++++++ src/index.ts | 1 + 2 files changed, 102 insertions(+) create mode 100644 src/drivers/DriverUnion.ts diff --git a/src/drivers/DriverUnion.ts b/src/drivers/DriverUnion.ts new file mode 100644 index 00000000..256dc853 --- /dev/null +++ b/src/drivers/DriverUnion.ts @@ -0,0 +1,101 @@ +import { IDriver } from "./IDriver"; + +/** + * DriverUnion - Union of Drivers + * + * This driver allows the usage of multiple drivers and multiple driver instances at the same time. + * Useful for redundancies and live backups. + * + * The main driver is the driver used for all operations, while the rest of the drivers are called + * mirror drivers, and are only used for data reflection. + * By the default, the main driver is the first one the union is initialized with. + * This can be changed by modifying the {@link DriverUnion.main | `main` property} on the union instance. + * + * @example + * const SQLiteInstance = new SqliteDriver("./json.sqlite") + * const JSONInstance = new JSONDriver("./backup.json"); + * const DriverUnionInstance = new DriverUnion(SQLiteInstance, JSONInstance); + * const db = new QuickDB({ driver: DriverUnionInstance }) + * + * // Regular db usage + */ +export class DriverUnion implements IDriver { + private drivers: IDriver[]; + private _main: number; + + /** @property {number} main Index of the main driver. */ + public get main(): number { + return this._main; + } + public set main(value: number) { + if (!(value in this.drivers)) return; + + this._main = value; + } + + constructor(main: IDriver, ...mirrors: IDriver[]) { + this.drivers = [main, ...mirrors]; + this._main = 0; + } + + public async prepare(table: string): Promise { + for (const driver of this.drivers) await driver.prepare(table); + } + + public async getAllRows( + table: string + ): Promise<{ id: string; value: any }[]> { + const main = this.drivers[this._main]; + return await main.getAllRows(table); + } + + public async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { + const main = this.drivers[this._main]; + return await main.getRowByKey(table, key); + } + + public async setRowByKey( + table: string, + key: string, + value: any, + update: boolean + ): Promise { + let val: T = undefined as T; // It's guaranteed that at least one driver is present. + + for (let i = 0; i < this.drivers.length; i++) { + const driver = this.drivers[i]; + + const res = await driver.setRowByKey(table, key, value, update); + if (i === this._main) val = res; + } + + return val; + } + + public async deleteAllRows(table: string): Promise { + let rows = 0; + for (let i = 0; i < this.drivers.length; i++) { + const driver = this.drivers[i]; + + const delRows = await driver.deleteAllRows(table); + if (i === this._main) rows = delRows; + } + + return rows; + } + + public async deleteRowByKey(table: string, key: string): Promise { + let rows = 0; + for (let i = 0; i < this.drivers.length; i++) { + const driver = this.drivers[i]; + + const delRows = await driver.deleteRowByKey(table, key); + if (i === this._main) rows = delRows; + } + + return rows; + } +} diff --git a/src/index.ts b/src/index.ts index 6200afe9..79356863 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,6 +8,7 @@ export { SqliteDriver } from "./drivers/SqliteDriver"; export { MySQLDriver, Config } from "./drivers/MySQLDriver"; export { MemoryDriver, Table } from "./drivers/MemoryDriver"; export { JSONDriver, DataLike } from "./drivers/JSONDriver"; +export { DriverUnion } from "./drivers/DriverUnion"; export interface IQuickDBOptions { table?: string; From 0311f94b03530d13f1db127bfd9ba8e1944231f6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 17:47:00 +0000 Subject: [PATCH 011/414] Update dependency @types/jest to v29 --- package-lock.json | 239 +++++++++++++--------------------------------- package.json | 2 +- 2 files changed, 69 insertions(+), 172 deletions(-) diff --git a/package-lock.json b/package-lock.json index 542a6efb..34ee5d49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "devDependencies": { "@faker-js/faker": "^6.1.2", "@types/better-sqlite3": "^7.4.2", - "@types/jest": "^27.0.3", + "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", @@ -2492,15 +2492,47 @@ } }, "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", "dev": true, "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -3404,15 +3436,6 @@ "node": ">=8" } }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4717,30 +4740,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-diff/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-docblock": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", @@ -4897,30 +4896,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-message-util": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", @@ -6140,32 +6115,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -6258,12 +6207,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -9275,13 +9218,38 @@ } }, "@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", "dev": true, "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + } } }, "@types/json-schema": { @@ -9910,12 +9878,6 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -10886,26 +10848,6 @@ } } }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - } - } - }, "jest-docblock": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", @@ -11028,26 +10970,6 @@ } } }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - } - } - }, "jest-message-util": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", @@ -11989,25 +11911,6 @@ "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -12066,12 +11969,6 @@ } } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", diff --git a/package.json b/package.json index 7cf47429..6df708be 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "devDependencies": { "@faker-js/faker": "^6.1.2", "@types/better-sqlite3": "^7.4.2", - "@types/jest": "^27.0.3", + "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", From 13a930adaa81b8a8f45b4dd2544c4cae98fdf894 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 17:47:12 +0000 Subject: [PATCH 012/414] Update dependency better-sqlite3 to v8 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 542a6efb..89b7aba2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^7.4.5", + "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", @@ -3005,9 +3005,9 @@ ] }, "node_modules/better-sqlite3": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.2.tgz", - "integrity": "sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", + "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -9627,9 +9627,9 @@ "dev": true }, "better-sqlite3": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.2.tgz", - "integrity": "sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", + "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", "dev": true, "requires": { "bindings": "^1.5.0", diff --git a/package.json b/package.json index 7cf47429..41da7637 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^7.4.5", + "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", From 567db7e04d0b8ee1c16d3fcfff574a92d21a198f Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 13:53:51 -0400 Subject: [PATCH 013/414] Fixed problem with faker-js v7 --- tests/delete.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/delete.test.ts b/tests/delete.test.ts index 4310d385..2b253663 100644 --- a/tests/delete.test.ts +++ b/tests/delete.test.ts @@ -1,4 +1,4 @@ -import faker from "@faker-js/faker"; +import { faker } from "@faker-js/faker"; import { QuickDB } from "../src"; import { EntryGenerator } from "./generators/EntryGenerator"; import { SqliteDriverMock } from "./mocks/SqliteDriver"; From 84b616911fe2a4881977e1e32ea4b9338819b83c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 18:04:31 +0000 Subject: [PATCH 014/414] Update dependency mongoose to v7 --- package-lock.json | 290 +++++++++++++++++++++++++++++++++++----------- package.json | 2 +- 2 files changed, 225 insertions(+), 67 deletions(-) diff --git a/package-lock.json b/package-lock.json index 77f3ba3c..9e7ed787 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^6.9.1", + "mongoose": "^7.0.0", "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", @@ -51,6 +51,7 @@ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^1.11.1" } @@ -60,7 +61,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/sha256-browser": { "version": "3.0.0", @@ -68,6 +70,7 @@ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -84,7 +87,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/sha256-js": { "version": "3.0.0", @@ -92,6 +96,7 @@ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -103,7 +108,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "3.0.0", @@ -111,6 +117,7 @@ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^1.11.1" } @@ -120,7 +127,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/util": { "version": "3.0.0", @@ -128,6 +136,7 @@ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -139,7 +148,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-sdk/abort-controller": { "version": "3.296.0", @@ -147,6 +157,7 @@ "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -161,6 +172,7 @@ "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -208,6 +220,7 @@ "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -252,6 +265,7 @@ "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -296,6 +310,7 @@ "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -344,6 +359,7 @@ "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-config-provider": "3.295.0", @@ -360,6 +376,7 @@ "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -376,6 +393,7 @@ "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -391,6 +409,7 @@ "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/property-provider": "3.296.0", @@ -408,6 +427,7 @@ "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -429,6 +449,7 @@ "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -451,6 +472,7 @@ "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -467,6 +489,7 @@ "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-sso": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -485,6 +508,7 @@ "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -500,6 +524,7 @@ "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/client-sso": "3.299.0", @@ -526,6 +551,7 @@ "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/querystring-builder": "3.296.0", @@ -540,6 +566,7 @@ "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-buffer-from": "3.295.0", @@ -556,6 +583,7 @@ "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -567,6 +595,7 @@ "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -580,6 +609,7 @@ "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -595,6 +625,7 @@ "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/middleware-serde": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -612,6 +643,7 @@ "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -627,6 +659,7 @@ "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -641,6 +674,7 @@ "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -656,6 +690,7 @@ "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/service-error-classification": "3.296.0", @@ -675,6 +710,7 @@ "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/middleware-signing": "3.299.0", "@aws-sdk/types": "3.296.0", @@ -690,6 +726,7 @@ "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -704,6 +741,7 @@ "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -722,6 +760,7 @@ "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -735,6 +774,7 @@ "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -751,6 +791,7 @@ "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -767,6 +808,7 @@ "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/abort-controller": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -784,6 +826,7 @@ "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -798,6 +841,7 @@ "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -812,6 +856,7 @@ "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-uri-escape": "3.295.0", @@ -827,6 +872,7 @@ "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -841,6 +887,7 @@ "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", "dev": true, "optional": true, + "peer": true, "engines": { "node": ">=14.0.0" } @@ -851,6 +898,7 @@ "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -865,6 +913,7 @@ "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/is-array-buffer": "3.295.0", "@aws-sdk/types": "3.296.0", @@ -884,6 +933,7 @@ "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/middleware-stack": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -899,6 +949,7 @@ "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-sso-oidc": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -916,6 +967,7 @@ "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -929,6 +981,7 @@ "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/querystring-parser": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -941,6 +994,7 @@ "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -955,6 +1009,7 @@ "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" } @@ -965,6 +1020,7 @@ "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -978,6 +1034,7 @@ "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/is-array-buffer": "3.295.0", "tslib": "^2.5.0" @@ -992,6 +1049,7 @@ "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1005,6 +1063,7 @@ "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -1021,6 +1080,7 @@ "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/config-resolver": "3.299.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -1039,6 +1099,7 @@ "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -1053,6 +1114,7 @@ "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1066,6 +1128,7 @@ "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1079,6 +1142,7 @@ "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1092,6 +1156,7 @@ "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/service-error-classification": "3.296.0", "tslib": "^2.5.0" @@ -1106,6 +1171,7 @@ "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1119,6 +1185,7 @@ "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "bowser": "^2.11.0", @@ -1131,6 +1198,7 @@ "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -1154,6 +1222,7 @@ "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -1168,6 +1237,7 @@ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.3.1" } @@ -3072,7 +3142,8 @@ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -3146,15 +3217,12 @@ } }, "node_modules/bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", + "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", "dev": true, - "dependencies": { - "buffer": "^5.6.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">=14.20.1" } }, "node_modules/buffer": { @@ -3906,6 +3974,7 @@ "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "strnum": "^1.0.5" }, @@ -5628,21 +5697,36 @@ "dev": true }, "node_modules/mongodb": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", - "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", + "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", "dev": true, "dependencies": { - "bson": "^4.7.0", - "mongodb-connection-string-url": "^2.5.4", + "bson": "^5.0.1", + "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" }, "engines": { - "node": ">=12.9.0" + "node": ">=14.20.1" }, "optionalDependencies": { - "@aws-sdk/credential-providers": "^3.186.0", "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "mongodb-client-encryption": "^2.3.0", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } } }, "node_modules/mongodb-connection-string-url": { @@ -5656,21 +5740,21 @@ } }, "node_modules/mongoose": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.4.tgz", - "integrity": "sha512-xCHVVEaOuhZxbthsKYxvHexWafJqWsl03sD7y7uyyt3euLd1sQoDI8DKueeJq9+hrbWkMkAGbGzgFPTIRqenPg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", + "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", "dev": true, "dependencies": { - "bson": "^4.7.0", + "bson": "^5.0.1", "kareem": "2.5.1", - "mongodb": "4.14.0", + "mongodb": "5.1.0", "mpath": "0.9.0", - "mquery": "4.0.3", + "mquery": "5.0.0", "ms": "2.1.3", "sift": "16.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -5693,15 +5777,15 @@ } }, "node_modules/mquery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", - "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", "dev": true, "dependencies": { "debug": "4.x" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/ms": { @@ -6689,7 +6773,8 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/supports-color": { "version": "7.2.0", @@ -6850,7 +6935,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/tsutils": { "version": "3.21.0", @@ -7023,6 +7109,7 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "optional": true, + "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -7222,6 +7309,7 @@ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^1.11.1" }, @@ -7231,7 +7319,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7241,6 +7330,7 @@ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -7257,7 +7347,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7267,6 +7358,7 @@ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -7278,7 +7370,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7288,6 +7381,7 @@ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^1.11.1" }, @@ -7297,7 +7391,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7307,6 +7402,7 @@ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -7318,7 +7414,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7328,6 +7425,7 @@ "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7339,6 +7437,7 @@ "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7383,6 +7482,7 @@ "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7424,6 +7524,7 @@ "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7465,6 +7566,7 @@ "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7510,6 +7612,7 @@ "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-config-provider": "3.295.0", @@ -7523,6 +7626,7 @@ "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -7536,6 +7640,7 @@ "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7548,6 +7653,7 @@ "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/property-provider": "3.296.0", @@ -7562,6 +7668,7 @@ "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -7580,6 +7687,7 @@ "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -7599,6 +7707,7 @@ "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -7612,6 +7721,7 @@ "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-sso": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -7627,6 +7737,7 @@ "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7639,6 +7750,7 @@ "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/client-sso": "3.299.0", @@ -7662,6 +7774,7 @@ "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/querystring-builder": "3.296.0", @@ -7676,6 +7789,7 @@ "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-buffer-from": "3.295.0", @@ -7689,6 +7803,7 @@ "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7700,6 +7815,7 @@ "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -7710,6 +7826,7 @@ "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7722,6 +7839,7 @@ "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/middleware-serde": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7736,6 +7854,7 @@ "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7748,6 +7867,7 @@ "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7759,6 +7879,7 @@ "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7771,6 +7892,7 @@ "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/service-error-classification": "3.296.0", @@ -7787,6 +7909,7 @@ "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/middleware-signing": "3.299.0", "@aws-sdk/types": "3.296.0", @@ -7799,6 +7922,7 @@ "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7810,6 +7934,7 @@ "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -7825,6 +7950,7 @@ "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -7835,6 +7961,7 @@ "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7848,6 +7975,7 @@ "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -7861,6 +7989,7 @@ "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/abort-controller": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -7875,6 +8004,7 @@ "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7886,6 +8016,7 @@ "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7897,6 +8028,7 @@ "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-uri-escape": "3.295.0", @@ -7909,6 +8041,7 @@ "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7919,7 +8052,8 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.296.0.tgz", "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@aws-sdk/shared-ini-file-loader": { "version": "3.296.0", @@ -7927,6 +8061,7 @@ "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7938,6 +8073,7 @@ "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/is-array-buffer": "3.295.0", "@aws-sdk/types": "3.296.0", @@ -7954,6 +8090,7 @@ "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/middleware-stack": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7966,6 +8103,7 @@ "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-sso-oidc": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -7980,6 +8118,7 @@ "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -7990,6 +8129,7 @@ "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/querystring-parser": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -8002,6 +8142,7 @@ "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -8013,6 +8154,7 @@ "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8023,6 +8165,7 @@ "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8033,6 +8176,7 @@ "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/is-array-buffer": "3.295.0", "tslib": "^2.5.0" @@ -8044,6 +8188,7 @@ "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8054,6 +8199,7 @@ "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -8067,6 +8213,7 @@ "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/config-resolver": "3.299.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -8082,6 +8229,7 @@ "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -8093,6 +8241,7 @@ "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8103,6 +8252,7 @@ "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8113,6 +8263,7 @@ "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8123,6 +8274,7 @@ "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/service-error-classification": "3.296.0", "tslib": "^2.5.0" @@ -8134,6 +8286,7 @@ "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8144,6 +8297,7 @@ "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "bowser": "^2.11.0", @@ -8156,6 +8310,7 @@ "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -8168,6 +8323,7 @@ "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -8179,6 +8335,7 @@ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.3.1" } @@ -9629,7 +9786,8 @@ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "brace-expansion": { "version": "1.1.11", @@ -9681,13 +9839,10 @@ } }, "bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", - "dev": true, - "requires": { - "buffer": "^5.6.0" - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", + "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", + "dev": true }, "buffer": { "version": "5.7.1", @@ -10241,6 +10396,7 @@ "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", "dev": true, "optional": true, + "peer": true, "requires": { "strnum": "^1.0.5" } @@ -11545,14 +11701,13 @@ "dev": true }, "mongodb": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", - "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", + "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", "dev": true, "requires": { - "@aws-sdk/credential-providers": "^3.186.0", - "bson": "^4.7.0", - "mongodb-connection-string-url": "^2.5.4", + "bson": "^5.0.1", + "mongodb-connection-string-url": "^2.6.0", "saslprep": "^1.0.3", "socks": "^2.7.1" } @@ -11568,16 +11723,16 @@ } }, "mongoose": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.4.tgz", - "integrity": "sha512-xCHVVEaOuhZxbthsKYxvHexWafJqWsl03sD7y7uyyt3euLd1sQoDI8DKueeJq9+hrbWkMkAGbGzgFPTIRqenPg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", + "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", "dev": true, "requires": { - "bson": "^4.7.0", + "bson": "^5.0.1", "kareem": "2.5.1", - "mongodb": "4.14.0", + "mongodb": "5.1.0", "mpath": "0.9.0", - "mquery": "4.0.3", + "mquery": "5.0.0", "ms": "2.1.3", "sift": "16.0.1" }, @@ -11597,9 +11752,9 @@ "dev": true }, "mquery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", - "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", "dev": true, "requires": { "debug": "4.x" @@ -12305,7 +12460,8 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "supports-color": { "version": "7.2.0", @@ -12415,7 +12571,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "tsutils": { "version": "3.21.0", @@ -12532,7 +12689,8 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "v8-to-istanbul": { "version": "9.1.0", diff --git a/package.json b/package.json index 0561bd41..877576b8 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^6.9.1", + "mongoose": "^7.0.0", "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", From 4eda9d0cbf19881bccbd686594dd348b4fb7ed3f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 18:04:45 +0000 Subject: [PATCH 015/414] Update dependency typescript to v5 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 77f3ba3c..f5383b00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^4.5.4", + "typescript": "^5.0.0", "write-file-atomic": "^5.0.0" } }, @@ -6964,16 +6964,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/update-browserslist-db": { @@ -12497,9 +12497,9 @@ } }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true }, "update-browserslist-db": { diff --git a/package.json b/package.json index 0561bd41..89db0441 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^4.5.4", + "typescript": "^5.0.0", "write-file-atomic": "^5.0.0" }, "dependencies": { From 4810982bf545b6f83f179ad86ace29f45ef660c0 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 14:14:42 -0400 Subject: [PATCH 016/414] Refactor for mongoose v7 --- src/drivers/MongoDriver.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 15e4c09e..01dafda9 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -61,14 +61,10 @@ export class MongoDriver implements IDriver { ); } - public connect(): Promise { - return new Promise((resolve, reject) => { - this.mongoose.createConnection(this.url, this.options, (err: any, connection: any) => { - if (err) return reject(err); - this.conn = connection; - resolve(this); - }); - }); + public async connect(): Promise { + const connection = await this.mongoose.createConnection(this.url, this.options).asPromise(); + this.conn = connection; + return this; } public async close(force?: boolean): Promise { From 2c6a494ceffa469e6b579fb29503d48eed92ef07 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 14:32:10 -0400 Subject: [PATCH 017/414] Switched dependencies to peerDependencies and adding node restriction --- package.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 253685dc..8de2372e 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,9 @@ "description": "An easy, non-locking, persistent better-sqlite3 wrapper designed to be easy to setup & utilize", "main": "out/index.js", "types": "out/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, "devDependencies": { "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", @@ -12,16 +15,18 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^7.0.0", - "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^5.0.0", + "typescript": "^5.0.0" + }, + "peerDependencies": { + "better-sqlite3": "^8.0.0", + "mongoose": "^7.0.0", + "mysql2": "^3.2.0", "write-file-atomic": "^5.0.0" }, "dependencies": { From e553bceca5dacd713cd4e076b1d1dfecd00aac13 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 17:16:26 -0400 Subject: [PATCH 018/414] Adding docker compose --- .github/workflows/node.js.yml | 19 +++++++++++++------ docker-compose.yml | 27 +++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 docker-compose.yml diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 4bc3bd01..b33a7ce8 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -2,7 +2,6 @@ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs name: Node.js CI - on: push: branches: ["dev"] @@ -13,18 +12,26 @@ on: - "tsconfig.json" pull_request: branches: ["dev"] - +env: + MYSQL_PORT: 3306 + MYSQL_DATABASE: test + MYSQL_ROOT_PASSWORD: root + MONGO_PORT: 27017 + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: root + MONGO_INITDB_DATABASE: test jobs: build: runs-on: ubuntu-latest - strategy: matrix: node-version: [18.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - steps: - uses: actions/checkout@v3 + - name: Setup environment + - run: docker compose -f docker-compose.yml up -d + - name: Wait for databases + - run: sleep 30s - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: @@ -32,5 +39,5 @@ jobs: cache: "npm" - run: npm ci - run: npm run build --if-present - - run: npm test - run: npm run lint + - run: npm test diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..96b779bb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.9" +services: + mysql: + image: mysql + container_name: mysql + restart: always + ports: + - "${MYSQL_PORT}:${MYSQL_PORT}" + networks: + - testing-network + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + mongo: + image: mongo + container_name: mongo + restart: always + ports: + - "${MONGO_PORT}:${MONGO_PORT}" + networks: + - testing-network + environment: + MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} + MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} + MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} +networks: + testing-network: From 83db0d35fb0dc5328925c65fa875301ee0747c5c Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:17:30 -0700 Subject: [PATCH 019/414] Update node.js.yml --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index b33a7ce8..748c8d1e 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -4,7 +4,7 @@ name: Node.js CI on: push: - branches: ["dev"] + branches: ["dev", "feature/integration-tests"] paths: - "src/**" - "tests/**" From 60b614c876aa6bae05f63eb442cc9864ab7562ab Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:18:48 -0700 Subject: [PATCH 020/414] Update node.js.yml --- .github/workflows/node.js.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 748c8d1e..df1ab152 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,8 +3,9 @@ name: Node.js CI on: + workflow_dispatch: push: - branches: ["dev", "feature/integration-tests"] + branches: ["dev"] paths: - "src/**" - "tests/**" From eda84e085d16f45272435a9b13d9ad61d6f60184 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:21:16 -0700 Subject: [PATCH 021/414] Update node.js.yml --- .github/workflows/node.js.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index df1ab152..2a24955b 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -30,9 +30,9 @@ jobs: steps: - uses: actions/checkout@v3 - name: Setup environment - - run: docker compose -f docker-compose.yml up -d + run: docker compose -f docker-compose.yml up -d - name: Wait for databases - - run: sleep 30s + run: sleep 30s - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: From 89583ca5936aa8d64ca43b59b0dbaa95564d3554 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:22:58 -0700 Subject: [PATCH 022/414] Update node.js.yml --- .github/workflows/node.js.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 2a24955b..9be1c45c 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,14 +3,8 @@ name: Node.js CI on: - workflow_dispatch: push: - branches: ["dev"] - paths: - - "src/**" - - "tests/**" - - "package.json" - - "tsconfig.json" + branches: ["dev", "feature/integration-tests"] pull_request: branches: ["dev"] env: From 13130e2c6b6d9e727d9f48563f5deb5e520b91da Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Mon, 27 Mar 2023 10:12:24 -0400 Subject: [PATCH 023/414] POC new export system --- package.json | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/package.json b/package.json index 8de2372e..a902039b 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,36 @@ "dependencies": { "lodash": "^4.17.21" }, + "exports": { + ".": { + "require": "./out/index.js", + "types": "./out/index.d.ts" + }, + "./SqliteDriver": { + "require": "./out/drivers/SqliteDriver.js", + "types": "./out/drivers/SqliteDriver.d.ts" + }, + "./MySQLDriver": { + "require": "./out/drivers/MySQLDriver.js", + "types": "./out/drivers/MySQLDriver.d.ts" + }, + "./MongoDriver": { + "require": "./out/drivers/MongoDriver.js", + "types": "./out/drivers/MongoDriver.d.ts" + }, + "./MemoryDriver": { + "require": "./out/drivers/MemoryDriver.js", + "types": "./out/drivers/MemoryDriver.d.ts" + }, + "./JSONDriver": { + "require": "./out/drivers/JSONDriver.js", + "types": "./out/drivers/JSONDriver.d.ts" + }, + "./DriverUnion": { + "require": "./out/drivers/DriverUnion.js", + "types": "./out/drivers/DriverUnion.d.ts" + } + }, "scripts": { "test": "jest --roots tests", "build": "tsc", From 5b5741d2e22a6ecc0d966f39b7f677d9186a8893 Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 11:28:44 +0200 Subject: [PATCH 024/414] Added postgres driver --- package-lock.json | 769 +++++++++++++++++++--------------- package.json | 2 + src/drivers/DriverUnion.ts | 38 +- src/drivers/MemoryDriver.ts | 5 +- src/drivers/MongoDriver.ts | 63 ++- src/drivers/PostgresDriver.ts | 107 +++++ src/drivers/SqliteDriver.ts | 16 +- src/index.ts | 8 +- 8 files changed, 628 insertions(+), 380 deletions(-) create mode 100644 src/drivers/PostgresDriver.ts diff --git a/package-lock.json b/package-lock.json index ecc8bf95..e6e0ad4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,19 +16,26 @@ "@types/better-sqlite3": "^7.4.2", "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", + "@types/pg": "^8.6.6", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^7.0.0", - "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^5.0.0", + "typescript": "^5.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "better-sqlite3": "^8.0.0", + "mongoose": "^7.0.0", + "mysql2": "^3.2.0", + "pg": "^8.10.0", "write-file-atomic": "^5.0.0" } }, @@ -49,7 +56,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -60,7 +66,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -68,7 +73,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -86,7 +90,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -94,7 +97,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -107,7 +109,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -115,7 +116,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -126,7 +126,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -134,7 +133,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -147,7 +145,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -155,7 +152,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.296.0.tgz", "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -170,7 +166,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.299.0.tgz", "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -218,7 +213,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.299.0.tgz", "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -263,7 +257,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.299.0.tgz", "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -308,7 +301,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.299.0.tgz", "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -357,7 +349,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.299.0.tgz", "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -374,7 +365,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.299.0.tgz", "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -391,7 +381,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.296.0.tgz", "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -407,7 +396,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.296.0.tgz", "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -425,7 +413,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.299.0.tgz", "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -447,7 +434,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.299.0.tgz", "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -470,7 +456,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.296.0.tgz", "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -487,7 +472,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.299.0.tgz", "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -506,7 +490,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.296.0.tgz", "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -522,7 +505,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.299.0.tgz", "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -549,7 +531,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.296.0.tgz", "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -564,7 +545,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.296.0.tgz", "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -581,7 +561,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.296.0.tgz", "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -593,7 +572,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.295.0.tgz", "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -607,7 +585,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.296.0.tgz", "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -623,7 +600,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.299.0.tgz", "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -641,7 +617,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.296.0.tgz", "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -657,7 +632,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.296.0.tgz", "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -672,7 +646,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.296.0.tgz", "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -688,7 +661,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.296.0.tgz", "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -708,7 +680,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.299.0.tgz", "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -724,7 +695,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.296.0.tgz", "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -739,7 +709,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.299.0.tgz", "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -758,7 +727,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.296.0.tgz", "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -772,7 +740,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.299.0.tgz", "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -789,7 +756,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.296.0.tgz", "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -806,7 +772,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.296.0.tgz", "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -824,7 +789,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.296.0.tgz", "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -839,7 +803,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.296.0.tgz", "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -854,7 +817,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.296.0.tgz", "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -870,7 +832,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.296.0.tgz", "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -885,7 +846,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.296.0.tgz", "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", - "dev": true, "optional": true, "peer": true, "engines": { @@ -896,7 +856,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.296.0.tgz", "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -911,7 +870,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.299.0.tgz", "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -931,7 +889,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.296.0.tgz", "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -947,7 +904,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.299.0.tgz", "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -965,7 +921,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.296.0.tgz", "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -979,7 +934,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.296.0.tgz", "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -992,7 +946,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.295.0.tgz", "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1007,7 +960,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.295.0.tgz", "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1018,7 +970,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.295.0.tgz", "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1032,7 +983,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.295.0.tgz", "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1047,7 +997,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.295.0.tgz", "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1061,7 +1010,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.296.0.tgz", "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1078,7 +1026,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.299.0.tgz", "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1097,7 +1044,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.296.0.tgz", "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1112,7 +1058,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.295.0.tgz", "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1126,7 +1071,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.295.0.tgz", "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1140,7 +1084,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.296.0.tgz", "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1154,7 +1097,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.296.0.tgz", "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1169,7 +1111,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.295.0.tgz", "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1183,7 +1124,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.299.0.tgz", "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1196,7 +1136,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.299.0.tgz", "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1220,7 +1159,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.295.0.tgz", "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1235,7 +1173,6 @@ "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -2618,8 +2555,18 @@ "node_modules/@types/node": { "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", - "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==", - "dev": true + "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" + }, + "node_modules/@types/pg": { + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.6.tgz", + "integrity": "sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } }, "node_modules/@types/prettier": { "version": "2.7.2", @@ -2643,13 +2590,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==", - "dev": true + "peer": true }, "node_modules/@types/whatwg-url": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dev": true, + "peer": true, "dependencies": { "@types/node": "*", "@types/webidl-conversions": "*" @@ -3090,7 +3037,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -3104,14 +3050,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/better-sqlite3": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", - "dev": true, "hasInstallScript": true, + "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.0" @@ -3121,7 +3068,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, + "peer": true, "dependencies": { "file-uri-to-path": "1.0.0" } @@ -3130,7 +3077,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "peer": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3141,7 +3088,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true, "optional": true, "peer": true }, @@ -3220,7 +3166,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", - "dev": true, + "peer": true, "engines": { "node": ">=14.20.1" } @@ -3229,7 +3175,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -3244,6 +3189,7 @@ "url": "https://feross.org/support" } ], + "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -3255,6 +3201,15 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3318,7 +3273,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "peer": true }, "node_modules/ci-info": { "version": "3.8.0", @@ -3419,7 +3374,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3436,7 +3390,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, + "peer": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -3457,7 +3411,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, + "peer": true, "engines": { "node": ">=4.0.0" } @@ -3481,7 +3435,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10" } @@ -3490,7 +3444,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -3556,7 +3510,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, + "peer": true, "dependencies": { "once": "^1.4.0" } @@ -3830,7 +3784,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -3972,7 +3926,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -4020,7 +3973,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "peer": true }, "node_modules/fill-range": { "version": "7.0.1", @@ -4073,7 +4026,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "peer": true }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -4105,7 +4058,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, + "peer": true, "dependencies": { "is-property": "^1.0.2" } @@ -4153,7 +4106,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true + "peer": true }, "node_modules/glob": { "version": "7.2.3", @@ -4274,7 +4227,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -4286,7 +4239,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -4300,7 +4252,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/ignore": { "version": "5.2.4", @@ -4350,7 +4303,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -4368,20 +4320,19 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "peer": true }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true + "peer": true }, "node_modules/is-arrayish": { "version": "0.2.1", @@ -4462,7 +4413,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "dev": true + "peer": true }, "node_modules/is-stream": { "version": "2.0.1", @@ -5467,7 +5418,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "dev": true, + "peer": true, "engines": { "node": ">=12.0.0" } @@ -5545,7 +5496,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==", - "dev": true + "peer": true }, "node_modules/lru-cache": { "version": "5.1.1", @@ -5617,8 +5568,8 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/merge-stream": { "version": "2.0.0", @@ -5661,7 +5612,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, + "peer": true, "engines": { "node": ">=10" }, @@ -5685,7 +5636,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5694,13 +5645,13 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "peer": true }, "node_modules/mongodb": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", - "dev": true, + "peer": true, "dependencies": { "bson": "^5.0.1", "mongodb-connection-string-url": "^2.6.0", @@ -5733,7 +5684,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dev": true, + "peer": true, "dependencies": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" @@ -5743,7 +5694,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", - "dev": true, + "peer": true, "dependencies": { "bson": "^5.0.1", "kareem": "2.5.1", @@ -5765,13 +5716,13 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "peer": true }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "dev": true, + "peer": true, "engines": { "node": ">=4.0.0" } @@ -5780,7 +5731,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dev": true, + "peer": true, "dependencies": { "debug": "4.x" }, @@ -5791,14 +5742,13 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mysql2": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.2.0.tgz", "integrity": "sha512-0Vn6a9WSrq6fWwvPgrvIwnOCldiEcgbzapVRDAtDZ4cMTxN7pnGqCTx8EG32S/NYXl6AXkdO+9hV1tSIi/LigA==", - "dev": true, + "peer": true, "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -5817,7 +5767,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -5826,7 +5776,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", - "dev": true, + "peer": true, "dependencies": { "lru-cache": "^7.14.1" }, @@ -5838,7 +5788,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -5847,7 +5797,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "peer": true }, "node_modules/natural-compare": { "version": "1.4.0", @@ -5865,7 +5815,7 @@ "version": "3.33.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz", "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==", - "dev": true, + "peer": true, "dependencies": { "semver": "^7.3.5" }, @@ -5910,7 +5860,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -5986,6 +5935,12 @@ "node": ">=6" } }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==", + "peer": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6058,6 +6013,84 @@ "node": ">=8" } }, + "node_modules/pg": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "peer": true, + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.6.0", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", + "peer": true + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "peer": true, + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "peer": true, + "dependencies": { + "split2": "^4.1.0" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -6149,11 +6182,46 @@ "node": ">=8" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, + "peer": true, "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -6216,7 +6284,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, + "peer": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -6226,7 +6294,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, "engines": { "node": ">=6" } @@ -6271,7 +6338,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, + "peer": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -6286,7 +6353,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6295,7 +6362,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6422,7 +6489,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -6436,20 +6502,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "peer": true }, "node_modules/saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "dev": true, "optional": true, + "peer": true, "dependencies": { "sparse-bitfield": "^3.0.3" }, @@ -6461,7 +6528,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -6476,7 +6542,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -6487,14 +6552,13 @@ "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/seq-queue": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", - "dev": true + "peer": true }, "node_modules/shebang-command": { "version": "2.0.0", @@ -6533,19 +6597,17 @@ "version": "16.0.1", "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==", - "dev": true + "peer": true }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, "funding": [ { "type": "github", @@ -6559,13 +6621,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/simple-get": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, "funding": [ { "type": "github", @@ -6580,6 +6642,7 @@ "url": "https://feross.org/support" } ], + "peer": true, "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -6605,7 +6668,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, + "peer": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -6615,7 +6678,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, + "peer": true, "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -6648,12 +6711,21 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "dev": true, "optional": true, + "peer": true, "dependencies": { "memory-pager": "^1.0.2" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "peer": true, + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -6664,7 +6736,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -6694,7 +6766,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "peer": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -6772,7 +6844,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true, "optional": true, "peer": true }, @@ -6804,7 +6875,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, + "peer": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -6816,7 +6887,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, + "peer": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -6879,7 +6950,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, + "peer": true, "dependencies": { "punycode": "^2.1.1" }, @@ -6934,7 +7005,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true, "optional": true, "peer": true }, @@ -6963,7 +7033,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, + "peer": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -7101,13 +7171,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "peer": true }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "optional": true, "peer": true, "bin": { @@ -7159,7 +7228,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -7168,7 +7237,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, + "peer": true, "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -7221,14 +7290,13 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, + "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -7237,6 +7305,14 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -7307,7 +7383,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7318,7 +7393,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7328,7 +7402,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7346,7 +7419,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7356,7 +7428,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7369,7 +7440,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7379,7 +7449,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7390,7 +7459,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7400,7 +7468,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7413,7 +7480,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7423,7 +7489,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.296.0.tgz", "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7435,7 +7500,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.299.0.tgz", "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7480,7 +7544,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.299.0.tgz", "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7522,7 +7585,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.299.0.tgz", "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7564,7 +7626,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.299.0.tgz", "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7610,7 +7671,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.299.0.tgz", "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7624,7 +7684,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.299.0.tgz", "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7638,7 +7697,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.296.0.tgz", "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7651,7 +7709,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.296.0.tgz", "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7666,7 +7723,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.299.0.tgz", "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7685,7 +7741,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.299.0.tgz", "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7705,7 +7760,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.296.0.tgz", "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7719,7 +7773,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.299.0.tgz", "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7735,7 +7788,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.296.0.tgz", "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7748,7 +7800,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.299.0.tgz", "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7772,7 +7823,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.296.0.tgz", "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7787,7 +7837,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.296.0.tgz", "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7801,7 +7850,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.296.0.tgz", "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7813,7 +7861,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.295.0.tgz", "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7824,7 +7871,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.296.0.tgz", "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7837,7 +7883,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.299.0.tgz", "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7852,7 +7897,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.296.0.tgz", "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7865,7 +7909,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.296.0.tgz", "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7877,7 +7920,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.296.0.tgz", "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7890,7 +7932,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.296.0.tgz", "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7907,7 +7948,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.299.0.tgz", "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7920,7 +7960,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.296.0.tgz", "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7932,7 +7971,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.299.0.tgz", "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7948,7 +7986,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.296.0.tgz", "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7959,7 +7996,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.299.0.tgz", "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7973,7 +8009,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.296.0.tgz", "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7987,7 +8022,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.296.0.tgz", "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8002,7 +8036,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.296.0.tgz", "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8014,7 +8047,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.296.0.tgz", "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8026,7 +8058,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.296.0.tgz", "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8039,7 +8070,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.296.0.tgz", "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8051,7 +8081,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.296.0.tgz", "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", - "dev": true, "optional": true, "peer": true }, @@ -8059,7 +8088,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.296.0.tgz", "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8071,7 +8099,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.299.0.tgz", "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8088,7 +8115,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.296.0.tgz", "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8101,7 +8127,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.299.0.tgz", "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8116,7 +8141,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.296.0.tgz", "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8127,7 +8151,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.296.0.tgz", "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8140,7 +8163,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.295.0.tgz", "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8152,7 +8174,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.295.0.tgz", "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8163,7 +8184,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.295.0.tgz", "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8174,7 +8194,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.295.0.tgz", "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8186,7 +8205,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.295.0.tgz", "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8197,7 +8215,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.296.0.tgz", "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8211,7 +8228,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.299.0.tgz", "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8227,7 +8243,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.296.0.tgz", "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8239,7 +8254,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.295.0.tgz", "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8250,7 +8264,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.295.0.tgz", "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8261,7 +8274,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.296.0.tgz", "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8272,7 +8284,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.296.0.tgz", "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8284,7 +8295,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.295.0.tgz", "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8295,7 +8305,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.299.0.tgz", "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8308,7 +8317,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.299.0.tgz", "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8321,7 +8329,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.295.0.tgz", "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8333,7 +8340,6 @@ "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -9424,8 +9430,18 @@ "@types/node": { "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", - "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==", - "dev": true + "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" + }, + "@types/pg": { + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.6.tgz", + "integrity": "sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==", + "dev": true, + "requires": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } }, "@types/prettier": { "version": "2.7.2", @@ -9449,13 +9465,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==", - "dev": true + "peer": true }, "@types/whatwg-url": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dev": true, + "peer": true, "requires": { "@types/node": "*", "@types/webidl-conversions": "*" @@ -9749,13 +9765,13 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "peer": true }, "better-sqlite3": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", - "dev": true, + "peer": true, "requires": { "bindings": "^1.5.0", "prebuild-install": "^7.1.0" @@ -9765,7 +9781,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, + "peer": true, "requires": { "file-uri-to-path": "1.0.0" } @@ -9774,7 +9790,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "peer": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -9785,7 +9801,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true, "optional": true, "peer": true }, @@ -9842,13 +9857,13 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", - "dev": true + "peer": true }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, + "peer": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -9860,6 +9875,12 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "peer": true + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -9898,7 +9919,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "peer": true }, "ci-info": { "version": "3.8.0", @@ -9977,7 +9998,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -9986,7 +10006,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, + "peer": true, "requires": { "mimic-response": "^3.1.0" } @@ -10001,7 +10021,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "peer": true }, "deep-is": { "version": "0.1.4", @@ -10019,13 +10039,13 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "dev": true + "peer": true }, "detect-libc": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true + "peer": true }, "detect-newline": { "version": "3.1.0", @@ -10073,7 +10093,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, + "peer": true, "requires": { "once": "^1.4.0" } @@ -10278,7 +10298,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true + "peer": true }, "expect": { "version": "29.5.0", @@ -10394,7 +10414,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -10432,7 +10451,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "peer": true }, "fill-range": { "version": "7.0.1", @@ -10473,7 +10492,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "peer": true }, "fs.realpath": { "version": "1.0.0", @@ -10498,7 +10517,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, + "peer": true, "requires": { "is-property": "^1.0.2" } @@ -10531,7 +10550,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true + "peer": true }, "glob": { "version": "7.2.3", @@ -10622,7 +10641,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "peer": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -10631,7 +10650,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "peer": true }, "ignore": { "version": "5.2.4", @@ -10662,8 +10681,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "inflight": { "version": "1.0.6", @@ -10678,20 +10696,19 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "peer": true }, "ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true + "peer": true }, "is-arrayish": { "version": "0.2.1", @@ -10751,7 +10768,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "dev": true + "peer": true }, "is-stream": { "version": "2.0.1", @@ -11523,7 +11540,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "dev": true + "peer": true }, "kleur": { "version": "3.0.3", @@ -11583,7 +11600,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==", - "dev": true + "peer": true }, "lru-cache": { "version": "5.1.1", @@ -11642,8 +11659,8 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "dev": true, - "optional": true + "optional": true, + "peer": true }, "merge-stream": { "version": "2.0.0", @@ -11677,7 +11694,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true + "peer": true }, "minimatch": { "version": "3.1.2", @@ -11692,19 +11709,19 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true + "peer": true }, "mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "peer": true }, "mongodb": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", - "dev": true, + "peer": true, "requires": { "bson": "^5.0.1", "mongodb-connection-string-url": "^2.6.0", @@ -11716,7 +11733,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dev": true, + "peer": true, "requires": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" @@ -11726,7 +11743,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", - "dev": true, + "peer": true, "requires": { "bson": "^5.0.1", "kareem": "2.5.1", @@ -11741,7 +11758,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "peer": true } } }, @@ -11749,13 +11766,13 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "dev": true + "peer": true }, "mquery": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dev": true, + "peer": true, "requires": { "debug": "4.x" } @@ -11763,14 +11780,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mysql2": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.2.0.tgz", "integrity": "sha512-0Vn6a9WSrq6fWwvPgrvIwnOCldiEcgbzapVRDAtDZ4cMTxN7pnGqCTx8EG32S/NYXl6AXkdO+9hV1tSIi/LigA==", - "dev": true, + "peer": true, "requires": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -11786,7 +11802,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true + "peer": true } } }, @@ -11794,7 +11810,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", - "dev": true, + "peer": true, "requires": { "lru-cache": "^7.14.1" }, @@ -11803,7 +11819,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true + "peer": true } } }, @@ -11811,7 +11827,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "peer": true }, "natural-compare": { "version": "1.4.0", @@ -11829,7 +11845,7 @@ "version": "3.33.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz", "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==", - "dev": true, + "peer": true, "requires": { "semver": "^7.3.5" } @@ -11865,7 +11881,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -11917,6 +11932,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==", + "peer": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -11968,6 +11989,65 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pg": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "peer": true, + "requires": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.6.0", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + } + }, + "pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", + "peer": true + }, + "pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + }, + "pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "peer": true, + "requires": {} + }, + "pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } + }, + "pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "peer": true, + "requires": { + "split2": "^4.1.0" + } + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -12034,11 +12114,34 @@ } } }, + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" + }, + "postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "requires": { + "xtend": "^4.0.0" + } + }, "prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, + "peer": true, "requires": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -12080,7 +12183,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, + "peer": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -12089,8 +12192,7 @@ "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "pure-rand": { "version": "6.0.1", @@ -12108,7 +12210,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, + "peer": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -12120,7 +12222,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true + "peer": true } } }, @@ -12128,7 +12230,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "peer": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -12209,20 +12311,20 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "peer": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "peer": true }, "saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "dev": true, "optional": true, + "peer": true, "requires": { "sparse-bitfield": "^3.0.3" } @@ -12231,7 +12333,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "requires": { "lru-cache": "^6.0.0" }, @@ -12240,7 +12341,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -12248,8 +12348,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -12257,7 +12356,7 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", - "dev": true + "peer": true }, "shebang-command": { "version": "2.0.0", @@ -12290,25 +12389,24 @@ "version": "16.0.1", "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==", - "dev": true + "peer": true }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true + "peer": true }, "simple-get": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, + "peer": true, "requires": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -12331,13 +12429,13 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true + "peer": true }, "socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, + "peer": true, "requires": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -12363,12 +12461,18 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "dev": true, "optional": true, + "peer": true, "requires": { "memory-pager": "^1.0.2" } }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "peer": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -12379,7 +12483,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "dev": true + "peer": true }, "stack-utils": { "version": "2.0.6", @@ -12402,7 +12506,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "peer": true, "requires": { "safe-buffer": "~5.2.0" } @@ -12459,7 +12563,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true, "optional": true, "peer": true }, @@ -12482,7 +12585,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, + "peer": true, "requires": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -12494,7 +12597,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, + "peer": true, "requires": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -12545,7 +12648,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, + "peer": true, "requires": { "punycode": "^2.1.1" } @@ -12570,7 +12673,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true, "optional": true, "peer": true }, @@ -12595,7 +12697,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, + "peer": true, "requires": { "safe-buffer": "^5.0.1" } @@ -12682,13 +12784,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "peer": true }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "optional": true, "peer": true }, @@ -12736,13 +12837,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true + "peer": true }, "whatwg-url": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, + "peer": true, "requires": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -12777,19 +12878,23 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, + "peer": true, "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" } }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 8de2372e..5a4c5738 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@types/better-sqlite3": "^7.4.2", "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", + "@types/pg": "^8.6.6", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", @@ -27,6 +28,7 @@ "better-sqlite3": "^8.0.0", "mongoose": "^7.0.0", "mysql2": "^3.2.0", + "pg": "^8.10.0", "write-file-atomic": "^5.0.0" }, "dependencies": { diff --git a/src/drivers/DriverUnion.ts b/src/drivers/DriverUnion.ts index 256dc853..73d09fe7 100644 --- a/src/drivers/DriverUnion.ts +++ b/src/drivers/DriverUnion.ts @@ -2,40 +2,40 @@ import { IDriver } from "./IDriver"; /** * DriverUnion - Union of Drivers - * + * * This driver allows the usage of multiple drivers and multiple driver instances at the same time. * Useful for redundancies and live backups. - * - * The main driver is the driver used for all operations, while the rest of the drivers are called - * mirror drivers, and are only used for data reflection. + * + * The main driver is the driver used for all operations, while the rest of the drivers are called + * mirror drivers, and are only used for data reflection. * By the default, the main driver is the first one the union is initialized with. * This can be changed by modifying the {@link DriverUnion.main | `main` property} on the union instance. - * + * * @example * const SQLiteInstance = new SqliteDriver("./json.sqlite") * const JSONInstance = new JSONDriver("./backup.json"); * const DriverUnionInstance = new DriverUnion(SQLiteInstance, JSONInstance); * const db = new QuickDB({ driver: DriverUnionInstance }) - * + * * // Regular db usage */ export class DriverUnion implements IDriver { private drivers: IDriver[]; - private _main: number; + private _main: number; - /** @property {number} main Index of the main driver. */ - public get main(): number { - return this._main; - } - public set main(value: number) { - if (!(value in this.drivers)) return; + /** @property {number} main Index of the main driver. */ + public get main(): number { + return this._main; + } + public set main(value: number) { + if (!(value in this.drivers)) return; - this._main = value; - } + this._main = value; + } constructor(main: IDriver, ...mirrors: IDriver[]) { this.drivers = [main, ...mirrors]; - this._main = 0; + this._main = 0; } public async prepare(table: string): Promise { @@ -63,13 +63,13 @@ export class DriverUnion implements IDriver { value: any, update: boolean ): Promise { - let val: T = undefined as T; // It's guaranteed that at least one driver is present. + let val: T = undefined as T; // It's guaranteed that at least one driver is present. for (let i = 0; i < this.drivers.length; i++) { - const driver = this.drivers[i]; + const driver = this.drivers[i]; const res = await driver.setRowByKey(table, key, value, update); - if (i === this._main) val = res; + if (i === this._main) val = res; } return val; diff --git a/src/drivers/MemoryDriver.ts b/src/drivers/MemoryDriver.ts index 08cbe876..aa02c597 100644 --- a/src/drivers/MemoryDriver.ts +++ b/src/drivers/MemoryDriver.ts @@ -37,7 +37,10 @@ export class MemoryDriver implements IDriver { return [...store.entries()].map(([k, v]) => ({ id: k, value: v })); } - public async getRowByKey(table: string, key: string): Promise<[T | null, boolean]> { + public async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { const store = this.getOrCreateTable(table); const val = store.get(key) as T; return [val == null ? null : val, false]; diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 01dafda9..4b5c217e 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -36,33 +36,38 @@ export class MongoDriver implements IDriver { private models = new Map>(); docSchema: mongoose.Schema>; - public constructor(public url: string, public options: mongoose.ConnectOptions = {}) { + public constructor( + public url: string, + public options: mongoose.ConnectOptions = {} + ) { this.mongoose = require("mongoose"); this.docSchema = new this.mongoose.Schema( { ID: { type: this.mongoose.SchemaTypes.String, required: true, - unique: true + unique: true, }, data: { type: this.mongoose.SchemaTypes.Mixed, - required: false + required: false, }, expireAt: { type: this.mongoose.SchemaTypes.Date, required: false, - default: null - } + default: null, + }, }, { - timestamps: true + timestamps: true, } ); } public async connect(): Promise { - const connection = await this.mongoose.createConnection(this.url, this.options).asPromise(); + const connection = await this.mongoose + .createConnection(this.url, this.options) + .asPromise(); this.conn = connection; return this; } @@ -72,15 +77,19 @@ export class MongoDriver implements IDriver { } private checkConnection(): void { - if (this.conn == null) throw new Error(`MongoDriver is not connected to the database`); + if (this.conn == null) + throw new Error(`MongoDriver is not connected to the database`); } public async prepare(table: string): Promise { this.checkConnection(); - if (!this.models.has(table)) this.models.set(table, this.modelSchema(table)); + if (!this.models.has(table)) + this.models.set(table, this.modelSchema(table)); } - private async getModel(name: string): Promise | undefined> { + private async getModel( + name: string + ): Promise | undefined> { await this.prepare(name); return this.models.get(name); } @@ -91,11 +100,14 @@ export class MongoDriver implements IDriver { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return (await model!.find()).map((row: any) => ({ id: row.ID, - value: row.data + value: row.data, })); } - async getRowByKey(table: string, key: string): Promise<[T | null, boolean]> { + async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { this.checkConnection(); const model = await this.getModel(table); const res = await model!.findOne({ ID: key }); @@ -104,15 +116,20 @@ export class MongoDriver implements IDriver { } // eslint-disable-next-line @typescript-eslint/no-unused-vars - async setRowByKey(table: string, key: string, value: any, _update: boolean): Promise { + async setRowByKey( + table: string, + key: string, + value: any, + _update: boolean + ): Promise { this.checkConnection(); const model = await this.getModel(table); await model?.findOneAndUpdate( { - ID: key + ID: key, }, { - $set: { data: value } + $set: { data: value }, }, { upsert: true } ); @@ -125,7 +142,6 @@ export class MongoDriver implements IDriver { const model = await this.getModel(table); const res = await model?.deleteMany(); - return res!.deletedCount!; } @@ -134,20 +150,23 @@ export class MongoDriver implements IDriver { const model = await this.getModel(table); const res = await model?.deleteMany({ - ID: key + ID: key, }); - return res!.deletedCount!; } // eslint-disable-next-line @typescript-eslint/ban-types - modelSchema(modelName = "JSON"): mongoose.Model> { + modelSchema( + modelName = "JSON" + ): mongoose.Model> { this.checkConnection(); const model = this.conn!.model(modelName, this.docSchema); - model.collection.createIndex({ expireAt: 1 }, { expireAfterSeconds: 0 }).catch(() => { - /* void */ - }); + model.collection + .createIndex({ expireAt: 1 }, { expireAfterSeconds: 0 }) + .catch(() => { + /* void */ + }); return model as mongoose.Model>; } } diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts new file mode 100644 index 00000000..b84b215a --- /dev/null +++ b/src/drivers/PostgresDriver.ts @@ -0,0 +1,107 @@ +import { IDriver } from "./IDriver"; +import PgModule from "pg"; + +export class PostgresDriver implements IDriver { + private static instance: PostgresDriver; + private readonly _pg: typeof PgModule; + private config: PgModule.ClientConfig; + private conn: PgModule.Client | undefined; + + get pg(): typeof PgModule { + return this._pg; + } + + constructor(config: PgModule.ClientConfig) { + this.config = config; + this._pg = require("pg"); + } + + static createSingleton(config: PgModule.ClientConfig): PostgresDriver { + if (!this.instance) this.instance = new PostgresDriver(config); + return this.instance; + } + + async connect(): Promise { + this.conn = new PgModule.Client(this.config); + await this.conn.connect(); + } + + private checkConnection(): void { + if (!this.conn) { + throw new Error("No connection to postgres database"); + } + } + + async prepare(table: string): Promise { + this.checkConnection(); + await this.conn?.query( + `CREATE TABLE IF NOT EXISTS ${table} (id VARCHAR(255), value jsonb)` + ); + } + + async getAllRows(table: string): Promise<{ id: string; value: any }[]> { + this.checkConnection(); + const queryResult = await this.conn?.query(`SELECT * FROM ${table}`); + return ( + queryResult?.rows.map((row) => ({ + id: row.id, + value: row.value, + })) ?? [] + ); + } + + async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { + this.checkConnection(); + const queryResult = await this.conn?.query( + `SELECT value FROM ${table} WHERE id = $1`, + [key] + ); + + if (!queryResult || queryResult.rowCount < 1) { + return [null, false]; + } + + return [queryResult?.rows[0].value, true]; + } + + async setRowByKey( + table: string, + key: string, + value: any, + update: boolean + ): Promise { + this.checkConnection(); + + if (update) { + await this.conn?.query( + `UPDATE ${table} SET value = $1 WHERE id = $2`, + [value, key] + ); + } else { + await this.conn?.query( + `INSERT INTO ${table} (id, value) VALUES ($1, $2)`, + [key, value] + ); + } + + return value; + } + + async deleteAllRows(table: string): Promise { + this.checkConnection(); + const queryResult = await this.conn?.query(`DELETE FROM ${table}`); + return queryResult?.rowCount ?? 0; + } + + async deleteRowByKey(table: string, key: string): Promise { + this.checkConnection(); + const queryResult = await this.conn?.query( + `DELETE FROM ${table} WHERE id = $1`, + [key] + ); + return queryResult?.rowCount ?? 0; + } +} diff --git a/src/drivers/SqliteDriver.ts b/src/drivers/SqliteDriver.ts index 5feeafd2..e78daa6f 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -23,10 +23,14 @@ export class SqliteDriver implements IDriver { } public async prepare(table: string): Promise { - await this._database.exec(`CREATE TABLE IF NOT EXISTS ${table} (ID TEXT PRIMARY KEY, json TEXT)`); + await this._database.exec( + `CREATE TABLE IF NOT EXISTS ${table} (ID TEXT PRIMARY KEY, json TEXT)` + ); } - public async getAllRows(table: string): Promise<{ id: string; value: any }[]> { + public async getAllRows( + table: string + ): Promise<{ id: string; value: any }[]> { const prep = this._database.prepare(`SELECT * FROM ${table}`); const data = []; @@ -72,12 +76,16 @@ export class SqliteDriver implements IDriver { } public async deleteAllRows(table: string): Promise { - const result = await this._database.prepare(`DELETE FROM ${table}`).run(); + const result = await this._database + .prepare(`DELETE FROM ${table}`) + .run(); return result.changes; } public async deleteRowByKey(table: string, key: string): Promise { - const result = await this._database.prepare(`DELETE FROM ${table} WHERE ID=@key`).run({ key }); + const result = await this._database + .prepare(`DELETE FROM ${table} WHERE ID=@key`) + .run({ key }); return result.changes; } } diff --git a/src/index.ts b/src/index.ts index 79356863..ef7641cd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,6 +9,7 @@ export { MySQLDriver, Config } from "./drivers/MySQLDriver"; export { MemoryDriver, Table } from "./drivers/MemoryDriver"; export { JSONDriver, DataLike } from "./drivers/JSONDriver"; export { DriverUnion } from "./drivers/DriverUnion"; +export { PostgresDriver } from "./drivers/PostgresDriver"; export interface IQuickDBOptions { table?: string; @@ -244,8 +245,11 @@ export class QuickDB { const data = []; for (const i in currentArr) { - if (Array.isArray(value) ? value.includes(currentArr[i]) - : (value as any)(currentArr[i], i)) + if ( + Array.isArray(value) + ? value.includes(currentArr[i]) + : (value as any)(currentArr[i], i) + ) continue; data.push(currentArr[i]); if (once) break; From 30234a4eb794c1c80ee2affbb6fda6f432079972 Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 11:48:03 +0200 Subject: [PATCH 025/414] Added example with postgres driver --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index 56b4cedc..d3c1c901 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,30 @@ const { QuickDB, MySQLDriver } = require("quick.db"); })(); ``` +## Example With PostgresDriver + +> **NOTE:** In order to use this driver, install `npm i pg` separately. + +```js +const { QuickDB, PostgresDriver } = require("quick.db"); +(async () => { + const postgresDriver = new PostgresDriver({ + host: "localhost", + user: "me", + password: "secret", + database: "my_db", + }); + + await postgresDriver.connect(); // connect to the database **this is important** + + const db = new QuickDB({ driver: postgresDriver }); + // Now you can use quick.db as normal + + await db.set("userInfo", { difficulty: "Easy" }); + // -> { difficulty: 'Easy' } +})(); +``` + ## Example With MongoDriver > **NOTE:** In order to use this driver, install `npm i mongoose` separately. From 65ba218263610006cd683d79f86b5ff8174ed79b Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 20:27:02 +0200 Subject: [PATCH 026/414] Removed unnecessary 'await' keyword in MysqlDriver and reworked PostgresDriver --- src/drivers/MySQLDriver.ts | 4 ++-- src/drivers/PostgresDriver.ts | 45 ++++++++++++++++------------------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/drivers/MySQLDriver.ts b/src/drivers/MySQLDriver.ts index 480f780f..4203517b 100644 --- a/src/drivers/MySQLDriver.ts +++ b/src/drivers/MySQLDriver.ts @@ -33,9 +33,9 @@ export class MySQLDriver implements IDriver { // This is needed for typescript typecheking // For some reason, it doesn't work even if createPool needs a string and in an overload a PoolOptions if (typeof this.config == "string") { - this.conn = await this._mysql.createPool(this.config); + this.conn = this._mysql.createPool(this.config); } else { - this.conn = await this._mysql.createPool(this.config); + this.conn = this._mysql.createPool(this.config); } } diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index b84b215a..d5afe3ac 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -9,7 +9,7 @@ export class PostgresDriver implements IDriver { get pg(): typeof PgModule { return this._pg; - } + } constructor(config: PgModule.ClientConfig) { this.config = config; @@ -34,20 +34,18 @@ export class PostgresDriver implements IDriver { async prepare(table: string): Promise { this.checkConnection(); - await this.conn?.query( - `CREATE TABLE IF NOT EXISTS ${table} (id VARCHAR(255), value jsonb)` + await this.conn!.query( + `CREATE TABLE IF NOT EXISTS ${table} (id VARCHAR(255), value TEXT)` ); } async getAllRows(table: string): Promise<{ id: string; value: any }[]> { this.checkConnection(); - const queryResult = await this.conn?.query(`SELECT * FROM ${table}`); - return ( - queryResult?.rows.map((row) => ({ - id: row.id, - value: row.value, - })) ?? [] - ); + const queryResult = await this.conn!.query(`SELECT * FROM ${table}`); + return queryResult.rows.map((row) => ({ + id: row.id, + value: JSON.parse(row.value), + })); } async getRowByKey( @@ -55,16 +53,13 @@ export class PostgresDriver implements IDriver { key: string ): Promise<[T | null, boolean]> { this.checkConnection(); - const queryResult = await this.conn?.query( + const queryResult = await this.conn!.query( `SELECT value FROM ${table} WHERE id = $1`, [key] ); - if (!queryResult || queryResult.rowCount < 1) { - return [null, false]; - } - - return [queryResult?.rows[0].value, true]; + if (queryResult.rowCount < 1) return [null, false]; + return [JSON.parse(queryResult.rows[0].value), true]; } async setRowByKey( @@ -75,15 +70,17 @@ export class PostgresDriver implements IDriver { ): Promise { this.checkConnection(); + const stringifiedValue = JSON.stringify(value); + if (update) { - await this.conn?.query( + await this.conn!.query( `UPDATE ${table} SET value = $1 WHERE id = $2`, - [value, key] + [stringifiedValue, key] ); } else { - await this.conn?.query( + await this.conn!.query( `INSERT INTO ${table} (id, value) VALUES ($1, $2)`, - [key, value] + [key, stringifiedValue] ); } @@ -92,16 +89,16 @@ export class PostgresDriver implements IDriver { async deleteAllRows(table: string): Promise { this.checkConnection(); - const queryResult = await this.conn?.query(`DELETE FROM ${table}`); - return queryResult?.rowCount ?? 0; + const queryResult = await this.conn!.query(`DELETE FROM ${table}`); + return queryResult.rowCount; } async deleteRowByKey(table: string, key: string): Promise { this.checkConnection(); - const queryResult = await this.conn?.query( + const queryResult = await this.conn!.query( `DELETE FROM ${table} WHERE id = $1`, [key] ); - return queryResult?.rowCount ?? 0; + return queryResult.rowCount; } } From 9e93d04d3ba9ea1f5c265b3625148105e7aae2a7 Mon Sep 17 00:00:00 2001 From: Ricardo R <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 21:12:39 +0200 Subject: [PATCH 027/414] Update README.md Updated README to include mongoose and pg as possible drivers --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d3c1c901..198340f7 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ **Support:** [discord.gg/plexidev](https://discord.gg/plexidev)
**NPM:** [npmjs.com/quick.db](https://www.npmjs.com/package/quick.db) -Quick.db is an open-source package meant to provide an easy way for beginners and people of all levels to access & store data in a low to medium volume environment. All data is stored persistently via either [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) or [mysql2](https://www.npmjs.com/package/mysql2) and comes way various other quality-of-life features. +Quick.db is an open-source package meant to provide an easy way for beginners and people of all levels to access & store data in a low to medium volume environment. All data is stored persistently via either [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3), [mysql2](https://www.npmjs.com/package/mysql2), [pg](https://www.npmjs.com/package/pg) or [mongoose](https://www.npmjs.com/package/mongoose) and comes way various other quality-of-life features. - **Persistent Storage** - Data doesn't disappear through restarts - **Multiple Drivers** - You can use either better-sqlite3 or mysql2 From c7e641c6e37f99b531085468c5ac9f8169ba0217 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 12:51:34 +0000 Subject: [PATCH 028/414] Update dependency eslint to v8.37.0 --- package-lock.json | 87 ++++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index e6e0ad4e..ee5ace57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1804,14 +1804,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", - "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -1827,9 +1827,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", - "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3546,15 +3546,15 @@ } }, "node_modules/eslint": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", - "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.1", - "@eslint/js": "8.36.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -3565,8 +3565,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.5.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3628,12 +3628,15 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/eslint-scope": { @@ -3659,14 +3662,14 @@ } }, "node_modules/espree": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", - "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8818,14 +8821,14 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", - "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -8835,9 +8838,9 @@ } }, "@eslint/js": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", - "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", "dev": true }, "@faker-js/faker": { @@ -10120,15 +10123,15 @@ "dev": true }, "eslint": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", - "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.1", - "@eslint/js": "8.36.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -10139,8 +10142,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.5.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -10203,20 +10206,20 @@ } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true }, "espree": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", - "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" } }, "esprima": { From 1efd9c31c68b639355d6dfc84b4cd095a175aabd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 12:51:49 +0000 Subject: [PATCH 029/414] Update typescript-eslint monorepo to v5.57.0 --- package-lock.json | 160 +++++++++++++++++++++++----------------------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index e6e0ad4e..0fd189c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2627,15 +2627,15 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.56.0.tgz", - "integrity": "sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", + "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.56.0", - "@typescript-eslint/type-utils": "5.56.0", - "@typescript-eslint/utils": "5.56.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/type-utils": "5.57.0", + "@typescript-eslint/utils": "5.57.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -2661,14 +2661,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.56.0.tgz", - "integrity": "sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", + "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.56.0", - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/typescript-estree": "5.56.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", "debug": "^4.3.4" }, "engines": { @@ -2688,13 +2688,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.56.0.tgz", - "integrity": "sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", + "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/visitor-keys": "5.56.0" + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2705,13 +2705,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.56.0.tgz", - "integrity": "sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", + "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.56.0", - "@typescript-eslint/utils": "5.56.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/utils": "5.57.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -2732,9 +2732,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.56.0.tgz", - "integrity": "sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", + "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2745,13 +2745,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.56.0.tgz", - "integrity": "sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", + "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/visitor-keys": "5.56.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2772,17 +2772,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.56.0.tgz", - "integrity": "sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", + "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.56.0", - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/typescript-estree": "5.56.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -2798,12 +2798,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.56.0.tgz", - "integrity": "sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", + "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.56.0", + "@typescript-eslint/types": "5.57.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -9502,15 +9502,15 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.56.0.tgz", - "integrity": "sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", + "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.56.0", - "@typescript-eslint/type-utils": "5.56.0", - "@typescript-eslint/utils": "5.56.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/type-utils": "5.57.0", + "@typescript-eslint/utils": "5.57.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -9520,53 +9520,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.56.0.tgz", - "integrity": "sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", + "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.56.0", - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/typescript-estree": "5.56.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.56.0.tgz", - "integrity": "sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", + "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/visitor-keys": "5.56.0" + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0" } }, "@typescript-eslint/type-utils": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.56.0.tgz", - "integrity": "sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", + "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.56.0", - "@typescript-eslint/utils": "5.56.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/utils": "5.57.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.56.0.tgz", - "integrity": "sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", + "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.56.0.tgz", - "integrity": "sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", + "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/visitor-keys": "5.56.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -9575,28 +9575,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.56.0.tgz", - "integrity": "sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", + "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.56.0", - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/typescript-estree": "5.56.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.56.0.tgz", - "integrity": "sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", + "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.56.0", + "@typescript-eslint/types": "5.57.0", "eslint-visitor-keys": "^3.3.0" } }, From df9ae0cc1934ca955efa003e15eaee71e9b1dddc Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:36:07 -0700 Subject: [PATCH 030/414] Create .github/workflows/npm-publish.yml --- .github/workflows/npm-publish.yml | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/npm-publish.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml new file mode 100644 index 00000000..4f051d3e --- /dev/null +++ b/.github/workflows/npm-publish.yml @@ -0,0 +1,33 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Node.js Package + +on: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - run: npm ci + - run: npm test + + publish-npm: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + registry-url: https://registry.npmjs.org/ + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.npm_token}} From fa7809e3a744c197aa09f58810f1ea34b8550e07 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:36:29 -0700 Subject: [PATCH 031/414] Delete codeql.yml --- .github/workflows/codeql.yml | 76 ------------------------------------ 1 file changed, 76 deletions(-) delete mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 2d08f4a2..00000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,76 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [ "dev" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "dev" ] - schedule: - - cron: '15 9 * * 5' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'javascript' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Use only 'java' to analyze code written in Java, Kotlin or both - # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - - # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # â„šī¸ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - with: - category: "/language:${{matrix.language}}" From 336340a1a5f33c8279c679aefd80a36ce5fd0fc8 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:39:23 -0700 Subject: [PATCH 032/414] Update node.js.yml --- .github/workflows/node.js.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index dca91910..4bc3bd01 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -6,6 +6,11 @@ name: Node.js CI on: push: branches: ["dev"] + paths: + - "src/**" + - "tests/**" + - "package.json" + - "tsconfig.json" pull_request: branches: ["dev"] From 8dcf64039a62ccd4cda4b8c3bc22453cf624790f Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sat, 25 Mar 2023 22:40:39 -0400 Subject: [PATCH 033/414] Changing scripts to use build --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 56dbfd48..f757deda 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,8 @@ "build": "tsc", "lint": "eslint --ext \".ts\" ./src", "prettier": "prettier --write ./src", - "prepublishOnly": "tsc", - "prepare": "tsc", + "prepublishOnly": "npm run build", + "prepare": "npm run build", "docgen": "typedoc" }, "lint-staged": { From 1b3ba48b1bdd6570a08af59b8b11743fba3a8b2d Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:41:13 -0700 Subject: [PATCH 034/414] Update npm-publish.yml --- .github/workflows/npm-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 4f051d3e..648cd6ba 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -6,6 +6,7 @@ name: Node.js Package on: release: types: [created] + workflow_dispatch: jobs: build: From b071f5b7035c816c6624e49c3207a0e605b21d1a Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 08:09:27 -0700 Subject: [PATCH 035/414] Delete npm-publish.yml --- .github/workflows/npm-publish.yml | 34 ------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 .github/workflows/npm-publish.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml deleted file mode 100644 index 648cd6ba..00000000 --- a/.github/workflows/npm-publish.yml +++ /dev/null @@ -1,34 +0,0 @@ -# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created -# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages - -name: Node.js Package - -on: - release: - types: [created] - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - run: npm ci - - run: npm test - - publish-npm: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - registry-url: https://registry.npmjs.org/ - - run: npm ci - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} From 6ac9791c967a12c1f53670d5087d438353e7528c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 15:58:50 +0000 Subject: [PATCH 036/414] Add renovate.json --- renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000..39a2b6e9 --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base" + ] +} From bd33f0a31948198c3aac4ff4e33c4769a93d21af Mon Sep 17 00:00:00 2001 From: DarkenLM Date: Sun, 26 Mar 2023 17:18:27 +0100 Subject: [PATCH 037/414] Added DriverUnion --- src/drivers/DriverUnion.ts | 101 +++++++++++++++++++++++++++++++++++++ src/index.ts | 1 + 2 files changed, 102 insertions(+) create mode 100644 src/drivers/DriverUnion.ts diff --git a/src/drivers/DriverUnion.ts b/src/drivers/DriverUnion.ts new file mode 100644 index 00000000..256dc853 --- /dev/null +++ b/src/drivers/DriverUnion.ts @@ -0,0 +1,101 @@ +import { IDriver } from "./IDriver"; + +/** + * DriverUnion - Union of Drivers + * + * This driver allows the usage of multiple drivers and multiple driver instances at the same time. + * Useful for redundancies and live backups. + * + * The main driver is the driver used for all operations, while the rest of the drivers are called + * mirror drivers, and are only used for data reflection. + * By the default, the main driver is the first one the union is initialized with. + * This can be changed by modifying the {@link DriverUnion.main | `main` property} on the union instance. + * + * @example + * const SQLiteInstance = new SqliteDriver("./json.sqlite") + * const JSONInstance = new JSONDriver("./backup.json"); + * const DriverUnionInstance = new DriverUnion(SQLiteInstance, JSONInstance); + * const db = new QuickDB({ driver: DriverUnionInstance }) + * + * // Regular db usage + */ +export class DriverUnion implements IDriver { + private drivers: IDriver[]; + private _main: number; + + /** @property {number} main Index of the main driver. */ + public get main(): number { + return this._main; + } + public set main(value: number) { + if (!(value in this.drivers)) return; + + this._main = value; + } + + constructor(main: IDriver, ...mirrors: IDriver[]) { + this.drivers = [main, ...mirrors]; + this._main = 0; + } + + public async prepare(table: string): Promise { + for (const driver of this.drivers) await driver.prepare(table); + } + + public async getAllRows( + table: string + ): Promise<{ id: string; value: any }[]> { + const main = this.drivers[this._main]; + return await main.getAllRows(table); + } + + public async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { + const main = this.drivers[this._main]; + return await main.getRowByKey(table, key); + } + + public async setRowByKey( + table: string, + key: string, + value: any, + update: boolean + ): Promise { + let val: T = undefined as T; // It's guaranteed that at least one driver is present. + + for (let i = 0; i < this.drivers.length; i++) { + const driver = this.drivers[i]; + + const res = await driver.setRowByKey(table, key, value, update); + if (i === this._main) val = res; + } + + return val; + } + + public async deleteAllRows(table: string): Promise { + let rows = 0; + for (let i = 0; i < this.drivers.length; i++) { + const driver = this.drivers[i]; + + const delRows = await driver.deleteAllRows(table); + if (i === this._main) rows = delRows; + } + + return rows; + } + + public async deleteRowByKey(table: string, key: string): Promise { + let rows = 0; + for (let i = 0; i < this.drivers.length; i++) { + const driver = this.drivers[i]; + + const delRows = await driver.deleteRowByKey(table, key); + if (i === this._main) rows = delRows; + } + + return rows; + } +} diff --git a/src/index.ts b/src/index.ts index 9e690522..c6ee119c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,6 +8,7 @@ export { SqliteDriver } from "./drivers/SqliteDriver"; export { MySQLDriver, Config } from "./drivers/MySQLDriver"; export { MemoryDriver, Table } from "./drivers/MemoryDriver"; export { JSONDriver, DataLike } from "./drivers/JSONDriver"; +export { DriverUnion } from "./drivers/DriverUnion"; export interface IQuickDBOptions { table?: string; From bb74961af0cd7d5748ed45b2f7a09b12ed009453 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 16:02:14 +0000 Subject: [PATCH 038/414] Update actions/deploy-pages action to v2 --- .github/workflows/docgen-static.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docgen-static.yml b/.github/workflows/docgen-static.yml index 9535dec6..f2724340 100644 --- a/.github/workflows/docgen-static.yml +++ b/.github/workflows/docgen-static.yml @@ -49,4 +49,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v2 From c93a0f73a6643f641acbf7ceb455d404076d98fe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 16:02:27 +0000 Subject: [PATCH 039/414] Update dependency @faker-js/faker to v7 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1827d24b..cc0a2f0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@faker-js/faker": "^6.1.2", + "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", "@types/jest": "^27.0.3", "@types/lodash": "^4.14.178", @@ -1829,9 +1829,9 @@ } }, "node_modules/@faker-js/faker": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-6.3.1.tgz", - "integrity": "sha512-8YXBE2ZcU/pImVOHX7MWrSR/X5up7t6rPWZlk34RwZEcdr3ua6X+32pSd6XuOQRN+vbuvYNfA6iey8NbrjuMFQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", + "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", "dev": true, "engines": { "node": ">=14.0.0", @@ -8735,9 +8735,9 @@ "dev": true }, "@faker-js/faker": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-6.3.1.tgz", - "integrity": "sha512-8YXBE2ZcU/pImVOHX7MWrSR/X5up7t6rPWZlk34RwZEcdr3ua6X+32pSd6XuOQRN+vbuvYNfA6iey8NbrjuMFQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", + "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", "dev": true }, "@humanwhocodes/config-array": { diff --git a/package.json b/package.json index f757deda..aec067b0 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "out/index.js", "types": "out/index.d.ts", "devDependencies": { - "@faker-js/faker": "^6.1.2", + "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", "@types/jest": "^27.0.3", "@types/lodash": "^4.14.178", From eba774c78fb7d6bdc6d8e46a7558be93310e146f Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 13:53:51 -0400 Subject: [PATCH 040/414] Fixed problem with faker-js v7 --- tests/delete.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/delete.test.ts b/tests/delete.test.ts index 4310d385..2b253663 100644 --- a/tests/delete.test.ts +++ b/tests/delete.test.ts @@ -1,4 +1,4 @@ -import faker from "@faker-js/faker"; +import { faker } from "@faker-js/faker"; import { QuickDB } from "../src"; import { EntryGenerator } from "./generators/EntryGenerator"; import { SqliteDriverMock } from "./mocks/SqliteDriver"; From 11a94ab44a7f4bc97703106dc1ee9ff016c2a6af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 17:47:00 +0000 Subject: [PATCH 041/414] Update dependency @types/jest to v29 --- package-lock.json | 239 +++++++++++++--------------------------------- package.json | 2 +- 2 files changed, 69 insertions(+), 172 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc0a2f0e..0ed63403 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "devDependencies": { "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", - "@types/jest": "^27.0.3", + "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", @@ -2492,15 +2492,47 @@ } }, "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", "dev": true, "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -3404,15 +3436,6 @@ "node": ">=8" } }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4717,30 +4740,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-diff/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-docblock": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", @@ -4897,30 +4896,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-message-util": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", @@ -6140,32 +6115,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -6258,12 +6207,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -9275,13 +9218,38 @@ } }, "@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", "dev": true, "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + } } }, "@types/json-schema": { @@ -9910,12 +9878,6 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -10886,26 +10848,6 @@ } } }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - } - } - }, "jest-docblock": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", @@ -11028,26 +10970,6 @@ } } }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - } - } - }, "jest-message-util": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", @@ -11989,25 +11911,6 @@ "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -12066,12 +11969,6 @@ } } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", diff --git a/package.json b/package.json index aec067b0..3848fb1f 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "devDependencies": { "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", - "@types/jest": "^27.0.3", + "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", From 996590ce9e8c9df04b930fd395f847c8425b91ea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 17:47:12 +0000 Subject: [PATCH 042/414] Update dependency better-sqlite3 to v8 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ed63403..6fca48fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^7.4.5", + "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", @@ -3037,9 +3037,9 @@ ] }, "node_modules/better-sqlite3": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.2.tgz", - "integrity": "sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", + "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -9595,9 +9595,9 @@ "dev": true }, "better-sqlite3": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.2.tgz", - "integrity": "sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", + "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", "dev": true, "requires": { "bindings": "^1.5.0", diff --git a/package.json b/package.json index 3848fb1f..d1f08124 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^7.4.5", + "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", From e3bb07af0fc68d22080a6523d8925f1e202e42b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 18:04:31 +0000 Subject: [PATCH 043/414] Update dependency mongoose to v7 --- package-lock.json | 290 +++++++++++++++++++++++++++++++++++----------- package.json | 2 +- 2 files changed, 225 insertions(+), 67 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6fca48fe..d11c4a1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^6.9.1", + "mongoose": "^7.0.0", "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", @@ -51,6 +51,7 @@ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^1.11.1" } @@ -60,7 +61,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/sha256-browser": { "version": "3.0.0", @@ -68,6 +70,7 @@ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -84,7 +87,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/sha256-js": { "version": "3.0.0", @@ -92,6 +96,7 @@ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -103,7 +108,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "3.0.0", @@ -111,6 +117,7 @@ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^1.11.1" } @@ -120,7 +127,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/util": { "version": "3.0.0", @@ -128,6 +136,7 @@ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -139,7 +148,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-sdk/abort-controller": { "version": "3.296.0", @@ -147,6 +157,7 @@ "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -161,6 +172,7 @@ "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -208,6 +220,7 @@ "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -252,6 +265,7 @@ "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -296,6 +310,7 @@ "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -344,6 +359,7 @@ "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-config-provider": "3.295.0", @@ -360,6 +376,7 @@ "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -376,6 +393,7 @@ "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -391,6 +409,7 @@ "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/property-provider": "3.296.0", @@ -408,6 +427,7 @@ "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -429,6 +449,7 @@ "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -451,6 +472,7 @@ "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -467,6 +489,7 @@ "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-sso": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -485,6 +508,7 @@ "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -500,6 +524,7 @@ "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/client-sso": "3.299.0", @@ -526,6 +551,7 @@ "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/querystring-builder": "3.296.0", @@ -540,6 +566,7 @@ "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-buffer-from": "3.295.0", @@ -556,6 +583,7 @@ "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -567,6 +595,7 @@ "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -580,6 +609,7 @@ "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -595,6 +625,7 @@ "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/middleware-serde": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -612,6 +643,7 @@ "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -627,6 +659,7 @@ "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -641,6 +674,7 @@ "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -656,6 +690,7 @@ "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/service-error-classification": "3.296.0", @@ -675,6 +710,7 @@ "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/middleware-signing": "3.299.0", "@aws-sdk/types": "3.296.0", @@ -690,6 +726,7 @@ "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -704,6 +741,7 @@ "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -722,6 +760,7 @@ "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -735,6 +774,7 @@ "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -751,6 +791,7 @@ "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -767,6 +808,7 @@ "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/abort-controller": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -784,6 +826,7 @@ "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -798,6 +841,7 @@ "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -812,6 +856,7 @@ "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-uri-escape": "3.295.0", @@ -827,6 +872,7 @@ "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -841,6 +887,7 @@ "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", "dev": true, "optional": true, + "peer": true, "engines": { "node": ">=14.0.0" } @@ -851,6 +898,7 @@ "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -865,6 +913,7 @@ "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/is-array-buffer": "3.295.0", "@aws-sdk/types": "3.296.0", @@ -884,6 +933,7 @@ "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/middleware-stack": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -899,6 +949,7 @@ "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-sso-oidc": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -916,6 +967,7 @@ "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -929,6 +981,7 @@ "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/querystring-parser": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -941,6 +994,7 @@ "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -955,6 +1009,7 @@ "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" } @@ -965,6 +1020,7 @@ "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -978,6 +1034,7 @@ "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/is-array-buffer": "3.295.0", "tslib": "^2.5.0" @@ -992,6 +1049,7 @@ "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1005,6 +1063,7 @@ "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -1021,6 +1080,7 @@ "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/config-resolver": "3.299.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -1039,6 +1099,7 @@ "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -1053,6 +1114,7 @@ "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1066,6 +1128,7 @@ "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1079,6 +1142,7 @@ "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1092,6 +1156,7 @@ "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/service-error-classification": "3.296.0", "tslib": "^2.5.0" @@ -1106,6 +1171,7 @@ "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1119,6 +1185,7 @@ "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "bowser": "^2.11.0", @@ -1131,6 +1198,7 @@ "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -1154,6 +1222,7 @@ "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -1168,6 +1237,7 @@ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.3.1" } @@ -3072,7 +3142,8 @@ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -3146,15 +3217,12 @@ } }, "node_modules/bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", + "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", "dev": true, - "dependencies": { - "buffer": "^5.6.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">=14.20.1" } }, "node_modules/buffer": { @@ -3906,6 +3974,7 @@ "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "strnum": "^1.0.5" }, @@ -5628,21 +5697,36 @@ "dev": true }, "node_modules/mongodb": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", - "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", + "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", "dev": true, "dependencies": { - "bson": "^4.7.0", - "mongodb-connection-string-url": "^2.5.4", + "bson": "^5.0.1", + "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" }, "engines": { - "node": ">=12.9.0" + "node": ">=14.20.1" }, "optionalDependencies": { - "@aws-sdk/credential-providers": "^3.186.0", "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "mongodb-client-encryption": "^2.3.0", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } } }, "node_modules/mongodb-connection-string-url": { @@ -5656,21 +5740,21 @@ } }, "node_modules/mongoose": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.4.tgz", - "integrity": "sha512-xCHVVEaOuhZxbthsKYxvHexWafJqWsl03sD7y7uyyt3euLd1sQoDI8DKueeJq9+hrbWkMkAGbGzgFPTIRqenPg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", + "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", "dev": true, "dependencies": { - "bson": "^4.7.0", + "bson": "^5.0.1", "kareem": "2.5.1", - "mongodb": "4.14.0", + "mongodb": "5.1.0", "mpath": "0.9.0", - "mquery": "4.0.3", + "mquery": "5.0.0", "ms": "2.1.3", "sift": "16.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -5693,15 +5777,15 @@ } }, "node_modules/mquery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", - "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", "dev": true, "dependencies": { "debug": "4.x" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/ms": { @@ -6689,7 +6773,8 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/supports-color": { "version": "7.2.0", @@ -6850,7 +6935,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/tsutils": { "version": "3.21.0", @@ -7023,6 +7109,7 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "optional": true, + "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -7222,6 +7309,7 @@ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^1.11.1" }, @@ -7231,7 +7319,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7241,6 +7330,7 @@ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -7257,7 +7347,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7267,6 +7358,7 @@ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -7278,7 +7370,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7288,6 +7381,7 @@ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^1.11.1" }, @@ -7297,7 +7391,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7307,6 +7402,7 @@ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -7318,7 +7414,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7328,6 +7425,7 @@ "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7339,6 +7437,7 @@ "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7383,6 +7482,7 @@ "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7424,6 +7524,7 @@ "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7465,6 +7566,7 @@ "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7510,6 +7612,7 @@ "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-config-provider": "3.295.0", @@ -7523,6 +7626,7 @@ "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -7536,6 +7640,7 @@ "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7548,6 +7653,7 @@ "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/property-provider": "3.296.0", @@ -7562,6 +7668,7 @@ "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -7580,6 +7687,7 @@ "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -7599,6 +7707,7 @@ "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -7612,6 +7721,7 @@ "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-sso": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -7627,6 +7737,7 @@ "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7639,6 +7750,7 @@ "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/client-sso": "3.299.0", @@ -7662,6 +7774,7 @@ "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/querystring-builder": "3.296.0", @@ -7676,6 +7789,7 @@ "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-buffer-from": "3.295.0", @@ -7689,6 +7803,7 @@ "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7700,6 +7815,7 @@ "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -7710,6 +7826,7 @@ "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7722,6 +7839,7 @@ "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/middleware-serde": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7736,6 +7854,7 @@ "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7748,6 +7867,7 @@ "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7759,6 +7879,7 @@ "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7771,6 +7892,7 @@ "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/service-error-classification": "3.296.0", @@ -7787,6 +7909,7 @@ "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/middleware-signing": "3.299.0", "@aws-sdk/types": "3.296.0", @@ -7799,6 +7922,7 @@ "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7810,6 +7934,7 @@ "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -7825,6 +7950,7 @@ "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -7835,6 +7961,7 @@ "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7848,6 +7975,7 @@ "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -7861,6 +7989,7 @@ "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/abort-controller": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -7875,6 +8004,7 @@ "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7886,6 +8016,7 @@ "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7897,6 +8028,7 @@ "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-uri-escape": "3.295.0", @@ -7909,6 +8041,7 @@ "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7919,7 +8052,8 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.296.0.tgz", "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@aws-sdk/shared-ini-file-loader": { "version": "3.296.0", @@ -7927,6 +8061,7 @@ "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7938,6 +8073,7 @@ "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/is-array-buffer": "3.295.0", "@aws-sdk/types": "3.296.0", @@ -7954,6 +8090,7 @@ "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/middleware-stack": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7966,6 +8103,7 @@ "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-sso-oidc": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -7980,6 +8118,7 @@ "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -7990,6 +8129,7 @@ "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/querystring-parser": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -8002,6 +8142,7 @@ "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -8013,6 +8154,7 @@ "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8023,6 +8165,7 @@ "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8033,6 +8176,7 @@ "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/is-array-buffer": "3.295.0", "tslib": "^2.5.0" @@ -8044,6 +8188,7 @@ "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8054,6 +8199,7 @@ "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -8067,6 +8213,7 @@ "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/config-resolver": "3.299.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -8082,6 +8229,7 @@ "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -8093,6 +8241,7 @@ "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8103,6 +8252,7 @@ "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8113,6 +8263,7 @@ "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8123,6 +8274,7 @@ "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/service-error-classification": "3.296.0", "tslib": "^2.5.0" @@ -8134,6 +8286,7 @@ "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8144,6 +8297,7 @@ "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "bowser": "^2.11.0", @@ -8156,6 +8310,7 @@ "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -8168,6 +8323,7 @@ "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -8179,6 +8335,7 @@ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.3.1" } @@ -9629,7 +9786,8 @@ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "brace-expansion": { "version": "1.1.11", @@ -9681,13 +9839,10 @@ } }, "bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", - "dev": true, - "requires": { - "buffer": "^5.6.0" - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", + "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", + "dev": true }, "buffer": { "version": "5.7.1", @@ -10241,6 +10396,7 @@ "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", "dev": true, "optional": true, + "peer": true, "requires": { "strnum": "^1.0.5" } @@ -11545,14 +11701,13 @@ "dev": true }, "mongodb": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", - "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", + "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", "dev": true, "requires": { - "@aws-sdk/credential-providers": "^3.186.0", - "bson": "^4.7.0", - "mongodb-connection-string-url": "^2.5.4", + "bson": "^5.0.1", + "mongodb-connection-string-url": "^2.6.0", "saslprep": "^1.0.3", "socks": "^2.7.1" } @@ -11568,16 +11723,16 @@ } }, "mongoose": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.4.tgz", - "integrity": "sha512-xCHVVEaOuhZxbthsKYxvHexWafJqWsl03sD7y7uyyt3euLd1sQoDI8DKueeJq9+hrbWkMkAGbGzgFPTIRqenPg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", + "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", "dev": true, "requires": { - "bson": "^4.7.0", + "bson": "^5.0.1", "kareem": "2.5.1", - "mongodb": "4.14.0", + "mongodb": "5.1.0", "mpath": "0.9.0", - "mquery": "4.0.3", + "mquery": "5.0.0", "ms": "2.1.3", "sift": "16.0.1" }, @@ -11597,9 +11752,9 @@ "dev": true }, "mquery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", - "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", "dev": true, "requires": { "debug": "4.x" @@ -12305,7 +12460,8 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "supports-color": { "version": "7.2.0", @@ -12415,7 +12571,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "tsutils": { "version": "3.21.0", @@ -12532,7 +12689,8 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "v8-to-istanbul": { "version": "9.1.0", diff --git a/package.json b/package.json index d1f08124..281c1f2a 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^6.9.1", + "mongoose": "^7.0.0", "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", From 8cce575b0f6040703339b83ce926497939b4cf4d Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 14:14:42 -0400 Subject: [PATCH 044/414] Refactor for mongoose v7 --- src/drivers/MongoDriver.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 15e4c09e..01dafda9 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -61,14 +61,10 @@ export class MongoDriver implements IDriver { ); } - public connect(): Promise { - return new Promise((resolve, reject) => { - this.mongoose.createConnection(this.url, this.options, (err: any, connection: any) => { - if (err) return reject(err); - this.conn = connection; - resolve(this); - }); - }); + public async connect(): Promise { + const connection = await this.mongoose.createConnection(this.url, this.options).asPromise(); + this.conn = connection; + return this; } public async close(force?: boolean): Promise { From 7e087735f0ea89ab5d3119ea580a5b8bb9ddd90b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 18:04:45 +0000 Subject: [PATCH 045/414] Update dependency typescript to v5 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index d11c4a1d..edd9f263 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^4.5.4", + "typescript": "^5.0.0", "write-file-atomic": "^5.0.0" } }, @@ -7050,16 +7050,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/update-browserslist-db": { @@ -12654,9 +12654,9 @@ } }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true }, "update-browserslist-db": { diff --git a/package.json b/package.json index 281c1f2a..b964fbca 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^4.5.4", + "typescript": "^5.0.0", "write-file-atomic": "^5.0.0" }, "dependencies": { From 791e5c7eeca0b375a0bf725a129841e01a44fd11 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 14:32:10 -0400 Subject: [PATCH 046/414] Switched dependencies to peerDependencies and adding node restriction --- package.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index b964fbca..31e31757 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,9 @@ "description": "An easy, non-locking, persistent better-sqlite3 wrapper designed to be easy to setup & utilize", "main": "out/index.js", "types": "out/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, "devDependencies": { "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", @@ -12,16 +15,18 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^7.0.0", - "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^5.0.0", + "typescript": "^5.0.0" + }, + "peerDependencies": { + "better-sqlite3": "^8.0.0", + "mongoose": "^7.0.0", + "mysql2": "^3.2.0", "write-file-atomic": "^5.0.0" }, "dependencies": { From fc8dba77f29b6c6d967743626131e1fd9d61897e Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 11:28:44 +0200 Subject: [PATCH 047/414] Added postgres driver --- package-lock.json | 769 +++++++++++++++++++--------------- package.json | 2 + src/drivers/DriverUnion.ts | 38 +- src/drivers/MemoryDriver.ts | 5 +- src/drivers/MongoDriver.ts | 63 ++- src/drivers/PostgresDriver.ts | 107 +++++ src/drivers/SqliteDriver.ts | 16 +- src/index.ts | 8 +- 8 files changed, 628 insertions(+), 380 deletions(-) create mode 100644 src/drivers/PostgresDriver.ts diff --git a/package-lock.json b/package-lock.json index edd9f263..057fc658 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,19 +16,26 @@ "@types/better-sqlite3": "^7.4.2", "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", + "@types/pg": "^8.6.6", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^7.0.0", - "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^5.0.0", + "typescript": "^5.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "better-sqlite3": "^8.0.0", + "mongoose": "^7.0.0", + "mysql2": "^3.2.0", + "pg": "^8.10.0", "write-file-atomic": "^5.0.0" } }, @@ -49,7 +56,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -60,7 +66,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -68,7 +73,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -86,7 +90,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -94,7 +97,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -107,7 +109,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -115,7 +116,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -126,7 +126,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -134,7 +133,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -147,7 +145,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -155,7 +152,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.296.0.tgz", "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -170,7 +166,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.299.0.tgz", "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -218,7 +213,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.299.0.tgz", "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -263,7 +257,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.299.0.tgz", "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -308,7 +301,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.299.0.tgz", "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -357,7 +349,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.299.0.tgz", "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -374,7 +365,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.299.0.tgz", "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -391,7 +381,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.296.0.tgz", "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -407,7 +396,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.296.0.tgz", "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -425,7 +413,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.299.0.tgz", "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -447,7 +434,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.299.0.tgz", "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -470,7 +456,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.296.0.tgz", "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -487,7 +472,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.299.0.tgz", "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -506,7 +490,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.296.0.tgz", "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -522,7 +505,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.299.0.tgz", "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -549,7 +531,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.296.0.tgz", "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -564,7 +545,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.296.0.tgz", "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -581,7 +561,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.296.0.tgz", "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -593,7 +572,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.295.0.tgz", "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -607,7 +585,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.296.0.tgz", "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -623,7 +600,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.299.0.tgz", "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -641,7 +617,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.296.0.tgz", "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -657,7 +632,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.296.0.tgz", "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -672,7 +646,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.296.0.tgz", "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -688,7 +661,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.296.0.tgz", "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -708,7 +680,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.299.0.tgz", "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -724,7 +695,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.296.0.tgz", "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -739,7 +709,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.299.0.tgz", "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -758,7 +727,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.296.0.tgz", "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -772,7 +740,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.299.0.tgz", "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -789,7 +756,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.296.0.tgz", "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -806,7 +772,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.296.0.tgz", "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -824,7 +789,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.296.0.tgz", "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -839,7 +803,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.296.0.tgz", "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -854,7 +817,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.296.0.tgz", "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -870,7 +832,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.296.0.tgz", "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -885,7 +846,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.296.0.tgz", "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", - "dev": true, "optional": true, "peer": true, "engines": { @@ -896,7 +856,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.296.0.tgz", "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -911,7 +870,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.299.0.tgz", "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -931,7 +889,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.296.0.tgz", "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -947,7 +904,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.299.0.tgz", "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -965,7 +921,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.296.0.tgz", "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -979,7 +934,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.296.0.tgz", "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -992,7 +946,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.295.0.tgz", "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1007,7 +960,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.295.0.tgz", "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1018,7 +970,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.295.0.tgz", "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1032,7 +983,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.295.0.tgz", "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1047,7 +997,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.295.0.tgz", "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1061,7 +1010,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.296.0.tgz", "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1078,7 +1026,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.299.0.tgz", "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1097,7 +1044,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.296.0.tgz", "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1112,7 +1058,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.295.0.tgz", "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1126,7 +1071,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.295.0.tgz", "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1140,7 +1084,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.296.0.tgz", "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1154,7 +1097,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.296.0.tgz", "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1169,7 +1111,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.295.0.tgz", "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1183,7 +1124,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.299.0.tgz", "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1196,7 +1136,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.299.0.tgz", "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1220,7 +1159,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.295.0.tgz", "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1235,7 +1173,6 @@ "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -2618,8 +2555,18 @@ "node_modules/@types/node": { "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", - "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==", - "dev": true + "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" + }, + "node_modules/@types/pg": { + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.6.tgz", + "integrity": "sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } }, "node_modules/@types/prettier": { "version": "2.7.2", @@ -2643,13 +2590,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==", - "dev": true + "peer": true }, "node_modules/@types/whatwg-url": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dev": true, + "peer": true, "dependencies": { "@types/node": "*", "@types/webidl-conversions": "*" @@ -3090,7 +3037,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -3104,14 +3050,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/better-sqlite3": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", - "dev": true, "hasInstallScript": true, + "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.0" @@ -3121,7 +3068,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, + "peer": true, "dependencies": { "file-uri-to-path": "1.0.0" } @@ -3130,7 +3077,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "peer": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3141,7 +3088,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true, "optional": true, "peer": true }, @@ -3220,7 +3166,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", - "dev": true, + "peer": true, "engines": { "node": ">=14.20.1" } @@ -3229,7 +3175,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -3244,6 +3189,7 @@ "url": "https://feross.org/support" } ], + "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -3255,6 +3201,15 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3318,7 +3273,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "peer": true }, "node_modules/ci-info": { "version": "3.8.0", @@ -3419,7 +3374,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3436,7 +3390,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, + "peer": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -3457,7 +3411,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, + "peer": true, "engines": { "node": ">=4.0.0" } @@ -3481,7 +3435,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10" } @@ -3490,7 +3444,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -3556,7 +3510,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, + "peer": true, "dependencies": { "once": "^1.4.0" } @@ -3830,7 +3784,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -3972,7 +3926,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -4020,7 +3973,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "peer": true }, "node_modules/fill-range": { "version": "7.0.1", @@ -4073,7 +4026,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "peer": true }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -4105,7 +4058,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, + "peer": true, "dependencies": { "is-property": "^1.0.2" } @@ -4153,7 +4106,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true + "peer": true }, "node_modules/glob": { "version": "7.2.3", @@ -4274,7 +4227,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -4286,7 +4239,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -4300,7 +4252,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/ignore": { "version": "5.2.4", @@ -4350,7 +4303,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -4368,20 +4320,19 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "peer": true }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true + "peer": true }, "node_modules/is-arrayish": { "version": "0.2.1", @@ -4462,7 +4413,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "dev": true + "peer": true }, "node_modules/is-stream": { "version": "2.0.1", @@ -5467,7 +5418,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "dev": true, + "peer": true, "engines": { "node": ">=12.0.0" } @@ -5545,7 +5496,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==", - "dev": true + "peer": true }, "node_modules/lru-cache": { "version": "5.1.1", @@ -5617,8 +5568,8 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/merge-stream": { "version": "2.0.0", @@ -5661,7 +5612,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, + "peer": true, "engines": { "node": ">=10" }, @@ -5685,7 +5636,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5694,13 +5645,13 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "peer": true }, "node_modules/mongodb": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", - "dev": true, + "peer": true, "dependencies": { "bson": "^5.0.1", "mongodb-connection-string-url": "^2.6.0", @@ -5733,7 +5684,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dev": true, + "peer": true, "dependencies": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" @@ -5743,7 +5694,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", - "dev": true, + "peer": true, "dependencies": { "bson": "^5.0.1", "kareem": "2.5.1", @@ -5765,13 +5716,13 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "peer": true }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "dev": true, + "peer": true, "engines": { "node": ">=4.0.0" } @@ -5780,7 +5731,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dev": true, + "peer": true, "dependencies": { "debug": "4.x" }, @@ -5791,14 +5742,13 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mysql2": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.2.0.tgz", "integrity": "sha512-0Vn6a9WSrq6fWwvPgrvIwnOCldiEcgbzapVRDAtDZ4cMTxN7pnGqCTx8EG32S/NYXl6AXkdO+9hV1tSIi/LigA==", - "dev": true, + "peer": true, "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -5817,7 +5767,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -5826,7 +5776,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", - "dev": true, + "peer": true, "dependencies": { "lru-cache": "^7.14.1" }, @@ -5838,7 +5788,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -5847,7 +5797,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "peer": true }, "node_modules/natural-compare": { "version": "1.4.0", @@ -5865,7 +5815,7 @@ "version": "3.33.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz", "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==", - "dev": true, + "peer": true, "dependencies": { "semver": "^7.3.5" }, @@ -5910,7 +5860,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -5986,6 +5935,12 @@ "node": ">=6" } }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==", + "peer": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6058,6 +6013,84 @@ "node": ">=8" } }, + "node_modules/pg": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "peer": true, + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.6.0", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", + "peer": true + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "peer": true, + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "peer": true, + "dependencies": { + "split2": "^4.1.0" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -6149,11 +6182,46 @@ "node": ">=8" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, + "peer": true, "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -6216,7 +6284,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, + "peer": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -6226,7 +6294,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, "engines": { "node": ">=6" } @@ -6271,7 +6338,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, + "peer": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -6286,7 +6353,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6295,7 +6362,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6422,7 +6489,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -6436,20 +6502,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "peer": true }, "node_modules/saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "dev": true, "optional": true, + "peer": true, "dependencies": { "sparse-bitfield": "^3.0.3" }, @@ -6461,7 +6528,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -6476,7 +6542,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -6487,14 +6552,13 @@ "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/seq-queue": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", - "dev": true + "peer": true }, "node_modules/shebang-command": { "version": "2.0.0", @@ -6533,19 +6597,17 @@ "version": "16.0.1", "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==", - "dev": true + "peer": true }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, "funding": [ { "type": "github", @@ -6559,13 +6621,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/simple-get": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, "funding": [ { "type": "github", @@ -6580,6 +6642,7 @@ "url": "https://feross.org/support" } ], + "peer": true, "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -6605,7 +6668,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, + "peer": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -6615,7 +6678,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, + "peer": true, "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -6648,12 +6711,21 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "dev": true, "optional": true, + "peer": true, "dependencies": { "memory-pager": "^1.0.2" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "peer": true, + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -6664,7 +6736,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -6694,7 +6766,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "peer": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -6772,7 +6844,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true, "optional": true, "peer": true }, @@ -6804,7 +6875,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, + "peer": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -6816,7 +6887,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, + "peer": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -6879,7 +6950,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, + "peer": true, "dependencies": { "punycode": "^2.1.1" }, @@ -6934,7 +7005,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true, "optional": true, "peer": true }, @@ -6963,7 +7033,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, + "peer": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -7101,13 +7171,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "peer": true }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "optional": true, "peer": true, "bin": { @@ -7159,7 +7228,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -7168,7 +7237,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, + "peer": true, "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -7221,14 +7290,13 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, + "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -7237,6 +7305,14 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -7307,7 +7383,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7318,7 +7393,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7328,7 +7402,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7346,7 +7419,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7356,7 +7428,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7369,7 +7440,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7379,7 +7449,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7390,7 +7459,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7400,7 +7468,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7413,7 +7480,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7423,7 +7489,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.296.0.tgz", "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7435,7 +7500,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.299.0.tgz", "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7480,7 +7544,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.299.0.tgz", "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7522,7 +7585,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.299.0.tgz", "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7564,7 +7626,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.299.0.tgz", "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7610,7 +7671,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.299.0.tgz", "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7624,7 +7684,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.299.0.tgz", "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7638,7 +7697,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.296.0.tgz", "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7651,7 +7709,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.296.0.tgz", "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7666,7 +7723,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.299.0.tgz", "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7685,7 +7741,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.299.0.tgz", "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7705,7 +7760,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.296.0.tgz", "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7719,7 +7773,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.299.0.tgz", "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7735,7 +7788,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.296.0.tgz", "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7748,7 +7800,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.299.0.tgz", "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7772,7 +7823,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.296.0.tgz", "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7787,7 +7837,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.296.0.tgz", "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7801,7 +7850,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.296.0.tgz", "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7813,7 +7861,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.295.0.tgz", "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7824,7 +7871,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.296.0.tgz", "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7837,7 +7883,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.299.0.tgz", "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7852,7 +7897,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.296.0.tgz", "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7865,7 +7909,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.296.0.tgz", "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7877,7 +7920,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.296.0.tgz", "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7890,7 +7932,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.296.0.tgz", "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7907,7 +7948,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.299.0.tgz", "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7920,7 +7960,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.296.0.tgz", "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7932,7 +7971,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.299.0.tgz", "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7948,7 +7986,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.296.0.tgz", "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7959,7 +7996,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.299.0.tgz", "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7973,7 +8009,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.296.0.tgz", "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7987,7 +8022,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.296.0.tgz", "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8002,7 +8036,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.296.0.tgz", "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8014,7 +8047,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.296.0.tgz", "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8026,7 +8058,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.296.0.tgz", "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8039,7 +8070,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.296.0.tgz", "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8051,7 +8081,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.296.0.tgz", "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", - "dev": true, "optional": true, "peer": true }, @@ -8059,7 +8088,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.296.0.tgz", "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8071,7 +8099,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.299.0.tgz", "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8088,7 +8115,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.296.0.tgz", "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8101,7 +8127,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.299.0.tgz", "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8116,7 +8141,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.296.0.tgz", "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8127,7 +8151,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.296.0.tgz", "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8140,7 +8163,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.295.0.tgz", "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8152,7 +8174,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.295.0.tgz", "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8163,7 +8184,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.295.0.tgz", "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8174,7 +8194,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.295.0.tgz", "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8186,7 +8205,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.295.0.tgz", "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8197,7 +8215,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.296.0.tgz", "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8211,7 +8228,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.299.0.tgz", "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8227,7 +8243,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.296.0.tgz", "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8239,7 +8254,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.295.0.tgz", "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8250,7 +8264,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.295.0.tgz", "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8261,7 +8274,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.296.0.tgz", "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8272,7 +8284,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.296.0.tgz", "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8284,7 +8295,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.295.0.tgz", "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8295,7 +8305,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.299.0.tgz", "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8308,7 +8317,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.299.0.tgz", "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8321,7 +8329,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.295.0.tgz", "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8333,7 +8340,6 @@ "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -9424,8 +9430,18 @@ "@types/node": { "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", - "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==", - "dev": true + "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" + }, + "@types/pg": { + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.6.tgz", + "integrity": "sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==", + "dev": true, + "requires": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } }, "@types/prettier": { "version": "2.7.2", @@ -9449,13 +9465,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==", - "dev": true + "peer": true }, "@types/whatwg-url": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dev": true, + "peer": true, "requires": { "@types/node": "*", "@types/webidl-conversions": "*" @@ -9749,13 +9765,13 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "peer": true }, "better-sqlite3": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", - "dev": true, + "peer": true, "requires": { "bindings": "^1.5.0", "prebuild-install": "^7.1.0" @@ -9765,7 +9781,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, + "peer": true, "requires": { "file-uri-to-path": "1.0.0" } @@ -9774,7 +9790,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "peer": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -9785,7 +9801,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true, "optional": true, "peer": true }, @@ -9842,13 +9857,13 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", - "dev": true + "peer": true }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, + "peer": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -9860,6 +9875,12 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "peer": true + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -9898,7 +9919,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "peer": true }, "ci-info": { "version": "3.8.0", @@ -9977,7 +9998,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -9986,7 +10006,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, + "peer": true, "requires": { "mimic-response": "^3.1.0" } @@ -10001,7 +10021,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "peer": true }, "deep-is": { "version": "0.1.4", @@ -10019,13 +10039,13 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "dev": true + "peer": true }, "detect-libc": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true + "peer": true }, "detect-newline": { "version": "3.1.0", @@ -10073,7 +10093,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, + "peer": true, "requires": { "once": "^1.4.0" } @@ -10278,7 +10298,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true + "peer": true }, "expect": { "version": "29.5.0", @@ -10394,7 +10414,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -10432,7 +10451,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "peer": true }, "fill-range": { "version": "7.0.1", @@ -10473,7 +10492,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "peer": true }, "fs.realpath": { "version": "1.0.0", @@ -10498,7 +10517,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, + "peer": true, "requires": { "is-property": "^1.0.2" } @@ -10531,7 +10550,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true + "peer": true }, "glob": { "version": "7.2.3", @@ -10622,7 +10641,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "peer": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -10631,7 +10650,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "peer": true }, "ignore": { "version": "5.2.4", @@ -10662,8 +10681,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "inflight": { "version": "1.0.6", @@ -10678,20 +10696,19 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "peer": true }, "ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true + "peer": true }, "is-arrayish": { "version": "0.2.1", @@ -10751,7 +10768,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "dev": true + "peer": true }, "is-stream": { "version": "2.0.1", @@ -11523,7 +11540,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "dev": true + "peer": true }, "kleur": { "version": "3.0.3", @@ -11583,7 +11600,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==", - "dev": true + "peer": true }, "lru-cache": { "version": "5.1.1", @@ -11642,8 +11659,8 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "dev": true, - "optional": true + "optional": true, + "peer": true }, "merge-stream": { "version": "2.0.0", @@ -11677,7 +11694,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true + "peer": true }, "minimatch": { "version": "3.1.2", @@ -11692,19 +11709,19 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true + "peer": true }, "mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "peer": true }, "mongodb": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", - "dev": true, + "peer": true, "requires": { "bson": "^5.0.1", "mongodb-connection-string-url": "^2.6.0", @@ -11716,7 +11733,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dev": true, + "peer": true, "requires": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" @@ -11726,7 +11743,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", - "dev": true, + "peer": true, "requires": { "bson": "^5.0.1", "kareem": "2.5.1", @@ -11741,7 +11758,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "peer": true } } }, @@ -11749,13 +11766,13 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "dev": true + "peer": true }, "mquery": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dev": true, + "peer": true, "requires": { "debug": "4.x" } @@ -11763,14 +11780,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mysql2": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.2.0.tgz", "integrity": "sha512-0Vn6a9WSrq6fWwvPgrvIwnOCldiEcgbzapVRDAtDZ4cMTxN7pnGqCTx8EG32S/NYXl6AXkdO+9hV1tSIi/LigA==", - "dev": true, + "peer": true, "requires": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -11786,7 +11802,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true + "peer": true } } }, @@ -11794,7 +11810,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", - "dev": true, + "peer": true, "requires": { "lru-cache": "^7.14.1" }, @@ -11803,7 +11819,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true + "peer": true } } }, @@ -11811,7 +11827,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "peer": true }, "natural-compare": { "version": "1.4.0", @@ -11829,7 +11845,7 @@ "version": "3.33.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz", "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==", - "dev": true, + "peer": true, "requires": { "semver": "^7.3.5" } @@ -11865,7 +11881,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -11917,6 +11932,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==", + "peer": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -11968,6 +11989,65 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pg": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "peer": true, + "requires": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.6.0", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + } + }, + "pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", + "peer": true + }, + "pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + }, + "pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "peer": true, + "requires": {} + }, + "pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } + }, + "pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "peer": true, + "requires": { + "split2": "^4.1.0" + } + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -12034,11 +12114,34 @@ } } }, + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" + }, + "postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "requires": { + "xtend": "^4.0.0" + } + }, "prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, + "peer": true, "requires": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -12080,7 +12183,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, + "peer": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -12089,8 +12192,7 @@ "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "pure-rand": { "version": "6.0.1", @@ -12108,7 +12210,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, + "peer": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -12120,7 +12222,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true + "peer": true } } }, @@ -12128,7 +12230,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "peer": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -12209,20 +12311,20 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "peer": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "peer": true }, "saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "dev": true, "optional": true, + "peer": true, "requires": { "sparse-bitfield": "^3.0.3" } @@ -12231,7 +12333,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "requires": { "lru-cache": "^6.0.0" }, @@ -12240,7 +12341,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -12248,8 +12348,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -12257,7 +12356,7 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", - "dev": true + "peer": true }, "shebang-command": { "version": "2.0.0", @@ -12290,25 +12389,24 @@ "version": "16.0.1", "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==", - "dev": true + "peer": true }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true + "peer": true }, "simple-get": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, + "peer": true, "requires": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -12331,13 +12429,13 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true + "peer": true }, "socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, + "peer": true, "requires": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -12363,12 +12461,18 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "dev": true, "optional": true, + "peer": true, "requires": { "memory-pager": "^1.0.2" } }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "peer": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -12379,7 +12483,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "dev": true + "peer": true }, "stack-utils": { "version": "2.0.6", @@ -12402,7 +12506,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "peer": true, "requires": { "safe-buffer": "~5.2.0" } @@ -12459,7 +12563,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true, "optional": true, "peer": true }, @@ -12482,7 +12585,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, + "peer": true, "requires": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -12494,7 +12597,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, + "peer": true, "requires": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -12545,7 +12648,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, + "peer": true, "requires": { "punycode": "^2.1.1" } @@ -12570,7 +12673,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true, "optional": true, "peer": true }, @@ -12595,7 +12697,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, + "peer": true, "requires": { "safe-buffer": "^5.0.1" } @@ -12682,13 +12784,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "peer": true }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "optional": true, "peer": true }, @@ -12736,13 +12837,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true + "peer": true }, "whatwg-url": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, + "peer": true, "requires": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -12777,19 +12878,23 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, + "peer": true, "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" } }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 31e31757..df11dead 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@types/better-sqlite3": "^7.4.2", "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", + "@types/pg": "^8.6.6", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", @@ -27,6 +28,7 @@ "better-sqlite3": "^8.0.0", "mongoose": "^7.0.0", "mysql2": "^3.2.0", + "pg": "^8.10.0", "write-file-atomic": "^5.0.0" }, "dependencies": { diff --git a/src/drivers/DriverUnion.ts b/src/drivers/DriverUnion.ts index 256dc853..73d09fe7 100644 --- a/src/drivers/DriverUnion.ts +++ b/src/drivers/DriverUnion.ts @@ -2,40 +2,40 @@ import { IDriver } from "./IDriver"; /** * DriverUnion - Union of Drivers - * + * * This driver allows the usage of multiple drivers and multiple driver instances at the same time. * Useful for redundancies and live backups. - * - * The main driver is the driver used for all operations, while the rest of the drivers are called - * mirror drivers, and are only used for data reflection. + * + * The main driver is the driver used for all operations, while the rest of the drivers are called + * mirror drivers, and are only used for data reflection. * By the default, the main driver is the first one the union is initialized with. * This can be changed by modifying the {@link DriverUnion.main | `main` property} on the union instance. - * + * * @example * const SQLiteInstance = new SqliteDriver("./json.sqlite") * const JSONInstance = new JSONDriver("./backup.json"); * const DriverUnionInstance = new DriverUnion(SQLiteInstance, JSONInstance); * const db = new QuickDB({ driver: DriverUnionInstance }) - * + * * // Regular db usage */ export class DriverUnion implements IDriver { private drivers: IDriver[]; - private _main: number; + private _main: number; - /** @property {number} main Index of the main driver. */ - public get main(): number { - return this._main; - } - public set main(value: number) { - if (!(value in this.drivers)) return; + /** @property {number} main Index of the main driver. */ + public get main(): number { + return this._main; + } + public set main(value: number) { + if (!(value in this.drivers)) return; - this._main = value; - } + this._main = value; + } constructor(main: IDriver, ...mirrors: IDriver[]) { this.drivers = [main, ...mirrors]; - this._main = 0; + this._main = 0; } public async prepare(table: string): Promise { @@ -63,13 +63,13 @@ export class DriverUnion implements IDriver { value: any, update: boolean ): Promise { - let val: T = undefined as T; // It's guaranteed that at least one driver is present. + let val: T = undefined as T; // It's guaranteed that at least one driver is present. for (let i = 0; i < this.drivers.length; i++) { - const driver = this.drivers[i]; + const driver = this.drivers[i]; const res = await driver.setRowByKey(table, key, value, update); - if (i === this._main) val = res; + if (i === this._main) val = res; } return val; diff --git a/src/drivers/MemoryDriver.ts b/src/drivers/MemoryDriver.ts index 08cbe876..aa02c597 100644 --- a/src/drivers/MemoryDriver.ts +++ b/src/drivers/MemoryDriver.ts @@ -37,7 +37,10 @@ export class MemoryDriver implements IDriver { return [...store.entries()].map(([k, v]) => ({ id: k, value: v })); } - public async getRowByKey(table: string, key: string): Promise<[T | null, boolean]> { + public async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { const store = this.getOrCreateTable(table); const val = store.get(key) as T; return [val == null ? null : val, false]; diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 01dafda9..4b5c217e 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -36,33 +36,38 @@ export class MongoDriver implements IDriver { private models = new Map>(); docSchema: mongoose.Schema>; - public constructor(public url: string, public options: mongoose.ConnectOptions = {}) { + public constructor( + public url: string, + public options: mongoose.ConnectOptions = {} + ) { this.mongoose = require("mongoose"); this.docSchema = new this.mongoose.Schema( { ID: { type: this.mongoose.SchemaTypes.String, required: true, - unique: true + unique: true, }, data: { type: this.mongoose.SchemaTypes.Mixed, - required: false + required: false, }, expireAt: { type: this.mongoose.SchemaTypes.Date, required: false, - default: null - } + default: null, + }, }, { - timestamps: true + timestamps: true, } ); } public async connect(): Promise { - const connection = await this.mongoose.createConnection(this.url, this.options).asPromise(); + const connection = await this.mongoose + .createConnection(this.url, this.options) + .asPromise(); this.conn = connection; return this; } @@ -72,15 +77,19 @@ export class MongoDriver implements IDriver { } private checkConnection(): void { - if (this.conn == null) throw new Error(`MongoDriver is not connected to the database`); + if (this.conn == null) + throw new Error(`MongoDriver is not connected to the database`); } public async prepare(table: string): Promise { this.checkConnection(); - if (!this.models.has(table)) this.models.set(table, this.modelSchema(table)); + if (!this.models.has(table)) + this.models.set(table, this.modelSchema(table)); } - private async getModel(name: string): Promise | undefined> { + private async getModel( + name: string + ): Promise | undefined> { await this.prepare(name); return this.models.get(name); } @@ -91,11 +100,14 @@ export class MongoDriver implements IDriver { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return (await model!.find()).map((row: any) => ({ id: row.ID, - value: row.data + value: row.data, })); } - async getRowByKey(table: string, key: string): Promise<[T | null, boolean]> { + async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { this.checkConnection(); const model = await this.getModel(table); const res = await model!.findOne({ ID: key }); @@ -104,15 +116,20 @@ export class MongoDriver implements IDriver { } // eslint-disable-next-line @typescript-eslint/no-unused-vars - async setRowByKey(table: string, key: string, value: any, _update: boolean): Promise { + async setRowByKey( + table: string, + key: string, + value: any, + _update: boolean + ): Promise { this.checkConnection(); const model = await this.getModel(table); await model?.findOneAndUpdate( { - ID: key + ID: key, }, { - $set: { data: value } + $set: { data: value }, }, { upsert: true } ); @@ -125,7 +142,6 @@ export class MongoDriver implements IDriver { const model = await this.getModel(table); const res = await model?.deleteMany(); - return res!.deletedCount!; } @@ -134,20 +150,23 @@ export class MongoDriver implements IDriver { const model = await this.getModel(table); const res = await model?.deleteMany({ - ID: key + ID: key, }); - return res!.deletedCount!; } // eslint-disable-next-line @typescript-eslint/ban-types - modelSchema(modelName = "JSON"): mongoose.Model> { + modelSchema( + modelName = "JSON" + ): mongoose.Model> { this.checkConnection(); const model = this.conn!.model(modelName, this.docSchema); - model.collection.createIndex({ expireAt: 1 }, { expireAfterSeconds: 0 }).catch(() => { - /* void */ - }); + model.collection + .createIndex({ expireAt: 1 }, { expireAfterSeconds: 0 }) + .catch(() => { + /* void */ + }); return model as mongoose.Model>; } } diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts new file mode 100644 index 00000000..b84b215a --- /dev/null +++ b/src/drivers/PostgresDriver.ts @@ -0,0 +1,107 @@ +import { IDriver } from "./IDriver"; +import PgModule from "pg"; + +export class PostgresDriver implements IDriver { + private static instance: PostgresDriver; + private readonly _pg: typeof PgModule; + private config: PgModule.ClientConfig; + private conn: PgModule.Client | undefined; + + get pg(): typeof PgModule { + return this._pg; + } + + constructor(config: PgModule.ClientConfig) { + this.config = config; + this._pg = require("pg"); + } + + static createSingleton(config: PgModule.ClientConfig): PostgresDriver { + if (!this.instance) this.instance = new PostgresDriver(config); + return this.instance; + } + + async connect(): Promise { + this.conn = new PgModule.Client(this.config); + await this.conn.connect(); + } + + private checkConnection(): void { + if (!this.conn) { + throw new Error("No connection to postgres database"); + } + } + + async prepare(table: string): Promise { + this.checkConnection(); + await this.conn?.query( + `CREATE TABLE IF NOT EXISTS ${table} (id VARCHAR(255), value jsonb)` + ); + } + + async getAllRows(table: string): Promise<{ id: string; value: any }[]> { + this.checkConnection(); + const queryResult = await this.conn?.query(`SELECT * FROM ${table}`); + return ( + queryResult?.rows.map((row) => ({ + id: row.id, + value: row.value, + })) ?? [] + ); + } + + async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { + this.checkConnection(); + const queryResult = await this.conn?.query( + `SELECT value FROM ${table} WHERE id = $1`, + [key] + ); + + if (!queryResult || queryResult.rowCount < 1) { + return [null, false]; + } + + return [queryResult?.rows[0].value, true]; + } + + async setRowByKey( + table: string, + key: string, + value: any, + update: boolean + ): Promise { + this.checkConnection(); + + if (update) { + await this.conn?.query( + `UPDATE ${table} SET value = $1 WHERE id = $2`, + [value, key] + ); + } else { + await this.conn?.query( + `INSERT INTO ${table} (id, value) VALUES ($1, $2)`, + [key, value] + ); + } + + return value; + } + + async deleteAllRows(table: string): Promise { + this.checkConnection(); + const queryResult = await this.conn?.query(`DELETE FROM ${table}`); + return queryResult?.rowCount ?? 0; + } + + async deleteRowByKey(table: string, key: string): Promise { + this.checkConnection(); + const queryResult = await this.conn?.query( + `DELETE FROM ${table} WHERE id = $1`, + [key] + ); + return queryResult?.rowCount ?? 0; + } +} diff --git a/src/drivers/SqliteDriver.ts b/src/drivers/SqliteDriver.ts index 5feeafd2..e78daa6f 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -23,10 +23,14 @@ export class SqliteDriver implements IDriver { } public async prepare(table: string): Promise { - await this._database.exec(`CREATE TABLE IF NOT EXISTS ${table} (ID TEXT PRIMARY KEY, json TEXT)`); + await this._database.exec( + `CREATE TABLE IF NOT EXISTS ${table} (ID TEXT PRIMARY KEY, json TEXT)` + ); } - public async getAllRows(table: string): Promise<{ id: string; value: any }[]> { + public async getAllRows( + table: string + ): Promise<{ id: string; value: any }[]> { const prep = this._database.prepare(`SELECT * FROM ${table}`); const data = []; @@ -72,12 +76,16 @@ export class SqliteDriver implements IDriver { } public async deleteAllRows(table: string): Promise { - const result = await this._database.prepare(`DELETE FROM ${table}`).run(); + const result = await this._database + .prepare(`DELETE FROM ${table}`) + .run(); return result.changes; } public async deleteRowByKey(table: string, key: string): Promise { - const result = await this._database.prepare(`DELETE FROM ${table} WHERE ID=@key`).run({ key }); + const result = await this._database + .prepare(`DELETE FROM ${table} WHERE ID=@key`) + .run({ key }); return result.changes; } } diff --git a/src/index.ts b/src/index.ts index c6ee119c..6e5373f0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,6 +9,7 @@ export { MySQLDriver, Config } from "./drivers/MySQLDriver"; export { MemoryDriver, Table } from "./drivers/MemoryDriver"; export { JSONDriver, DataLike } from "./drivers/JSONDriver"; export { DriverUnion } from "./drivers/DriverUnion"; +export { PostgresDriver } from "./drivers/PostgresDriver"; export interface IQuickDBOptions { table?: string; @@ -249,8 +250,11 @@ export class QuickDB { const data = []; for (const i in currentArr) { - if (Array.isArray(value) ? value.includes(currentArr[i]) - : (value as any)(currentArr[i], i)) + if ( + Array.isArray(value) + ? value.includes(currentArr[i]) + : (value as any)(currentArr[i], i) + ) continue; data.push(currentArr[i]); if (once) break; From 5506e4b7a97f7637b42bfb601e3e70d6f3de3cca Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 11:48:03 +0200 Subject: [PATCH 048/414] Added example with postgres driver --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index 56b4cedc..d3c1c901 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,30 @@ const { QuickDB, MySQLDriver } = require("quick.db"); })(); ``` +## Example With PostgresDriver + +> **NOTE:** In order to use this driver, install `npm i pg` separately. + +```js +const { QuickDB, PostgresDriver } = require("quick.db"); +(async () => { + const postgresDriver = new PostgresDriver({ + host: "localhost", + user: "me", + password: "secret", + database: "my_db", + }); + + await postgresDriver.connect(); // connect to the database **this is important** + + const db = new QuickDB({ driver: postgresDriver }); + // Now you can use quick.db as normal + + await db.set("userInfo", { difficulty: "Easy" }); + // -> { difficulty: 'Easy' } +})(); +``` + ## Example With MongoDriver > **NOTE:** In order to use this driver, install `npm i mongoose` separately. From 18365a5d2d78cd4a59854e8233753df9779a99d1 Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 20:27:02 +0200 Subject: [PATCH 049/414] Removed unnecessary 'await' keyword in MysqlDriver and reworked PostgresDriver --- src/drivers/MySQLDriver.ts | 4 ++-- src/drivers/PostgresDriver.ts | 45 ++++++++++++++++------------------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/drivers/MySQLDriver.ts b/src/drivers/MySQLDriver.ts index 480f780f..4203517b 100644 --- a/src/drivers/MySQLDriver.ts +++ b/src/drivers/MySQLDriver.ts @@ -33,9 +33,9 @@ export class MySQLDriver implements IDriver { // This is needed for typescript typecheking // For some reason, it doesn't work even if createPool needs a string and in an overload a PoolOptions if (typeof this.config == "string") { - this.conn = await this._mysql.createPool(this.config); + this.conn = this._mysql.createPool(this.config); } else { - this.conn = await this._mysql.createPool(this.config); + this.conn = this._mysql.createPool(this.config); } } diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index b84b215a..d5afe3ac 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -9,7 +9,7 @@ export class PostgresDriver implements IDriver { get pg(): typeof PgModule { return this._pg; - } + } constructor(config: PgModule.ClientConfig) { this.config = config; @@ -34,20 +34,18 @@ export class PostgresDriver implements IDriver { async prepare(table: string): Promise { this.checkConnection(); - await this.conn?.query( - `CREATE TABLE IF NOT EXISTS ${table} (id VARCHAR(255), value jsonb)` + await this.conn!.query( + `CREATE TABLE IF NOT EXISTS ${table} (id VARCHAR(255), value TEXT)` ); } async getAllRows(table: string): Promise<{ id: string; value: any }[]> { this.checkConnection(); - const queryResult = await this.conn?.query(`SELECT * FROM ${table}`); - return ( - queryResult?.rows.map((row) => ({ - id: row.id, - value: row.value, - })) ?? [] - ); + const queryResult = await this.conn!.query(`SELECT * FROM ${table}`); + return queryResult.rows.map((row) => ({ + id: row.id, + value: JSON.parse(row.value), + })); } async getRowByKey( @@ -55,16 +53,13 @@ export class PostgresDriver implements IDriver { key: string ): Promise<[T | null, boolean]> { this.checkConnection(); - const queryResult = await this.conn?.query( + const queryResult = await this.conn!.query( `SELECT value FROM ${table} WHERE id = $1`, [key] ); - if (!queryResult || queryResult.rowCount < 1) { - return [null, false]; - } - - return [queryResult?.rows[0].value, true]; + if (queryResult.rowCount < 1) return [null, false]; + return [JSON.parse(queryResult.rows[0].value), true]; } async setRowByKey( @@ -75,15 +70,17 @@ export class PostgresDriver implements IDriver { ): Promise { this.checkConnection(); + const stringifiedValue = JSON.stringify(value); + if (update) { - await this.conn?.query( + await this.conn!.query( `UPDATE ${table} SET value = $1 WHERE id = $2`, - [value, key] + [stringifiedValue, key] ); } else { - await this.conn?.query( + await this.conn!.query( `INSERT INTO ${table} (id, value) VALUES ($1, $2)`, - [key, value] + [key, stringifiedValue] ); } @@ -92,16 +89,16 @@ export class PostgresDriver implements IDriver { async deleteAllRows(table: string): Promise { this.checkConnection(); - const queryResult = await this.conn?.query(`DELETE FROM ${table}`); - return queryResult?.rowCount ?? 0; + const queryResult = await this.conn!.query(`DELETE FROM ${table}`); + return queryResult.rowCount; } async deleteRowByKey(table: string, key: string): Promise { this.checkConnection(); - const queryResult = await this.conn?.query( + const queryResult = await this.conn!.query( `DELETE FROM ${table} WHERE id = $1`, [key] ); - return queryResult?.rowCount ?? 0; + return queryResult.rowCount; } } From 4616f7ade4f408d7a0629dca0457fb24f8923501 Mon Sep 17 00:00:00 2001 From: Ricardo R <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 21:12:39 +0200 Subject: [PATCH 050/414] Update README.md Updated README to include mongoose and pg as possible drivers --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d3c1c901..198340f7 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ **Support:** [discord.gg/plexidev](https://discord.gg/plexidev)
**NPM:** [npmjs.com/quick.db](https://www.npmjs.com/package/quick.db) -Quick.db is an open-source package meant to provide an easy way for beginners and people of all levels to access & store data in a low to medium volume environment. All data is stored persistently via either [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) or [mysql2](https://www.npmjs.com/package/mysql2) and comes way various other quality-of-life features. +Quick.db is an open-source package meant to provide an easy way for beginners and people of all levels to access & store data in a low to medium volume environment. All data is stored persistently via either [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3), [mysql2](https://www.npmjs.com/package/mysql2), [pg](https://www.npmjs.com/package/pg) or [mongoose](https://www.npmjs.com/package/mongoose) and comes way various other quality-of-life features. - **Persistent Storage** - Data doesn't disappear through restarts - **Multiple Drivers** - You can use either better-sqlite3 or mysql2 From 1d9fe90b0e87af72b0930b6949392a8aa36172fd Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 17:16:26 -0400 Subject: [PATCH 051/414] Adding docker compose --- .github/workflows/node.js.yml | 19 +++++++++++++------ docker-compose.yml | 27 +++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 docker-compose.yml diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 4bc3bd01..b33a7ce8 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -2,7 +2,6 @@ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs name: Node.js CI - on: push: branches: ["dev"] @@ -13,18 +12,26 @@ on: - "tsconfig.json" pull_request: branches: ["dev"] - +env: + MYSQL_PORT: 3306 + MYSQL_DATABASE: test + MYSQL_ROOT_PASSWORD: root + MONGO_PORT: 27017 + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: root + MONGO_INITDB_DATABASE: test jobs: build: runs-on: ubuntu-latest - strategy: matrix: node-version: [18.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - steps: - uses: actions/checkout@v3 + - name: Setup environment + - run: docker compose -f docker-compose.yml up -d + - name: Wait for databases + - run: sleep 30s - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: @@ -32,5 +39,5 @@ jobs: cache: "npm" - run: npm ci - run: npm run build --if-present - - run: npm test - run: npm run lint + - run: npm test diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..96b779bb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.9" +services: + mysql: + image: mysql + container_name: mysql + restart: always + ports: + - "${MYSQL_PORT}:${MYSQL_PORT}" + networks: + - testing-network + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + mongo: + image: mongo + container_name: mongo + restart: always + ports: + - "${MONGO_PORT}:${MONGO_PORT}" + networks: + - testing-network + environment: + MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} + MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} + MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} +networks: + testing-network: From 849dcd452d630420b1cc765dc83bf52747142c8e Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:17:30 -0700 Subject: [PATCH 052/414] Update node.js.yml --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index b33a7ce8..748c8d1e 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -4,7 +4,7 @@ name: Node.js CI on: push: - branches: ["dev"] + branches: ["dev", "feature/integration-tests"] paths: - "src/**" - "tests/**" From de0b3425aae1f3d31163573b9d884b809ba40b9c Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:18:48 -0700 Subject: [PATCH 053/414] Update node.js.yml --- .github/workflows/node.js.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 748c8d1e..df1ab152 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,8 +3,9 @@ name: Node.js CI on: + workflow_dispatch: push: - branches: ["dev", "feature/integration-tests"] + branches: ["dev"] paths: - "src/**" - "tests/**" From ebc31c5870c5fb935028b141847a43d84278a2f3 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:21:16 -0700 Subject: [PATCH 054/414] Update node.js.yml --- .github/workflows/node.js.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index df1ab152..2a24955b 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -30,9 +30,9 @@ jobs: steps: - uses: actions/checkout@v3 - name: Setup environment - - run: docker compose -f docker-compose.yml up -d + run: docker compose -f docker-compose.yml up -d - name: Wait for databases - - run: sleep 30s + run: sleep 30s - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: From 87dd92c5fa771446dbdec654466a437fb32663a0 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:22:58 -0700 Subject: [PATCH 055/414] Update node.js.yml --- .github/workflows/node.js.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 2a24955b..9be1c45c 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,14 +3,8 @@ name: Node.js CI on: - workflow_dispatch: push: - branches: ["dev"] - paths: - - "src/**" - - "tests/**" - - "package.json" - - "tsconfig.json" + branches: ["dev", "feature/integration-tests"] pull_request: branches: ["dev"] env: From d704b06123704dea674df40bf7d48128a889f673 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Mon, 27 Mar 2023 10:12:24 -0400 Subject: [PATCH 056/414] POC new export system --- package.json | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/package.json b/package.json index df11dead..57be1e67 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,36 @@ "dependencies": { "lodash": "^4.17.21" }, + "exports": { + ".": { + "require": "./out/index.js", + "types": "./out/index.d.ts" + }, + "./SqliteDriver": { + "require": "./out/drivers/SqliteDriver.js", + "types": "./out/drivers/SqliteDriver.d.ts" + }, + "./MySQLDriver": { + "require": "./out/drivers/MySQLDriver.js", + "types": "./out/drivers/MySQLDriver.d.ts" + }, + "./MongoDriver": { + "require": "./out/drivers/MongoDriver.js", + "types": "./out/drivers/MongoDriver.d.ts" + }, + "./MemoryDriver": { + "require": "./out/drivers/MemoryDriver.js", + "types": "./out/drivers/MemoryDriver.d.ts" + }, + "./JSONDriver": { + "require": "./out/drivers/JSONDriver.js", + "types": "./out/drivers/JSONDriver.d.ts" + }, + "./DriverUnion": { + "require": "./out/drivers/DriverUnion.js", + "types": "./out/drivers/DriverUnion.d.ts" + } + }, "scripts": { "test": "jest --roots tests", "build": "tsc", From 32e9d740da23f9c4249f5804bfcf3c392c8dc732 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 09:04:29 -0400 Subject: [PATCH 057/414] Testing integration test CI --- .github/workflows/node.js.yml | 6 ++-- package-lock.json | 22 ++++++++++++++ package.json | 6 +++- tests/integration/driver.test.ts | 47 +++++++++++++++++++++++++++++ tests/{ => unit}/add.test.ts | 6 ++-- tests/{ => unit}/delete.test.ts | 6 ++-- tests/{ => unit}/pop.test.ts | 6 ++-- tests/{ => unit}/pull.test.ts | 6 ++-- tests/{ => unit}/push.test.ts | 6 ++-- tests/{ => unit}/set.test.ts | 6 ++-- tests/{ => unit}/shift.test.ts | 6 ++-- tests/{ => unit}/startsWith.test.ts | 6 ++-- tests/{ => unit}/sub.test.ts | 6 ++-- tests/{ => unit}/unshift.test.ts | 6 ++-- 14 files changed, 106 insertions(+), 35 deletions(-) create mode 100644 tests/integration/driver.test.ts rename tests/{ => unit}/add.test.ts (95%) rename tests/{ => unit}/delete.test.ts (91%) rename tests/{ => unit}/pop.test.ts (90%) rename tests/{ => unit}/pull.test.ts (95%) rename tests/{ => unit}/push.test.ts (96%) rename tests/{ => unit}/set.test.ts (96%) rename tests/{ => unit}/shift.test.ts (90%) rename tests/{ => unit}/startsWith.test.ts (90%) rename tests/{ => unit}/sub.test.ts (95%) rename tests/{ => unit}/unshift.test.ts (93%) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 9be1c45c..16c5b2fb 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -25,14 +25,12 @@ jobs: - uses: actions/checkout@v3 - name: Setup environment run: docker compose -f docker-compose.yml up -d - - name: Wait for databases - run: sleep 30s - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: "npm" - run: npm ci - - run: npm run build --if-present + - run: npm run build - run: npm run lint - - run: npm test + - run: npm run test:all diff --git a/package-lock.json b/package-lock.json index 057fc658..c1fd8d90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", + "dotenv": "^16.0.3", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", @@ -2556,6 +2557,7 @@ "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" +<<<<<<< Updated upstream }, "node_modules/@types/pg": { "version": "8.6.6", @@ -2567,6 +2569,8 @@ "pg-protocol": "*", "pg-types": "^2.2.0" } +======= +>>>>>>> Stashed changes }, "node_modules/@types/prettier": { "version": "2.7.2", @@ -3482,6 +3486,15 @@ "node": ">=6.0.0" } }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.340", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz", @@ -9431,6 +9444,7 @@ "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" +<<<<<<< Updated upstream }, "@types/pg": { "version": "8.6.6", @@ -9442,6 +9456,8 @@ "pg-protocol": "*", "pg-types": "^2.2.0" } +======= +>>>>>>> Stashed changes }, "@types/prettier": { "version": "2.7.2", @@ -10071,6 +10087,12 @@ "esutils": "^2.0.2" } }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true + }, "electron-to-chromium": { "version": "1.4.340", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz", diff --git a/package.json b/package.json index df11dead..40f49927 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", + "dotenv": "^16.0.3", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", @@ -35,7 +36,10 @@ "lodash": "^4.17.21" }, "scripts": { - "test": "jest --roots tests", + "test:all": "jest --roots tests", + "test:integration": "jest --roots tests/integration", + "test:unit": "jest --roots tests/unit", + "test": "npm run test:unit", "build": "tsc", "lint": "eslint --ext \".ts\" ./src", "prettier": "prettier --write ./src", diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts new file mode 100644 index 00000000..7fab30fa --- /dev/null +++ b/tests/integration/driver.test.ts @@ -0,0 +1,47 @@ +import { MySQLDriver } from "../../src"; +import * as dotenv from 'dotenv' +dotenv.config(); + +const drivers = [ + new MySQLDriver({ + host: "127.0.0.1", + user: "root", + password: process.env.MYSQL_ROOT_PASSWORD, + port: Number(process.env.MYSQL_PORT), + database: process.env.MYSQL_DATABASE, + }) +]; + +const maxTime = 60; // seconds + +async function tryConnectAndPrepare(driver: any, fn: any): Promise { + if (fn in driver) { + await driver[fn](); + await driver.prepare(process.env.MYSQL_DATABASE); + return true; + } + + return true; +} + +describe("drivers integration tests", () => { + describe("should connect to database", () => { + test.each(drivers.map(driver => [driver.constructor.name, driver]))("connects to database using %p", async (_, driver) => { + const start = new Date().getTime(); + let now = new Date().getTime(); + let status = false; + while (now - start < maxTime * 1000) { + const connected = await tryConnectAndPrepare(driver, "connect").catch(() => false); + if (connected) { + status = true; + break; + } + + now = new Date().getTime(); + } + + return expect(status).toBe(true); + }, 1000 * maxTime); + + }); +}); \ No newline at end of file diff --git a/tests/add.test.ts b/tests/unit/add.test.ts similarity index 95% rename from tests/add.test.ts rename to tests/unit/add.test.ts index 3487bcf4..617367d8 100644 --- a/tests/add.test.ts +++ b/tests/unit/add.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/delete.test.ts b/tests/unit/delete.test.ts similarity index 91% rename from tests/delete.test.ts rename to tests/unit/delete.test.ts index 2b253663..00cd7f91 100644 --- a/tests/delete.test.ts +++ b/tests/unit/delete.test.ts @@ -1,7 +1,7 @@ import { faker } from "@faker-js/faker"; -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/pop.test.ts b/tests/unit/pop.test.ts similarity index 90% rename from tests/pop.test.ts rename to tests/unit/pop.test.ts index 3cfd625e..531750eb 100644 --- a/tests/pop.test.ts +++ b/tests/unit/pop.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/pull.test.ts b/tests/unit/pull.test.ts similarity index 95% rename from tests/pull.test.ts rename to tests/unit/pull.test.ts index 52086afa..9c13777c 100644 --- a/tests/pull.test.ts +++ b/tests/unit/pull.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/push.test.ts b/tests/unit/push.test.ts similarity index 96% rename from tests/push.test.ts rename to tests/unit/push.test.ts index 4da231f6..a792de55 100644 --- a/tests/push.test.ts +++ b/tests/unit/push.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/set.test.ts b/tests/unit/set.test.ts similarity index 96% rename from tests/set.test.ts rename to tests/unit/set.test.ts index 2898ff9a..b8f1eea8 100644 --- a/tests/set.test.ts +++ b/tests/unit/set.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/shift.test.ts b/tests/unit/shift.test.ts similarity index 90% rename from tests/shift.test.ts rename to tests/unit/shift.test.ts index 655402e6..038f2f7f 100644 --- a/tests/shift.test.ts +++ b/tests/unit/shift.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/startsWith.test.ts b/tests/unit/startsWith.test.ts similarity index 90% rename from tests/startsWith.test.ts rename to tests/unit/startsWith.test.ts index 569214e1..d56f4bb1 100644 --- a/tests/startsWith.test.ts +++ b/tests/unit/startsWith.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/sub.test.ts b/tests/unit/sub.test.ts similarity index 95% rename from tests/sub.test.ts rename to tests/unit/sub.test.ts index 7af18d1d..ab1f4f73 100644 --- a/tests/sub.test.ts +++ b/tests/unit/sub.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/unshift.test.ts b/tests/unit/unshift.test.ts similarity index 93% rename from tests/unshift.test.ts rename to tests/unit/unshift.test.ts index 02080c87..03b022ec 100644 --- a/tests/unshift.test.ts +++ b/tests/unit/unshift.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), From 8039d8698a02512f52045fd5e455f4456d6da4d2 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 10:12:50 -0400 Subject: [PATCH 058/414] Adding new interface and fixed tests --- .env.dev | 14 ++++++++++++++ .github/workflows/node.js.yml | 5 ++--- docker-compose.yml | 16 +++++++++++++++- src/drivers/DriverUnion.ts | 2 +- src/drivers/MemoryDriver.ts | 2 +- src/drivers/MongoDriver.ts | 8 ++++---- src/drivers/MySQLDriver.ts | 9 +++++++-- src/drivers/PostgresDriver.ts | 9 +++++++-- src/drivers/SqliteDriver.ts | 2 +- src/index.ts | 4 ++-- src/{drivers => interfaces}/IDriver.ts | 0 src/interfaces/IRemoteDriver.ts | 6 ++++++ tests/integration/driver.test.ts | 12 +++++++----- 13 files changed, 67 insertions(+), 22 deletions(-) create mode 100644 .env.dev rename src/{drivers => interfaces}/IDriver.ts (100%) create mode 100644 src/interfaces/IRemoteDriver.ts diff --git a/.env.dev b/.env.dev new file mode 100644 index 00000000..e04e62ae --- /dev/null +++ b/.env.dev @@ -0,0 +1,14 @@ +MYSQL_PORT=3306 +MYSQL_DATABASE=test +MYSQL_USER=mysql +MYSQL_PASSWORD=root + +MONGO_PORT=27017 +MONGO_INITDB_DATABASE=test +MONGO_INITDB_ROOT_USERNAME=root +MONGO_INITDB_ROOT_PASSWORD=root + +POSTGRESS_PORT=5432 +POSTGRES_DB=test +POSTGRES_USER=postgres +POSTGRES_PASSWORD=root \ No newline at end of file diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 16c5b2fb..0bf41ef6 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -4,9 +4,9 @@ name: Node.js CI on: push: - branches: ["dev", "feature/integration-tests"] + branches: ["master", "dev", "feature/integration-tests"] pull_request: - branches: ["dev"] + branches: ["master", "dev"] env: MYSQL_PORT: 3306 MYSQL_DATABASE: test @@ -31,6 +31,5 @@ jobs: node-version: ${{ matrix.node-version }} cache: "npm" - run: npm ci - - run: npm run build - run: npm run lint - run: npm run test:all diff --git a/docker-compose.yml b/docker-compose.yml index 96b779bb..b5d6b632 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,8 +9,10 @@ services: networks: - testing-network environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_RANDOM_ROOT_PASSWORD: true mongo: image: mongo container_name: mongo @@ -23,5 +25,17 @@ services: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} + pg: + image: postgres + container_name: pg + restart: always + ports: + - "${POSTGRESS_PORT}:${POSTGRESS_PORT}" + networks: + - testing-network + environment: + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_DB: ${POSTGRES_DB} networks: testing-network: diff --git a/src/drivers/DriverUnion.ts b/src/drivers/DriverUnion.ts index 73d09fe7..fa420eba 100644 --- a/src/drivers/DriverUnion.ts +++ b/src/drivers/DriverUnion.ts @@ -1,4 +1,4 @@ -import { IDriver } from "./IDriver"; +import { IDriver } from "../interfaces/IDriver"; /** * DriverUnion - Union of Drivers diff --git a/src/drivers/MemoryDriver.ts b/src/drivers/MemoryDriver.ts index aa02c597..063eb94a 100644 --- a/src/drivers/MemoryDriver.ts +++ b/src/drivers/MemoryDriver.ts @@ -1,4 +1,4 @@ -import { IDriver } from "./IDriver"; +import { IDriver } from "../interfaces/IDriver"; export type Table = Map; diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 4b5c217e..6e340489 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -1,5 +1,5 @@ import type mongoose from "mongoose"; -import { IDriver } from "./IDriver"; +import { IRemoteDriver } from "../interfaces/IRemoteDriver"; export interface CollectionInterface { ID: string; @@ -30,7 +30,7 @@ export interface CollectionInterface { * // get something * console.log(await db.get("foo")); // -> foo */ -export class MongoDriver implements IDriver { +export class MongoDriver implements IRemoteDriver { public conn?: mongoose.Connection; public mongoose: typeof mongoose; private models = new Map>(); @@ -72,8 +72,8 @@ export class MongoDriver implements IDriver { return this; } - public async close(force?: boolean): Promise { - return await this.conn?.close(force); + public async disconnect(): Promise { + return await this.conn?.close(); } private checkConnection(): void { diff --git a/src/drivers/MySQLDriver.ts b/src/drivers/MySQLDriver.ts index 4203517b..1b7152e2 100644 --- a/src/drivers/MySQLDriver.ts +++ b/src/drivers/MySQLDriver.ts @@ -1,8 +1,8 @@ -import { IDriver } from "./IDriver"; import MySQLModule from "mysql2/promise"; +import { IRemoteDriver } from "../interfaces/IRemoteDriver"; export type Config = string | MySQLModule.PoolOptions; -export class MySQLDriver implements IDriver { +export class MySQLDriver implements IRemoteDriver { private static instance: MySQLDriver; private readonly _mysql: typeof MySQLModule; private conn?: MySQLModule.Pool; @@ -39,6 +39,11 @@ export class MySQLDriver implements IDriver { } } + async disconnect(): Promise { + this.checkConnection(); + await this.conn!.end(); + } + async prepare(table: string): Promise { this.checkConnection(); diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index d5afe3ac..bdb0af87 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -1,7 +1,7 @@ -import { IDriver } from "./IDriver"; import PgModule from "pg"; +import { IRemoteDriver } from "../interfaces/IRemoteDriver"; -export class PostgresDriver implements IDriver { +export class PostgresDriver implements IRemoteDriver { private static instance: PostgresDriver; private readonly _pg: typeof PgModule; private config: PgModule.ClientConfig; @@ -26,6 +26,11 @@ export class PostgresDriver implements IDriver { await this.conn.connect(); } + async disconnect(): Promise { + this.checkConnection(); + await this.conn!.end(); + } + private checkConnection(): void { if (!this.conn) { throw new Error("No connection to postgres database"); diff --git a/src/drivers/SqliteDriver.ts b/src/drivers/SqliteDriver.ts index e78daa6f..bed34b18 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -1,4 +1,4 @@ -import { IDriver } from "./IDriver"; +import { IDriver } from "../interfaces/IDriver"; import { Database } from "better-sqlite3"; export class SqliteDriver implements IDriver { diff --git a/src/index.ts b/src/index.ts index 6e5373f0..2bf10e2a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,8 +1,8 @@ import { set, get, unset } from "lodash"; -import { IDriver } from "./drivers/IDriver"; +import { IDriver } from "./interfaces/IDriver"; import { SqliteDriver } from "./drivers/SqliteDriver"; -export { IDriver } from "./drivers/IDriver"; +export { IDriver } from "./interfaces/IDriver"; export { MongoDriver, CollectionInterface } from "./drivers/MongoDriver"; export { SqliteDriver } from "./drivers/SqliteDriver"; export { MySQLDriver, Config } from "./drivers/MySQLDriver"; diff --git a/src/drivers/IDriver.ts b/src/interfaces/IDriver.ts similarity index 100% rename from src/drivers/IDriver.ts rename to src/interfaces/IDriver.ts diff --git a/src/interfaces/IRemoteDriver.ts b/src/interfaces/IRemoteDriver.ts new file mode 100644 index 00000000..8a4e40ee --- /dev/null +++ b/src/interfaces/IRemoteDriver.ts @@ -0,0 +1,6 @@ +import { IDriver } from "./IDriver"; + +export interface IRemoteDriver extends IDriver { + connect(): Promise; + disconnect(): Promise; +} \ No newline at end of file diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts index 7fab30fa..4826bcfc 100644 --- a/tests/integration/driver.test.ts +++ b/tests/integration/driver.test.ts @@ -1,12 +1,13 @@ import { MySQLDriver } from "../../src"; -import * as dotenv from 'dotenv' -dotenv.config(); +import * as dotenv from "dotenv"; +import { resolve } from "path"; +dotenv.config({ path: resolve(process.cwd(), ".env.dev") }); const drivers = [ new MySQLDriver({ host: "127.0.0.1", - user: "root", - password: process.env.MYSQL_ROOT_PASSWORD, + user: process.env.MYSQL_USER, + password: process.env.MYSQL_PASSWORD, port: Number(process.env.MYSQL_PORT), database: process.env.MYSQL_DATABASE, }) @@ -40,7 +41,8 @@ describe("drivers integration tests", () => { now = new Date().getTime(); } - return expect(status).toBe(true); + expect(status).toBe(true); + return await driver.disconnect(); }, 1000 * maxTime); }); From c2a37df095c6994dc6a1de47a136b1ba936cbe02 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 10:15:06 -0400 Subject: [PATCH 059/414] Fix not finding env --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 0bf41ef6..b05ba1de 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -24,7 +24,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Setup environment - run: docker compose -f docker-compose.yml up -d + run: docker compose -f docker-compose.yml --env-file .env.dev up -d - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: From 98690ad9866f0944f8a8db0631d5771c2a2f28b1 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 10:18:59 -0400 Subject: [PATCH 060/414] Removing env from yml file --- .github/workflows/node.js.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index b05ba1de..fd496256 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -7,14 +7,6 @@ on: branches: ["master", "dev", "feature/integration-tests"] pull_request: branches: ["master", "dev"] -env: - MYSQL_PORT: 3306 - MYSQL_DATABASE: test - MYSQL_ROOT_PASSWORD: root - MONGO_PORT: 27017 - MONGO_INITDB_ROOT_USERNAME: root - MONGO_INITDB_ROOT_PASSWORD: root - MONGO_INITDB_DATABASE: test jobs: build: runs-on: ubuntu-latest From cb37cc5157a670509963a06011e57e130ef36b74 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 13:28:32 -0400 Subject: [PATCH 061/414] Adding all remote drivers --- tests/integration/driver.test.ts | 36 +++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts index 4826bcfc..ec996858 100644 --- a/tests/integration/driver.test.ts +++ b/tests/integration/driver.test.ts @@ -1,8 +1,10 @@ -import { MySQLDriver } from "../../src"; +import { MongoDriver, MySQLDriver, PostgresDriver } from "../../src"; +import { IRemoteDriver } from "../../src/interfaces/IRemoteDriver"; import * as dotenv from "dotenv"; import { resolve } from "path"; dotenv.config({ path: resolve(process.cwd(), ".env.dev") }); +const maxTime = 6000; // seconds const drivers = [ new MySQLDriver({ host: "127.0.0.1", @@ -10,19 +12,23 @@ const drivers = [ password: process.env.MYSQL_PASSWORD, port: Number(process.env.MYSQL_PORT), database: process.env.MYSQL_DATABASE, + }), + new MongoDriver(`mongodb://${process.env.MONGO_INITDB_ROOT_USERNAME}:${process.env.MONGO_INITDB_ROOT_PASSWORD}@localhost:${process.env.MONGO_PORT}/${process.env.MONGO_INITDB_DATABASE}?authSource=admin`), + new PostgresDriver({ + host: "127.0.0.1", + user: process.env.POSTGRES_USER, + password: process.env.POSTGRES_PASSWORD, + port: Number(process.env.POSTGRES_PORT), + database: process.env.POSTGRES_DB, }) ]; -const maxTime = 60; // seconds - -async function tryConnectAndPrepare(driver: any, fn: any): Promise { - if (fn in driver) { - await driver[fn](); - await driver.prepare(process.env.MYSQL_DATABASE); - return true; - } +function isRemoteDriver(object: any): object is IRemoteDriver { + return "connect" in object; +} - return true; +function sleep(time: number): Promise { + return new Promise(resolve => setTimeout(resolve, time)); } describe("drivers integration tests", () => { @@ -31,11 +37,17 @@ describe("drivers integration tests", () => { const start = new Date().getTime(); let now = new Date().getTime(); let status = false; + + if (!isRemoteDriver(driver)) return true; while (now - start < maxTime * 1000) { - const connected = await tryConnectAndPrepare(driver, "connect").catch(() => false); - if (connected) { + try { + await driver.connect(); + await driver.prepare(process.env.MYSQL_DATABASE!); status = true; break; + // eslint-disable-next-line no-empty + } catch (_) { + await sleep(1000); } now = new Date().getTime(); From 951dedaa9350157017dd49c13313d73a54a109cb Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 13:32:54 -0400 Subject: [PATCH 062/414] Adding down command to stoop containers --- .github/workflows/node.js.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index fd496256..c1f3ee9d 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -25,3 +25,5 @@ jobs: - run: npm ci - run: npm run lint - run: npm run test:all + - name: Removing environment + run: docker compose -f docker-compose.yml --env-file .env.dev down From 2c4cac72996c79d33645f31384944710eb90cf25 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 13:36:44 -0400 Subject: [PATCH 063/414] Removing compose down --- .github/workflows/node.js.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index c1f3ee9d..fd496256 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -25,5 +25,3 @@ jobs: - run: npm ci - run: npm run lint - run: npm run test:all - - name: Removing environment - run: docker compose -f docker-compose.yml --env-file .env.dev down From 1e96dea01793c9d849a112bdf0e005769d783d35 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 13:39:33 -0400 Subject: [PATCH 064/414] Added all drivers --- test-driver.json | 1 + test-driver.sqlite | Bin 0 -> 12288 bytes tests/integration/driver.test.ts | 14 +++++++++----- 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 test-driver.json create mode 100644 test-driver.sqlite diff --git a/test-driver.json b/test-driver.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/test-driver.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test-driver.sqlite b/test-driver.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..8fc6947b02c706df77491c873a7bc777edf3fc92 GIT binary patch literal 12288 zcmeI#!AiqG5P;#?C`E*lUP7;PQ$Ymr=*6fj6f0=V!Jb0I6e_i$W(D7%kLPRn2p-J@ zdhR{^12bWE*}#5#n&+qKB2+rBKR?Q#7cvs(Y5I_I{1Q0*~0R#|0009JgEO6%r<0NtGP`)m!P&L6ay2*T+d(G49 zsaIRk`(%XYRe%CAs&ePO>S z&aK*9e_) { const start = new Date().getTime(); let now = new Date().getTime(); let status = false; + if (!isRemoteDriver(driver)) { + await (driver as IDriver).prepare(process.env.MYSQL_DATABASE!); + return true; + } - if (!isRemoteDriver(driver)) return true; while (now - start < maxTime * 1000) { try { await driver.connect(); await driver.prepare(process.env.MYSQL_DATABASE!); status = true; break; - // eslint-disable-next-line no-empty } catch (_) { await sleep(1000); } From 84eb378b588a3534dccbbf4d00f59b134919ce2e Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 18:22:01 -0400 Subject: [PATCH 065/414] Adding gitignore entry --- .gitignore | 4 +++- test-driver.json | 1 - test-driver.sqlite | Bin 12288 -> 0 bytes tests/integration/driver.test.ts | 11 +++++++++-- 4 files changed, 12 insertions(+), 4 deletions(-) delete mode 100644 test-driver.json delete mode 100644 test-driver.sqlite diff --git a/.gitignore b/.gitignore index 9a22b851..c574ee2d 100644 --- a/.gitignore +++ b/.gitignore @@ -136,4 +136,6 @@ dist # End of https://www.toptal.com/developers/gitignore/api/node out -.tool-versions \ No newline at end of file +.tool-versions + +integration-database \ No newline at end of file diff --git a/test-driver.json b/test-driver.json deleted file mode 100644 index 9e26dfee..00000000 --- a/test-driver.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/test-driver.sqlite b/test-driver.sqlite deleted file mode 100644 index 8fc6947b02c706df77491c873a7bc777edf3fc92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI#!AiqG5P;#?C`E*lUP7;PQ$Ymr=*6fj6f0=V!Jb0I6e_i$W(D7%kLPRn2p-J@ zdhR{^12bWE*}#5#n&+qKB2+rBKR?Q#7cvs(Y5I_I{1Q0*~0R#|0009JgEO6%r<0NtGP`)m!P&L6ay2*T+d(G49 zsaIRk`(%XYRe%CAs&ePO>S z&aK*9e_) Date: Sat, 25 Mar 2023 19:36:07 -0700 Subject: [PATCH 066/414] Create .github/workflows/npm-publish.yml --- .github/workflows/npm-publish.yml | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/npm-publish.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml new file mode 100644 index 00000000..4f051d3e --- /dev/null +++ b/.github/workflows/npm-publish.yml @@ -0,0 +1,33 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Node.js Package + +on: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - run: npm ci + - run: npm test + + publish-npm: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + registry-url: https://registry.npmjs.org/ + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.npm_token}} From ec04686ecea8de7f20b7f9ff39fe38186b48faf0 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:36:29 -0700 Subject: [PATCH 067/414] Delete codeql.yml --- .github/workflows/codeql.yml | 76 ------------------------------------ 1 file changed, 76 deletions(-) delete mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 2d08f4a2..00000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,76 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [ "dev" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "dev" ] - schedule: - - cron: '15 9 * * 5' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'javascript' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Use only 'java' to analyze code written in Java, Kotlin or both - # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - - # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # â„šī¸ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - with: - category: "/language:${{matrix.language}}" From 4ac09da7d039bc09e67bbcfcebfa5afdcc996fbd Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:39:23 -0700 Subject: [PATCH 068/414] Update node.js.yml --- .github/workflows/node.js.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index dca91910..4bc3bd01 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -6,6 +6,11 @@ name: Node.js CI on: push: branches: ["dev"] + paths: + - "src/**" + - "tests/**" + - "package.json" + - "tsconfig.json" pull_request: branches: ["dev"] From c498ca4ecac3199f1476af4f560825d251709d67 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sat, 25 Mar 2023 22:40:39 -0400 Subject: [PATCH 069/414] Changing scripts to use build --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index db90fb02..1768c5ab 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,8 @@ "build": "tsc", "lint": "eslint --ext \".ts\" ./src", "prettier": "prettier --write ./src", - "prepublishOnly": "tsc", - "prepare": "tsc", + "prepublishOnly": "npm run build", + "prepare": "npm run build", "docgen": "typedoc" }, "lint-staged": { From cd3a5c37a9d89e52a1c34b594ce172760ca6075e Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:41:13 -0700 Subject: [PATCH 070/414] Update npm-publish.yml --- .github/workflows/npm-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 4f051d3e..648cd6ba 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -6,6 +6,7 @@ name: Node.js Package on: release: types: [created] + workflow_dispatch: jobs: build: From 59f3be029647ac55f50d68e08f340027ae0db3c0 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 08:09:27 -0700 Subject: [PATCH 071/414] Delete npm-publish.yml --- .github/workflows/npm-publish.yml | 34 ------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 .github/workflows/npm-publish.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml deleted file mode 100644 index 648cd6ba..00000000 --- a/.github/workflows/npm-publish.yml +++ /dev/null @@ -1,34 +0,0 @@ -# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created -# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages - -name: Node.js Package - -on: - release: - types: [created] - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - run: npm ci - - run: npm test - - publish-npm: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - registry-url: https://registry.npmjs.org/ - - run: npm ci - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} From e911931a0acb026580a0213af048ce3783cbf3a0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 15:58:50 +0000 Subject: [PATCH 072/414] Add renovate.json --- renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000..39a2b6e9 --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base" + ] +} From 12823d96c75eca8a62fde74ea419704751d09b92 Mon Sep 17 00:00:00 2001 From: DarkenLM Date: Sun, 26 Mar 2023 17:18:27 +0100 Subject: [PATCH 073/414] Added DriverUnion --- src/drivers/DriverUnion.ts | 101 +++++++++++++++++++++++++++++++++++++ src/index.ts | 1 + 2 files changed, 102 insertions(+) create mode 100644 src/drivers/DriverUnion.ts diff --git a/src/drivers/DriverUnion.ts b/src/drivers/DriverUnion.ts new file mode 100644 index 00000000..256dc853 --- /dev/null +++ b/src/drivers/DriverUnion.ts @@ -0,0 +1,101 @@ +import { IDriver } from "./IDriver"; + +/** + * DriverUnion - Union of Drivers + * + * This driver allows the usage of multiple drivers and multiple driver instances at the same time. + * Useful for redundancies and live backups. + * + * The main driver is the driver used for all operations, while the rest of the drivers are called + * mirror drivers, and are only used for data reflection. + * By the default, the main driver is the first one the union is initialized with. + * This can be changed by modifying the {@link DriverUnion.main | `main` property} on the union instance. + * + * @example + * const SQLiteInstance = new SqliteDriver("./json.sqlite") + * const JSONInstance = new JSONDriver("./backup.json"); + * const DriverUnionInstance = new DriverUnion(SQLiteInstance, JSONInstance); + * const db = new QuickDB({ driver: DriverUnionInstance }) + * + * // Regular db usage + */ +export class DriverUnion implements IDriver { + private drivers: IDriver[]; + private _main: number; + + /** @property {number} main Index of the main driver. */ + public get main(): number { + return this._main; + } + public set main(value: number) { + if (!(value in this.drivers)) return; + + this._main = value; + } + + constructor(main: IDriver, ...mirrors: IDriver[]) { + this.drivers = [main, ...mirrors]; + this._main = 0; + } + + public async prepare(table: string): Promise { + for (const driver of this.drivers) await driver.prepare(table); + } + + public async getAllRows( + table: string + ): Promise<{ id: string; value: any }[]> { + const main = this.drivers[this._main]; + return await main.getAllRows(table); + } + + public async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { + const main = this.drivers[this._main]; + return await main.getRowByKey(table, key); + } + + public async setRowByKey( + table: string, + key: string, + value: any, + update: boolean + ): Promise { + let val: T = undefined as T; // It's guaranteed that at least one driver is present. + + for (let i = 0; i < this.drivers.length; i++) { + const driver = this.drivers[i]; + + const res = await driver.setRowByKey(table, key, value, update); + if (i === this._main) val = res; + } + + return val; + } + + public async deleteAllRows(table: string): Promise { + let rows = 0; + for (let i = 0; i < this.drivers.length; i++) { + const driver = this.drivers[i]; + + const delRows = await driver.deleteAllRows(table); + if (i === this._main) rows = delRows; + } + + return rows; + } + + public async deleteRowByKey(table: string, key: string): Promise { + let rows = 0; + for (let i = 0; i < this.drivers.length; i++) { + const driver = this.drivers[i]; + + const delRows = await driver.deleteRowByKey(table, key); + if (i === this._main) rows = delRows; + } + + return rows; + } +} diff --git a/src/index.ts b/src/index.ts index 08d40603..9d86c342 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,6 +8,7 @@ export { SqliteDriver } from "./drivers/SqliteDriver"; export { MySQLDriver, Config } from "./drivers/MySQLDriver"; export { MemoryDriver, Table } from "./drivers/MemoryDriver"; export { JSONDriver, DataLike } from "./drivers/JSONDriver"; +export { DriverUnion } from "./drivers/DriverUnion"; export interface IQuickDBOptions { table?: string; From 31647a2839ae66ac69c6426e5ca40e5c5e8ebfb0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 16:02:14 +0000 Subject: [PATCH 074/414] Update actions/deploy-pages action to v2 --- .github/workflows/docgen-static.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docgen-static.yml b/.github/workflows/docgen-static.yml index 9535dec6..f2724340 100644 --- a/.github/workflows/docgen-static.yml +++ b/.github/workflows/docgen-static.yml @@ -49,4 +49,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v2 From a8d31d9150ce72c7189412fe78ad37f1295ad6cb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 16:02:27 +0000 Subject: [PATCH 075/414] Update dependency @faker-js/faker to v7 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 89d7bb17..7f8d41e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@faker-js/faker": "^6.1.2", + "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", "@types/jest": "^27.0.3", "@types/lodash": "^4.14.178", @@ -1829,9 +1829,9 @@ } }, "node_modules/@faker-js/faker": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-6.3.1.tgz", - "integrity": "sha512-8YXBE2ZcU/pImVOHX7MWrSR/X5up7t6rPWZlk34RwZEcdr3ua6X+32pSd6XuOQRN+vbuvYNfA6iey8NbrjuMFQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", + "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", "dev": true, "engines": { "node": ">=14.0.0", @@ -8735,9 +8735,9 @@ "dev": true }, "@faker-js/faker": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-6.3.1.tgz", - "integrity": "sha512-8YXBE2ZcU/pImVOHX7MWrSR/X5up7t6rPWZlk34RwZEcdr3ua6X+32pSd6XuOQRN+vbuvYNfA6iey8NbrjuMFQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", + "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", "dev": true }, "@humanwhocodes/config-array": { diff --git a/package.json b/package.json index 1768c5ab..98451487 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "out/index.js", "types": "out/index.d.ts", "devDependencies": { - "@faker-js/faker": "^6.1.2", + "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", "@types/jest": "^27.0.3", "@types/lodash": "^4.14.178", From c95b493a35d85999c38ffd53fd3820acf1429e4c Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 13:53:51 -0400 Subject: [PATCH 076/414] Fixed problem with faker-js v7 --- tests/delete.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/delete.test.ts b/tests/delete.test.ts index 4310d385..2b253663 100644 --- a/tests/delete.test.ts +++ b/tests/delete.test.ts @@ -1,4 +1,4 @@ -import faker from "@faker-js/faker"; +import { faker } from "@faker-js/faker"; import { QuickDB } from "../src"; import { EntryGenerator } from "./generators/EntryGenerator"; import { SqliteDriverMock } from "./mocks/SqliteDriver"; From aeb140552a72922045bed4e32204e49c28c1d1be Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 17:47:00 +0000 Subject: [PATCH 077/414] Update dependency @types/jest to v29 --- package-lock.json | 239 +++++++++++++--------------------------------- package.json | 2 +- 2 files changed, 69 insertions(+), 172 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f8d41e8..790edad3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "devDependencies": { "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", - "@types/jest": "^27.0.3", + "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", @@ -2492,15 +2492,47 @@ } }, "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", "dev": true, "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -3404,15 +3436,6 @@ "node": ">=8" } }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4717,30 +4740,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-diff/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-docblock": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", @@ -4897,30 +4896,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-message-util": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", @@ -6140,32 +6115,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -6258,12 +6207,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -9275,13 +9218,38 @@ } }, "@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", "dev": true, "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + } } }, "@types/json-schema": { @@ -9910,12 +9878,6 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -10886,26 +10848,6 @@ } } }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - } - } - }, "jest-docblock": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", @@ -11028,26 +10970,6 @@ } } }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - } - } - }, "jest-message-util": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", @@ -11989,25 +11911,6 @@ "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -12066,12 +11969,6 @@ } } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", diff --git a/package.json b/package.json index 98451487..8abbd588 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "devDependencies": { "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", - "@types/jest": "^27.0.3", + "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", From d9418dd1a54b5cc0ecd9a725d6ec9d2ea1d871b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 17:47:12 +0000 Subject: [PATCH 078/414] Update dependency better-sqlite3 to v8 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 790edad3..a5afdd2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^7.4.5", + "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", @@ -3037,9 +3037,9 @@ ] }, "node_modules/better-sqlite3": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.2.tgz", - "integrity": "sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", + "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -9595,9 +9595,9 @@ "dev": true }, "better-sqlite3": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.2.tgz", - "integrity": "sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", + "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", "dev": true, "requires": { "bindings": "^1.5.0", diff --git a/package.json b/package.json index 8abbd588..3562a2aa 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^7.4.5", + "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", From 585afef48f5483f64088668ea6b681eae607f357 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 18:04:31 +0000 Subject: [PATCH 079/414] Update dependency mongoose to v7 --- package-lock.json | 290 +++++++++++++++++++++++++++++++++++----------- package.json | 2 +- 2 files changed, 225 insertions(+), 67 deletions(-) diff --git a/package-lock.json b/package-lock.json index a5afdd2e..df9dbadd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^6.9.1", + "mongoose": "^7.0.0", "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", @@ -51,6 +51,7 @@ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^1.11.1" } @@ -60,7 +61,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/sha256-browser": { "version": "3.0.0", @@ -68,6 +70,7 @@ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -84,7 +87,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/sha256-js": { "version": "3.0.0", @@ -92,6 +96,7 @@ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -103,7 +108,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "3.0.0", @@ -111,6 +117,7 @@ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^1.11.1" } @@ -120,7 +127,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-crypto/util": { "version": "3.0.0", @@ -128,6 +136,7 @@ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -139,7 +148,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/@aws-sdk/abort-controller": { "version": "3.296.0", @@ -147,6 +157,7 @@ "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -161,6 +172,7 @@ "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -208,6 +220,7 @@ "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -252,6 +265,7 @@ "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -296,6 +310,7 @@ "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -344,6 +359,7 @@ "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-config-provider": "3.295.0", @@ -360,6 +376,7 @@ "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -376,6 +393,7 @@ "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -391,6 +409,7 @@ "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/property-provider": "3.296.0", @@ -408,6 +427,7 @@ "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -429,6 +449,7 @@ "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -451,6 +472,7 @@ "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -467,6 +489,7 @@ "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-sso": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -485,6 +508,7 @@ "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -500,6 +524,7 @@ "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/client-sso": "3.299.0", @@ -526,6 +551,7 @@ "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/querystring-builder": "3.296.0", @@ -540,6 +566,7 @@ "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-buffer-from": "3.295.0", @@ -556,6 +583,7 @@ "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -567,6 +595,7 @@ "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -580,6 +609,7 @@ "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -595,6 +625,7 @@ "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/middleware-serde": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -612,6 +643,7 @@ "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -627,6 +659,7 @@ "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -641,6 +674,7 @@ "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -656,6 +690,7 @@ "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/service-error-classification": "3.296.0", @@ -675,6 +710,7 @@ "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/middleware-signing": "3.299.0", "@aws-sdk/types": "3.296.0", @@ -690,6 +726,7 @@ "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -704,6 +741,7 @@ "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -722,6 +760,7 @@ "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -735,6 +774,7 @@ "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -751,6 +791,7 @@ "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -767,6 +808,7 @@ "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/abort-controller": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -784,6 +826,7 @@ "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -798,6 +841,7 @@ "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -812,6 +856,7 @@ "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-uri-escape": "3.295.0", @@ -827,6 +872,7 @@ "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -841,6 +887,7 @@ "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", "dev": true, "optional": true, + "peer": true, "engines": { "node": ">=14.0.0" } @@ -851,6 +898,7 @@ "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -865,6 +913,7 @@ "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/is-array-buffer": "3.295.0", "@aws-sdk/types": "3.296.0", @@ -884,6 +933,7 @@ "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/middleware-stack": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -899,6 +949,7 @@ "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/client-sso-oidc": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -916,6 +967,7 @@ "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -929,6 +981,7 @@ "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/querystring-parser": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -941,6 +994,7 @@ "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -955,6 +1009,7 @@ "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" } @@ -965,6 +1020,7 @@ "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -978,6 +1034,7 @@ "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/is-array-buffer": "3.295.0", "tslib": "^2.5.0" @@ -992,6 +1049,7 @@ "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1005,6 +1063,7 @@ "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -1021,6 +1080,7 @@ "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/config-resolver": "3.299.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -1039,6 +1099,7 @@ "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -1053,6 +1114,7 @@ "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1066,6 +1128,7 @@ "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1079,6 +1142,7 @@ "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1092,6 +1156,7 @@ "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/service-error-classification": "3.296.0", "tslib": "^2.5.0" @@ -1106,6 +1171,7 @@ "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -1119,6 +1185,7 @@ "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/types": "3.296.0", "bowser": "^2.11.0", @@ -1131,6 +1198,7 @@ "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -1154,6 +1222,7 @@ "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", "dev": true, "optional": true, + "peer": true, "dependencies": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -1168,6 +1237,7 @@ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "tslib": "^2.3.1" } @@ -3072,7 +3142,8 @@ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -3146,15 +3217,12 @@ } }, "node_modules/bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", + "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", "dev": true, - "dependencies": { - "buffer": "^5.6.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">=14.20.1" } }, "node_modules/buffer": { @@ -3906,6 +3974,7 @@ "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "strnum": "^1.0.5" }, @@ -5628,21 +5697,36 @@ "dev": true }, "node_modules/mongodb": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", - "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", + "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", "dev": true, "dependencies": { - "bson": "^4.7.0", - "mongodb-connection-string-url": "^2.5.4", + "bson": "^5.0.1", + "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" }, "engines": { - "node": ">=12.9.0" + "node": ">=14.20.1" }, "optionalDependencies": { - "@aws-sdk/credential-providers": "^3.186.0", "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "mongodb-client-encryption": "^2.3.0", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } } }, "node_modules/mongodb-connection-string-url": { @@ -5656,21 +5740,21 @@ } }, "node_modules/mongoose": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.4.tgz", - "integrity": "sha512-xCHVVEaOuhZxbthsKYxvHexWafJqWsl03sD7y7uyyt3euLd1sQoDI8DKueeJq9+hrbWkMkAGbGzgFPTIRqenPg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", + "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", "dev": true, "dependencies": { - "bson": "^4.7.0", + "bson": "^5.0.1", "kareem": "2.5.1", - "mongodb": "4.14.0", + "mongodb": "5.1.0", "mpath": "0.9.0", - "mquery": "4.0.3", + "mquery": "5.0.0", "ms": "2.1.3", "sift": "16.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -5693,15 +5777,15 @@ } }, "node_modules/mquery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", - "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", "dev": true, "dependencies": { "debug": "4.x" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/ms": { @@ -6689,7 +6773,8 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/supports-color": { "version": "7.2.0", @@ -6850,7 +6935,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/tsutils": { "version": "3.21.0", @@ -7023,6 +7109,7 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "optional": true, + "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -7222,6 +7309,7 @@ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^1.11.1" }, @@ -7231,7 +7319,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7241,6 +7330,7 @@ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -7257,7 +7347,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7267,6 +7358,7 @@ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -7278,7 +7370,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7288,6 +7381,7 @@ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^1.11.1" }, @@ -7297,7 +7391,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7307,6 +7402,7 @@ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -7318,7 +7414,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "optional": true + "optional": true, + "peer": true } } }, @@ -7328,6 +7425,7 @@ "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7339,6 +7437,7 @@ "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7383,6 +7482,7 @@ "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7424,6 +7524,7 @@ "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7465,6 +7566,7 @@ "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -7510,6 +7612,7 @@ "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-config-provider": "3.295.0", @@ -7523,6 +7626,7 @@ "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -7536,6 +7640,7 @@ "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7548,6 +7653,7 @@ "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/property-provider": "3.296.0", @@ -7562,6 +7668,7 @@ "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -7580,6 +7687,7 @@ "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/credential-provider-env": "3.296.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -7599,6 +7707,7 @@ "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -7612,6 +7721,7 @@ "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-sso": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -7627,6 +7737,7 @@ "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7639,6 +7750,7 @@ "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-cognito-identity": "3.299.0", "@aws-sdk/client-sso": "3.299.0", @@ -7662,6 +7774,7 @@ "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/querystring-builder": "3.296.0", @@ -7676,6 +7789,7 @@ "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-buffer-from": "3.295.0", @@ -7689,6 +7803,7 @@ "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7700,6 +7815,7 @@ "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -7710,6 +7826,7 @@ "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7722,6 +7839,7 @@ "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/middleware-serde": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7736,6 +7854,7 @@ "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7748,6 +7867,7 @@ "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7759,6 +7879,7 @@ "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7771,6 +7892,7 @@ "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/service-error-classification": "3.296.0", @@ -7787,6 +7909,7 @@ "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/middleware-signing": "3.299.0", "@aws-sdk/types": "3.296.0", @@ -7799,6 +7922,7 @@ "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7810,6 +7934,7 @@ "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -7825,6 +7950,7 @@ "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -7835,6 +7961,7 @@ "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/protocol-http": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7848,6 +7975,7 @@ "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/shared-ini-file-loader": "3.296.0", @@ -7861,6 +7989,7 @@ "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/abort-controller": "3.296.0", "@aws-sdk/protocol-http": "3.296.0", @@ -7875,6 +8004,7 @@ "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7886,6 +8016,7 @@ "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7897,6 +8028,7 @@ "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "@aws-sdk/util-uri-escape": "3.295.0", @@ -7909,6 +8041,7 @@ "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7919,7 +8052,8 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.296.0.tgz", "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@aws-sdk/shared-ini-file-loader": { "version": "3.296.0", @@ -7927,6 +8061,7 @@ "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -7938,6 +8073,7 @@ "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/is-array-buffer": "3.295.0", "@aws-sdk/types": "3.296.0", @@ -7954,6 +8090,7 @@ "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/middleware-stack": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -7966,6 +8103,7 @@ "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/client-sso-oidc": "3.299.0", "@aws-sdk/property-provider": "3.296.0", @@ -7980,6 +8118,7 @@ "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -7990,6 +8129,7 @@ "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/querystring-parser": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -8002,6 +8142,7 @@ "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -8013,6 +8154,7 @@ "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8023,6 +8165,7 @@ "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8033,6 +8176,7 @@ "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/is-array-buffer": "3.295.0", "tslib": "^2.5.0" @@ -8044,6 +8188,7 @@ "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8054,6 +8199,7 @@ "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/property-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -8067,6 +8213,7 @@ "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/config-resolver": "3.299.0", "@aws-sdk/credential-provider-imds": "3.296.0", @@ -8082,6 +8229,7 @@ "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "tslib": "^2.5.0" @@ -8093,6 +8241,7 @@ "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8103,6 +8252,7 @@ "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8113,6 +8263,7 @@ "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8123,6 +8274,7 @@ "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/service-error-classification": "3.296.0", "tslib": "^2.5.0" @@ -8134,6 +8286,7 @@ "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.5.0" } @@ -8144,6 +8297,7 @@ "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/types": "3.296.0", "bowser": "^2.11.0", @@ -8156,6 +8310,7 @@ "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/node-config-provider": "3.296.0", "@aws-sdk/types": "3.296.0", @@ -8168,6 +8323,7 @@ "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", "dev": true, "optional": true, + "peer": true, "requires": { "@aws-sdk/util-buffer-from": "3.295.0", "tslib": "^2.5.0" @@ -8179,6 +8335,7 @@ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "dev": true, "optional": true, + "peer": true, "requires": { "tslib": "^2.3.1" } @@ -9629,7 +9786,8 @@ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "brace-expansion": { "version": "1.1.11", @@ -9681,13 +9839,10 @@ } }, "bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", - "dev": true, - "requires": { - "buffer": "^5.6.0" - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", + "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", + "dev": true }, "buffer": { "version": "5.7.1", @@ -10241,6 +10396,7 @@ "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", "dev": true, "optional": true, + "peer": true, "requires": { "strnum": "^1.0.5" } @@ -11545,14 +11701,13 @@ "dev": true }, "mongodb": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", - "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", + "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", "dev": true, "requires": { - "@aws-sdk/credential-providers": "^3.186.0", - "bson": "^4.7.0", - "mongodb-connection-string-url": "^2.5.4", + "bson": "^5.0.1", + "mongodb-connection-string-url": "^2.6.0", "saslprep": "^1.0.3", "socks": "^2.7.1" } @@ -11568,16 +11723,16 @@ } }, "mongoose": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.4.tgz", - "integrity": "sha512-xCHVVEaOuhZxbthsKYxvHexWafJqWsl03sD7y7uyyt3euLd1sQoDI8DKueeJq9+hrbWkMkAGbGzgFPTIRqenPg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", + "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", "dev": true, "requires": { - "bson": "^4.7.0", + "bson": "^5.0.1", "kareem": "2.5.1", - "mongodb": "4.14.0", + "mongodb": "5.1.0", "mpath": "0.9.0", - "mquery": "4.0.3", + "mquery": "5.0.0", "ms": "2.1.3", "sift": "16.0.1" }, @@ -11597,9 +11752,9 @@ "dev": true }, "mquery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", - "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", "dev": true, "requires": { "debug": "4.x" @@ -12305,7 +12460,8 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "supports-color": { "version": "7.2.0", @@ -12415,7 +12571,8 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "tsutils": { "version": "3.21.0", @@ -12532,7 +12689,8 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "v8-to-istanbul": { "version": "9.1.0", diff --git a/package.json b/package.json index 3562a2aa..40fec4e5 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^6.9.1", + "mongoose": "^7.0.0", "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", From b6d2e43d88d4918dcc954e6c4d0a214e41e7786d Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 14:14:42 -0400 Subject: [PATCH 080/414] Refactor for mongoose v7 --- src/drivers/MongoDriver.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 15e4c09e..01dafda9 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -61,14 +61,10 @@ export class MongoDriver implements IDriver { ); } - public connect(): Promise { - return new Promise((resolve, reject) => { - this.mongoose.createConnection(this.url, this.options, (err: any, connection: any) => { - if (err) return reject(err); - this.conn = connection; - resolve(this); - }); - }); + public async connect(): Promise { + const connection = await this.mongoose.createConnection(this.url, this.options).asPromise(); + this.conn = connection; + return this; } public async close(force?: boolean): Promise { From 091120b2ad01be4bb8c2b7f25ff49da924f3abfb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 18:04:45 +0000 Subject: [PATCH 081/414] Update dependency typescript to v5 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index df9dbadd..935de81d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^4.5.4", + "typescript": "^5.0.0", "write-file-atomic": "^5.0.0" } }, @@ -7050,16 +7050,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/update-browserslist-db": { @@ -12654,9 +12654,9 @@ } }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true }, "update-browserslist-db": { diff --git a/package.json b/package.json index 40fec4e5..d5145458 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^4.5.4", + "typescript": "^5.0.0", "write-file-atomic": "^5.0.0" }, "dependencies": { From 6183abbb5fbe9ad832ebd83b4c594aa74cacb154 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 14:32:10 -0400 Subject: [PATCH 082/414] Switched dependencies to peerDependencies and adding node restriction --- package.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d5145458..6b87e6ed 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,9 @@ "description": "An easy, non-locking, persistent better-sqlite3 wrapper designed to be easy to setup & utilize", "main": "out/index.js", "types": "out/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, "devDependencies": { "@faker-js/faker": "^7.0.0", "@types/better-sqlite3": "^7.4.2", @@ -12,16 +15,18 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^7.0.0", - "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^5.0.0", + "typescript": "^5.0.0" + }, + "peerDependencies": { + "better-sqlite3": "^8.0.0", + "mongoose": "^7.0.0", + "mysql2": "^3.2.0", "write-file-atomic": "^5.0.0" }, "dependencies": { From b458649bf8a03596a265d3b7946471407da23ce4 Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 11:28:44 +0200 Subject: [PATCH 083/414] Added postgres driver --- package-lock.json | 769 +++++++++++++++++++--------------- package.json | 2 + src/drivers/DriverUnion.ts | 38 +- src/drivers/MemoryDriver.ts | 5 +- src/drivers/MongoDriver.ts | 63 ++- src/drivers/PostgresDriver.ts | 107 +++++ src/drivers/SqliteDriver.ts | 16 +- src/index.ts | 8 +- 8 files changed, 628 insertions(+), 380 deletions(-) create mode 100644 src/drivers/PostgresDriver.ts diff --git a/package-lock.json b/package-lock.json index 935de81d..0cf5264d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,19 +16,26 @@ "@types/better-sqlite3": "^7.4.2", "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", + "@types/pg": "^8.6.6", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", - "better-sqlite3": "^8.0.0", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", - "mongoose": "^7.0.0", - "mysql2": "^3.2.0", "prettier": "^2.5.1", "ts-jest": "^29.0.3", "typedoc": "^0.23.26", - "typescript": "^5.0.0", + "typescript": "^5.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "better-sqlite3": "^8.0.0", + "mongoose": "^7.0.0", + "mysql2": "^3.2.0", + "pg": "^8.10.0", "write-file-atomic": "^5.0.0" } }, @@ -49,7 +56,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -60,7 +66,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -68,7 +73,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -86,7 +90,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -94,7 +97,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -107,7 +109,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -115,7 +116,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -126,7 +126,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -134,7 +133,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -147,7 +145,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true }, @@ -155,7 +152,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.296.0.tgz", "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -170,7 +166,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.299.0.tgz", "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -218,7 +213,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.299.0.tgz", "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -263,7 +257,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.299.0.tgz", "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -308,7 +301,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.299.0.tgz", "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -357,7 +349,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.299.0.tgz", "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -374,7 +365,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.299.0.tgz", "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -391,7 +381,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.296.0.tgz", "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -407,7 +396,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.296.0.tgz", "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -425,7 +413,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.299.0.tgz", "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -447,7 +434,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.299.0.tgz", "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -470,7 +456,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.296.0.tgz", "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -487,7 +472,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.299.0.tgz", "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -506,7 +490,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.296.0.tgz", "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -522,7 +505,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.299.0.tgz", "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -549,7 +531,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.296.0.tgz", "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -564,7 +545,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.296.0.tgz", "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -581,7 +561,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.296.0.tgz", "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -593,7 +572,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.295.0.tgz", "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -607,7 +585,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.296.0.tgz", "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -623,7 +600,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.299.0.tgz", "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -641,7 +617,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.296.0.tgz", "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -657,7 +632,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.296.0.tgz", "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -672,7 +646,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.296.0.tgz", "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -688,7 +661,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.296.0.tgz", "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -708,7 +680,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.299.0.tgz", "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -724,7 +695,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.296.0.tgz", "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -739,7 +709,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.299.0.tgz", "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -758,7 +727,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.296.0.tgz", "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -772,7 +740,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.299.0.tgz", "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -789,7 +756,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.296.0.tgz", "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -806,7 +772,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.296.0.tgz", "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -824,7 +789,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.296.0.tgz", "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -839,7 +803,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.296.0.tgz", "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -854,7 +817,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.296.0.tgz", "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -870,7 +832,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.296.0.tgz", "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -885,7 +846,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.296.0.tgz", "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", - "dev": true, "optional": true, "peer": true, "engines": { @@ -896,7 +856,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.296.0.tgz", "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -911,7 +870,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.299.0.tgz", "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -931,7 +889,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.296.0.tgz", "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -947,7 +904,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.299.0.tgz", "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -965,7 +921,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.296.0.tgz", "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -979,7 +934,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.296.0.tgz", "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -992,7 +946,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.295.0.tgz", "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1007,7 +960,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.295.0.tgz", "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1018,7 +970,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.295.0.tgz", "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1032,7 +983,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.295.0.tgz", "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1047,7 +997,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.295.0.tgz", "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1061,7 +1010,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.296.0.tgz", "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1078,7 +1026,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.299.0.tgz", "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1097,7 +1044,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.296.0.tgz", "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1112,7 +1058,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.295.0.tgz", "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1126,7 +1071,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.295.0.tgz", "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1140,7 +1084,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.296.0.tgz", "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1154,7 +1097,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.296.0.tgz", "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1169,7 +1111,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.295.0.tgz", "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1183,7 +1124,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.299.0.tgz", "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1196,7 +1136,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.299.0.tgz", "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1220,7 +1159,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.295.0.tgz", "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -1235,7 +1173,6 @@ "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -2618,8 +2555,18 @@ "node_modules/@types/node": { "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", - "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==", - "dev": true + "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" + }, + "node_modules/@types/pg": { + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.6.tgz", + "integrity": "sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } }, "node_modules/@types/prettier": { "version": "2.7.2", @@ -2643,13 +2590,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==", - "dev": true + "peer": true }, "node_modules/@types/whatwg-url": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dev": true, + "peer": true, "dependencies": { "@types/node": "*", "@types/webidl-conversions": "*" @@ -3090,7 +3037,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -3104,14 +3050,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/better-sqlite3": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", - "dev": true, "hasInstallScript": true, + "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.0" @@ -3121,7 +3068,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, + "peer": true, "dependencies": { "file-uri-to-path": "1.0.0" } @@ -3130,7 +3077,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "peer": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3141,7 +3088,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true, "optional": true, "peer": true }, @@ -3220,7 +3166,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", - "dev": true, + "peer": true, "engines": { "node": ">=14.20.1" } @@ -3229,7 +3175,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -3244,6 +3189,7 @@ "url": "https://feross.org/support" } ], + "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -3255,6 +3201,15 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3318,7 +3273,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "peer": true }, "node_modules/ci-info": { "version": "3.8.0", @@ -3419,7 +3374,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3436,7 +3390,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, + "peer": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -3457,7 +3411,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, + "peer": true, "engines": { "node": ">=4.0.0" } @@ -3481,7 +3435,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10" } @@ -3490,7 +3444,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -3556,7 +3510,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, + "peer": true, "dependencies": { "once": "^1.4.0" } @@ -3830,7 +3784,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -3972,7 +3926,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -4020,7 +3973,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "peer": true }, "node_modules/fill-range": { "version": "7.0.1", @@ -4073,7 +4026,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "peer": true }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -4105,7 +4058,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, + "peer": true, "dependencies": { "is-property": "^1.0.2" } @@ -4153,7 +4106,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true + "peer": true }, "node_modules/glob": { "version": "7.2.3", @@ -4274,7 +4227,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -4286,7 +4239,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -4300,7 +4252,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/ignore": { "version": "5.2.4", @@ -4350,7 +4303,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -4368,20 +4320,19 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "peer": true }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true + "peer": true }, "node_modules/is-arrayish": { "version": "0.2.1", @@ -4462,7 +4413,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "dev": true + "peer": true }, "node_modules/is-stream": { "version": "2.0.1", @@ -5467,7 +5418,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "dev": true, + "peer": true, "engines": { "node": ">=12.0.0" } @@ -5545,7 +5496,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==", - "dev": true + "peer": true }, "node_modules/lru-cache": { "version": "5.1.1", @@ -5617,8 +5568,8 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "dev": true, - "optional": true + "optional": true, + "peer": true }, "node_modules/merge-stream": { "version": "2.0.0", @@ -5661,7 +5612,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, + "peer": true, "engines": { "node": ">=10" }, @@ -5685,7 +5636,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5694,13 +5645,13 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "peer": true }, "node_modules/mongodb": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", - "dev": true, + "peer": true, "dependencies": { "bson": "^5.0.1", "mongodb-connection-string-url": "^2.6.0", @@ -5733,7 +5684,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dev": true, + "peer": true, "dependencies": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" @@ -5743,7 +5694,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", - "dev": true, + "peer": true, "dependencies": { "bson": "^5.0.1", "kareem": "2.5.1", @@ -5765,13 +5716,13 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "peer": true }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "dev": true, + "peer": true, "engines": { "node": ">=4.0.0" } @@ -5780,7 +5731,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dev": true, + "peer": true, "dependencies": { "debug": "4.x" }, @@ -5791,14 +5742,13 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mysql2": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.2.0.tgz", "integrity": "sha512-0Vn6a9WSrq6fWwvPgrvIwnOCldiEcgbzapVRDAtDZ4cMTxN7pnGqCTx8EG32S/NYXl6AXkdO+9hV1tSIi/LigA==", - "dev": true, + "peer": true, "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -5817,7 +5767,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -5826,7 +5776,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", - "dev": true, + "peer": true, "dependencies": { "lru-cache": "^7.14.1" }, @@ -5838,7 +5788,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -5847,7 +5797,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "peer": true }, "node_modules/natural-compare": { "version": "1.4.0", @@ -5865,7 +5815,7 @@ "version": "3.33.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz", "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==", - "dev": true, + "peer": true, "dependencies": { "semver": "^7.3.5" }, @@ -5910,7 +5860,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -5986,6 +5935,12 @@ "node": ">=6" } }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==", + "peer": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6058,6 +6013,84 @@ "node": ">=8" } }, + "node_modules/pg": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "peer": true, + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.6.0", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", + "peer": true + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "peer": true, + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "peer": true, + "dependencies": { + "split2": "^4.1.0" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -6149,11 +6182,46 @@ "node": ">=8" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, + "peer": true, "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -6216,7 +6284,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, + "peer": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -6226,7 +6294,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, "engines": { "node": ">=6" } @@ -6271,7 +6338,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, + "peer": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -6286,7 +6353,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6295,7 +6362,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6422,7 +6489,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -6436,20 +6502,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "peer": true }, "node_modules/saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "dev": true, "optional": true, + "peer": true, "dependencies": { "sparse-bitfield": "^3.0.3" }, @@ -6461,7 +6528,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -6476,7 +6542,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -6487,14 +6552,13 @@ "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/seq-queue": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", - "dev": true + "peer": true }, "node_modules/shebang-command": { "version": "2.0.0", @@ -6533,19 +6597,17 @@ "version": "16.0.1", "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==", - "dev": true + "peer": true }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, "funding": [ { "type": "github", @@ -6559,13 +6621,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/simple-get": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, "funding": [ { "type": "github", @@ -6580,6 +6642,7 @@ "url": "https://feross.org/support" } ], + "peer": true, "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -6605,7 +6668,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, + "peer": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -6615,7 +6678,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, + "peer": true, "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -6648,12 +6711,21 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "dev": true, "optional": true, + "peer": true, "dependencies": { "memory-pager": "^1.0.2" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "peer": true, + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -6664,7 +6736,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -6694,7 +6766,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "peer": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -6772,7 +6844,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true, "optional": true, "peer": true }, @@ -6804,7 +6875,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, + "peer": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -6816,7 +6887,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, + "peer": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -6879,7 +6950,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, + "peer": true, "dependencies": { "punycode": "^2.1.1" }, @@ -6934,7 +7005,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true, "optional": true, "peer": true }, @@ -6963,7 +7033,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, + "peer": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -7101,13 +7171,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "peer": true }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "optional": true, "peer": true, "bin": { @@ -7159,7 +7228,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, + "peer": true, "engines": { "node": ">=12" } @@ -7168,7 +7237,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, + "peer": true, "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -7221,14 +7290,13 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, + "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -7237,6 +7305,14 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -7307,7 +7383,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7318,7 +7393,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7328,7 +7402,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7346,7 +7419,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7356,7 +7428,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7369,7 +7440,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7379,7 +7449,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7390,7 +7459,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7400,7 +7468,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7413,7 +7480,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, "optional": true, "peer": true } @@ -7423,7 +7489,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.296.0.tgz", "integrity": "sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7435,7 +7500,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.299.0.tgz", "integrity": "sha512-Xn0xE+q5NvuPSIeeKORhrbd88uIhWp5dFTKLxkDu1YZg5vRVOKhKFEYA12jD+Hh0PrHWKK4NZ1orRx7AL7fE6w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7480,7 +7544,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.299.0.tgz", "integrity": "sha512-SZ6LehIW3sxtKqH78gTJg6rIKqtqYRIOLP5NNhp6HTWvVfmvOxGc1NtVDxLiTzJOf1xEXY+DgoNuBVO2XXqsxA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7522,7 +7585,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.299.0.tgz", "integrity": "sha512-IUt8L0TCM8GH0SCYH3Le0S52fdgUXIkhxpPtAX/2QPxlBBIMLAiyDIIEc1RUMyzhombRO1agQkwwE6Qtx8NQ/Q==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7564,7 +7626,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.299.0.tgz", "integrity": "sha512-p+JPaCbom4HmhBe1ko53F8Jgbmi9MOXHJBf83UOeYcWJsECm0me8RWogl7bgnfxdemsS40INk5t4JxMLmNS3MQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7610,7 +7671,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.299.0.tgz", "integrity": "sha512-MpaAI7CWMx0ci2UcbMmJg+Xf8f1D6+I1VCpzaCgaMeJyHsID5q52VWG8qSD/QzxPU8Pb3TmmA0D0YDRKpCwRcA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7624,7 +7684,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.299.0.tgz", "integrity": "sha512-IMrdcbFA95T1jcRX4PfOLUHhsHJBpKwr8c+oSJa2Ndb+QIP8BBbHXKz6JPwKg3fccJoYKoCcpbfhbI79J4Mwvw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7638,7 +7697,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.296.0.tgz", "integrity": "sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7651,7 +7709,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.296.0.tgz", "integrity": "sha512-DXqksHyT/GVVYbPGknMARKi6Rk6cqCHJUAejePIx5cz1SCKlDrV704hykafHIjaDoy/Zeoj1wzjfwy83sJfDCg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7666,7 +7723,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.299.0.tgz", "integrity": "sha512-KMJDzK1iCMc9j0aIsui9hoLXcrgJCioycD/64nR+Z3a+qOtoC5qIsrh/craNQU/PxhHSdp79iZq8FJgP8SCPwA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7685,7 +7741,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.299.0.tgz", "integrity": "sha512-lEQa4i17WKg2M1by6RWKjSOPPg/2S8GOiWsdwoKNXqjxPb4UZbikC+ASTySwNcKHPWNjgTg8FLL3XrcqEY9PLg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7705,7 +7760,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.296.0.tgz", "integrity": "sha512-AY7sTX2dGi8ripuCpcJLYHOZB2wJ6NnseyK/kK5TfJn/pgboKwuGtz0hkJCVprNWomKa6IpHksm7vLQ4O2E+UA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7719,7 +7773,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.299.0.tgz", "integrity": "sha512-84Ym0nSsjAI7s8OaHnx6nNotCncneLy7vFXJwZyLQjzAjYHm1lDkEDaI0WcZagMO82HqcJXhA5AEVzUycNCIfw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7735,7 +7788,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.296.0.tgz", "integrity": "sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7748,7 +7800,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.299.0.tgz", "integrity": "sha512-t4wcNScstjmiDi/nbRuHXh/JXikjqXR8NG4AIbjyvY4te5bLTYluiZIXCP5lET06HmVPoNJ3xMQuSMSkKkKEhw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7772,7 +7823,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.296.0.tgz", "integrity": "sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7787,7 +7837,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.296.0.tgz", "integrity": "sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7801,7 +7850,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.296.0.tgz", "integrity": "sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7813,7 +7861,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.295.0.tgz", "integrity": "sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7824,7 +7871,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.296.0.tgz", "integrity": "sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7837,7 +7883,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.299.0.tgz", "integrity": "sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7852,7 +7897,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.296.0.tgz", "integrity": "sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7865,7 +7909,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.296.0.tgz", "integrity": "sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7877,7 +7920,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.296.0.tgz", "integrity": "sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7890,7 +7932,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.296.0.tgz", "integrity": "sha512-Tz3gDZm5viQg7BG5bF9Cg0qbm4+Ur3a7wcGkj1XHQdzGDYR76gxvU0bfnSNUmWRz3kaVNyISyXSOUygG0cbhbw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7907,7 +7948,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.299.0.tgz", "integrity": "sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7920,7 +7960,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.296.0.tgz", "integrity": "sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7932,7 +7971,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.299.0.tgz", "integrity": "sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7948,7 +7986,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.296.0.tgz", "integrity": "sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7959,7 +7996,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.299.0.tgz", "integrity": "sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7973,7 +8009,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.296.0.tgz", "integrity": "sha512-S/tYcuw9ACOWRmRe5oUkmutQ+TApjVs0yDl504DKs74f3p4kRgI/MGWkBiR3mcfThHaxu81z0gkRL2qfW2SDwg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -7987,7 +8022,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.296.0.tgz", "integrity": "sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8002,7 +8036,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.296.0.tgz", "integrity": "sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8014,7 +8047,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.296.0.tgz", "integrity": "sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8026,7 +8058,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.296.0.tgz", "integrity": "sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8039,7 +8070,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.296.0.tgz", "integrity": "sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8051,7 +8081,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.296.0.tgz", "integrity": "sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==", - "dev": true, "optional": true, "peer": true }, @@ -8059,7 +8088,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.296.0.tgz", "integrity": "sha512-S31VfdiruN2trayoeB7HifsEB+WXhtfECosj90K903rzfyX+Eo+uUoK9O07UotxJ2gB3MBQ7R8pNnZio3Lb66w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8071,7 +8099,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.299.0.tgz", "integrity": "sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8088,7 +8115,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.296.0.tgz", "integrity": "sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8101,7 +8127,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.299.0.tgz", "integrity": "sha512-gCTxmg2IdXg0/mFV6tmOgNiqGmLeEXDejwyz6dT1P76CvgwjdM9bJ+gSRlKLa+jS49L/vqAZD6Hq/i1ZJmXRag==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8116,7 +8141,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.296.0.tgz", "integrity": "sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8127,7 +8151,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.296.0.tgz", "integrity": "sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8140,7 +8163,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.295.0.tgz", "integrity": "sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8152,7 +8174,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.295.0.tgz", "integrity": "sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8163,7 +8184,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.295.0.tgz", "integrity": "sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8174,7 +8194,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.295.0.tgz", "integrity": "sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8186,7 +8205,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.295.0.tgz", "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8197,7 +8215,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.296.0.tgz", "integrity": "sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8211,7 +8228,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.299.0.tgz", "integrity": "sha512-/7Ii0knBd9yGJ9ut89M90vqELtjQ+1c1Q3vA4o9ycof/mtn+VICtZ5UbQP+apAfCKVH+e0aeJNVRVibGVLXS+A==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8227,7 +8243,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.296.0.tgz", "integrity": "sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8239,7 +8254,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.295.0.tgz", "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8250,7 +8264,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.295.0.tgz", "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8261,7 +8274,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.296.0.tgz", "integrity": "sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8272,7 +8284,6 @@ "version": "3.296.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.296.0.tgz", "integrity": "sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8284,7 +8295,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.295.0.tgz", "integrity": "sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8295,7 +8305,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.299.0.tgz", "integrity": "sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8308,7 +8317,6 @@ "version": "3.299.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.299.0.tgz", "integrity": "sha512-GXA8pCDlQ4Rj+sZErZZfuFuwVnCAph/EvpmwdRNu99v9hX3Q2+HEcS+zM4zBqKDnW1DvaJoxr4SMrk9KBxHUmQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8321,7 +8329,6 @@ "version": "3.295.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.295.0.tgz", "integrity": "sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -8333,7 +8340,6 @@ "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -9424,8 +9430,18 @@ "@types/node": { "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", - "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==", - "dev": true + "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" + }, + "@types/pg": { + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.6.tgz", + "integrity": "sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==", + "dev": true, + "requires": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } }, "@types/prettier": { "version": "2.7.2", @@ -9449,13 +9465,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==", - "dev": true + "peer": true }, "@types/whatwg-url": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dev": true, + "peer": true, "requires": { "@types/node": "*", "@types/webidl-conversions": "*" @@ -9749,13 +9765,13 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "peer": true }, "better-sqlite3": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", - "dev": true, + "peer": true, "requires": { "bindings": "^1.5.0", "prebuild-install": "^7.1.0" @@ -9765,7 +9781,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, + "peer": true, "requires": { "file-uri-to-path": "1.0.0" } @@ -9774,7 +9790,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "peer": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -9785,7 +9801,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true, "optional": true, "peer": true }, @@ -9842,13 +9857,13 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz", "integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==", - "dev": true + "peer": true }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, + "peer": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -9860,6 +9875,12 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "peer": true + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -9898,7 +9919,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "peer": true }, "ci-info": { "version": "3.8.0", @@ -9977,7 +9998,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -9986,7 +10006,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, + "peer": true, "requires": { "mimic-response": "^3.1.0" } @@ -10001,7 +10021,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "peer": true }, "deep-is": { "version": "0.1.4", @@ -10019,13 +10039,13 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "dev": true + "peer": true }, "detect-libc": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true + "peer": true }, "detect-newline": { "version": "3.1.0", @@ -10073,7 +10093,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, + "peer": true, "requires": { "once": "^1.4.0" } @@ -10278,7 +10298,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true + "peer": true }, "expect": { "version": "29.5.0", @@ -10394,7 +10414,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -10432,7 +10451,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "peer": true }, "fill-range": { "version": "7.0.1", @@ -10473,7 +10492,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "peer": true }, "fs.realpath": { "version": "1.0.0", @@ -10498,7 +10517,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, + "peer": true, "requires": { "is-property": "^1.0.2" } @@ -10531,7 +10550,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true + "peer": true }, "glob": { "version": "7.2.3", @@ -10622,7 +10641,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "peer": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -10631,7 +10650,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "peer": true }, "ignore": { "version": "5.2.4", @@ -10662,8 +10681,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "inflight": { "version": "1.0.6", @@ -10678,20 +10696,19 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "peer": true }, "ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true + "peer": true }, "is-arrayish": { "version": "0.2.1", @@ -10751,7 +10768,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "dev": true + "peer": true }, "is-stream": { "version": "2.0.1", @@ -11523,7 +11540,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "dev": true + "peer": true }, "kleur": { "version": "3.0.3", @@ -11583,7 +11600,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==", - "dev": true + "peer": true }, "lru-cache": { "version": "5.1.1", @@ -11642,8 +11659,8 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "dev": true, - "optional": true + "optional": true, + "peer": true }, "merge-stream": { "version": "2.0.0", @@ -11677,7 +11694,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true + "peer": true }, "minimatch": { "version": "3.1.2", @@ -11692,19 +11709,19 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true + "peer": true }, "mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "peer": true }, "mongodb": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz", "integrity": "sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==", - "dev": true, + "peer": true, "requires": { "bson": "^5.0.1", "mongodb-connection-string-url": "^2.6.0", @@ -11716,7 +11733,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dev": true, + "peer": true, "requires": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" @@ -11726,7 +11743,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.0.3.tgz", "integrity": "sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg==", - "dev": true, + "peer": true, "requires": { "bson": "^5.0.1", "kareem": "2.5.1", @@ -11741,7 +11758,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "peer": true } } }, @@ -11749,13 +11766,13 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "dev": true + "peer": true }, "mquery": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dev": true, + "peer": true, "requires": { "debug": "4.x" } @@ -11763,14 +11780,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mysql2": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.2.0.tgz", "integrity": "sha512-0Vn6a9WSrq6fWwvPgrvIwnOCldiEcgbzapVRDAtDZ4cMTxN7pnGqCTx8EG32S/NYXl6AXkdO+9hV1tSIi/LigA==", - "dev": true, + "peer": true, "requires": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -11786,7 +11802,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true + "peer": true } } }, @@ -11794,7 +11810,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", - "dev": true, + "peer": true, "requires": { "lru-cache": "^7.14.1" }, @@ -11803,7 +11819,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true + "peer": true } } }, @@ -11811,7 +11827,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "peer": true }, "natural-compare": { "version": "1.4.0", @@ -11829,7 +11845,7 @@ "version": "3.33.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz", "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==", - "dev": true, + "peer": true, "requires": { "semver": "^7.3.5" } @@ -11865,7 +11881,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -11917,6 +11932,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==", + "peer": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -11968,6 +11989,65 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pg": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "peer": true, + "requires": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.6.0", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + } + }, + "pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", + "peer": true + }, + "pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + }, + "pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "peer": true, + "requires": {} + }, + "pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } + }, + "pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "peer": true, + "requires": { + "split2": "^4.1.0" + } + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -12034,11 +12114,34 @@ } } }, + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" + }, + "postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "requires": { + "xtend": "^4.0.0" + } + }, "prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, + "peer": true, "requires": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -12080,7 +12183,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, + "peer": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -12089,8 +12192,7 @@ "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "pure-rand": { "version": "6.0.1", @@ -12108,7 +12210,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, + "peer": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -12120,7 +12222,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true + "peer": true } } }, @@ -12128,7 +12230,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "peer": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -12209,20 +12311,20 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "peer": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "peer": true }, "saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "dev": true, "optional": true, + "peer": true, "requires": { "sparse-bitfield": "^3.0.3" } @@ -12231,7 +12333,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "requires": { "lru-cache": "^6.0.0" }, @@ -12240,7 +12341,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -12248,8 +12348,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -12257,7 +12356,7 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", - "dev": true + "peer": true }, "shebang-command": { "version": "2.0.0", @@ -12290,25 +12389,24 @@ "version": "16.0.1", "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==", - "dev": true + "peer": true }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true + "peer": true }, "simple-get": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, + "peer": true, "requires": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -12331,13 +12429,13 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true + "peer": true }, "socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, + "peer": true, "requires": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -12363,12 +12461,18 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "dev": true, "optional": true, + "peer": true, "requires": { "memory-pager": "^1.0.2" } }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "peer": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -12379,7 +12483,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "dev": true + "peer": true }, "stack-utils": { "version": "2.0.6", @@ -12402,7 +12506,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "peer": true, "requires": { "safe-buffer": "~5.2.0" } @@ -12459,7 +12563,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true, "optional": true, "peer": true }, @@ -12482,7 +12585,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, + "peer": true, "requires": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -12494,7 +12597,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, + "peer": true, "requires": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -12545,7 +12648,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, + "peer": true, "requires": { "punycode": "^2.1.1" } @@ -12570,7 +12673,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true, "optional": true, "peer": true }, @@ -12595,7 +12697,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, + "peer": true, "requires": { "safe-buffer": "^5.0.1" } @@ -12682,13 +12784,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "peer": true }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "optional": true, "peer": true }, @@ -12736,13 +12837,13 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true + "peer": true }, "whatwg-url": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, + "peer": true, "requires": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -12777,19 +12878,23 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, + "peer": true, "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" } }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 6b87e6ed..2a7831ad 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@types/better-sqlite3": "^7.4.2", "@types/jest": "^29.0.0", "@types/lodash": "^4.14.178", + "@types/pg": "^8.6.6", "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", @@ -27,6 +28,7 @@ "better-sqlite3": "^8.0.0", "mongoose": "^7.0.0", "mysql2": "^3.2.0", + "pg": "^8.10.0", "write-file-atomic": "^5.0.0" }, "dependencies": { diff --git a/src/drivers/DriverUnion.ts b/src/drivers/DriverUnion.ts index 256dc853..73d09fe7 100644 --- a/src/drivers/DriverUnion.ts +++ b/src/drivers/DriverUnion.ts @@ -2,40 +2,40 @@ import { IDriver } from "./IDriver"; /** * DriverUnion - Union of Drivers - * + * * This driver allows the usage of multiple drivers and multiple driver instances at the same time. * Useful for redundancies and live backups. - * - * The main driver is the driver used for all operations, while the rest of the drivers are called - * mirror drivers, and are only used for data reflection. + * + * The main driver is the driver used for all operations, while the rest of the drivers are called + * mirror drivers, and are only used for data reflection. * By the default, the main driver is the first one the union is initialized with. * This can be changed by modifying the {@link DriverUnion.main | `main` property} on the union instance. - * + * * @example * const SQLiteInstance = new SqliteDriver("./json.sqlite") * const JSONInstance = new JSONDriver("./backup.json"); * const DriverUnionInstance = new DriverUnion(SQLiteInstance, JSONInstance); * const db = new QuickDB({ driver: DriverUnionInstance }) - * + * * // Regular db usage */ export class DriverUnion implements IDriver { private drivers: IDriver[]; - private _main: number; + private _main: number; - /** @property {number} main Index of the main driver. */ - public get main(): number { - return this._main; - } - public set main(value: number) { - if (!(value in this.drivers)) return; + /** @property {number} main Index of the main driver. */ + public get main(): number { + return this._main; + } + public set main(value: number) { + if (!(value in this.drivers)) return; - this._main = value; - } + this._main = value; + } constructor(main: IDriver, ...mirrors: IDriver[]) { this.drivers = [main, ...mirrors]; - this._main = 0; + this._main = 0; } public async prepare(table: string): Promise { @@ -63,13 +63,13 @@ export class DriverUnion implements IDriver { value: any, update: boolean ): Promise { - let val: T = undefined as T; // It's guaranteed that at least one driver is present. + let val: T = undefined as T; // It's guaranteed that at least one driver is present. for (let i = 0; i < this.drivers.length; i++) { - const driver = this.drivers[i]; + const driver = this.drivers[i]; const res = await driver.setRowByKey(table, key, value, update); - if (i === this._main) val = res; + if (i === this._main) val = res; } return val; diff --git a/src/drivers/MemoryDriver.ts b/src/drivers/MemoryDriver.ts index 08cbe876..aa02c597 100644 --- a/src/drivers/MemoryDriver.ts +++ b/src/drivers/MemoryDriver.ts @@ -37,7 +37,10 @@ export class MemoryDriver implements IDriver { return [...store.entries()].map(([k, v]) => ({ id: k, value: v })); } - public async getRowByKey(table: string, key: string): Promise<[T | null, boolean]> { + public async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { const store = this.getOrCreateTable(table); const val = store.get(key) as T; return [val == null ? null : val, false]; diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 01dafda9..4b5c217e 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -36,33 +36,38 @@ export class MongoDriver implements IDriver { private models = new Map>(); docSchema: mongoose.Schema>; - public constructor(public url: string, public options: mongoose.ConnectOptions = {}) { + public constructor( + public url: string, + public options: mongoose.ConnectOptions = {} + ) { this.mongoose = require("mongoose"); this.docSchema = new this.mongoose.Schema( { ID: { type: this.mongoose.SchemaTypes.String, required: true, - unique: true + unique: true, }, data: { type: this.mongoose.SchemaTypes.Mixed, - required: false + required: false, }, expireAt: { type: this.mongoose.SchemaTypes.Date, required: false, - default: null - } + default: null, + }, }, { - timestamps: true + timestamps: true, } ); } public async connect(): Promise { - const connection = await this.mongoose.createConnection(this.url, this.options).asPromise(); + const connection = await this.mongoose + .createConnection(this.url, this.options) + .asPromise(); this.conn = connection; return this; } @@ -72,15 +77,19 @@ export class MongoDriver implements IDriver { } private checkConnection(): void { - if (this.conn == null) throw new Error(`MongoDriver is not connected to the database`); + if (this.conn == null) + throw new Error(`MongoDriver is not connected to the database`); } public async prepare(table: string): Promise { this.checkConnection(); - if (!this.models.has(table)) this.models.set(table, this.modelSchema(table)); + if (!this.models.has(table)) + this.models.set(table, this.modelSchema(table)); } - private async getModel(name: string): Promise | undefined> { + private async getModel( + name: string + ): Promise | undefined> { await this.prepare(name); return this.models.get(name); } @@ -91,11 +100,14 @@ export class MongoDriver implements IDriver { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return (await model!.find()).map((row: any) => ({ id: row.ID, - value: row.data + value: row.data, })); } - async getRowByKey(table: string, key: string): Promise<[T | null, boolean]> { + async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { this.checkConnection(); const model = await this.getModel(table); const res = await model!.findOne({ ID: key }); @@ -104,15 +116,20 @@ export class MongoDriver implements IDriver { } // eslint-disable-next-line @typescript-eslint/no-unused-vars - async setRowByKey(table: string, key: string, value: any, _update: boolean): Promise { + async setRowByKey( + table: string, + key: string, + value: any, + _update: boolean + ): Promise { this.checkConnection(); const model = await this.getModel(table); await model?.findOneAndUpdate( { - ID: key + ID: key, }, { - $set: { data: value } + $set: { data: value }, }, { upsert: true } ); @@ -125,7 +142,6 @@ export class MongoDriver implements IDriver { const model = await this.getModel(table); const res = await model?.deleteMany(); - return res!.deletedCount!; } @@ -134,20 +150,23 @@ export class MongoDriver implements IDriver { const model = await this.getModel(table); const res = await model?.deleteMany({ - ID: key + ID: key, }); - return res!.deletedCount!; } // eslint-disable-next-line @typescript-eslint/ban-types - modelSchema(modelName = "JSON"): mongoose.Model> { + modelSchema( + modelName = "JSON" + ): mongoose.Model> { this.checkConnection(); const model = this.conn!.model(modelName, this.docSchema); - model.collection.createIndex({ expireAt: 1 }, { expireAfterSeconds: 0 }).catch(() => { - /* void */ - }); + model.collection + .createIndex({ expireAt: 1 }, { expireAfterSeconds: 0 }) + .catch(() => { + /* void */ + }); return model as mongoose.Model>; } } diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts new file mode 100644 index 00000000..b84b215a --- /dev/null +++ b/src/drivers/PostgresDriver.ts @@ -0,0 +1,107 @@ +import { IDriver } from "./IDriver"; +import PgModule from "pg"; + +export class PostgresDriver implements IDriver { + private static instance: PostgresDriver; + private readonly _pg: typeof PgModule; + private config: PgModule.ClientConfig; + private conn: PgModule.Client | undefined; + + get pg(): typeof PgModule { + return this._pg; + } + + constructor(config: PgModule.ClientConfig) { + this.config = config; + this._pg = require("pg"); + } + + static createSingleton(config: PgModule.ClientConfig): PostgresDriver { + if (!this.instance) this.instance = new PostgresDriver(config); + return this.instance; + } + + async connect(): Promise { + this.conn = new PgModule.Client(this.config); + await this.conn.connect(); + } + + private checkConnection(): void { + if (!this.conn) { + throw new Error("No connection to postgres database"); + } + } + + async prepare(table: string): Promise { + this.checkConnection(); + await this.conn?.query( + `CREATE TABLE IF NOT EXISTS ${table} (id VARCHAR(255), value jsonb)` + ); + } + + async getAllRows(table: string): Promise<{ id: string; value: any }[]> { + this.checkConnection(); + const queryResult = await this.conn?.query(`SELECT * FROM ${table}`); + return ( + queryResult?.rows.map((row) => ({ + id: row.id, + value: row.value, + })) ?? [] + ); + } + + async getRowByKey( + table: string, + key: string + ): Promise<[T | null, boolean]> { + this.checkConnection(); + const queryResult = await this.conn?.query( + `SELECT value FROM ${table} WHERE id = $1`, + [key] + ); + + if (!queryResult || queryResult.rowCount < 1) { + return [null, false]; + } + + return [queryResult?.rows[0].value, true]; + } + + async setRowByKey( + table: string, + key: string, + value: any, + update: boolean + ): Promise { + this.checkConnection(); + + if (update) { + await this.conn?.query( + `UPDATE ${table} SET value = $1 WHERE id = $2`, + [value, key] + ); + } else { + await this.conn?.query( + `INSERT INTO ${table} (id, value) VALUES ($1, $2)`, + [key, value] + ); + } + + return value; + } + + async deleteAllRows(table: string): Promise { + this.checkConnection(); + const queryResult = await this.conn?.query(`DELETE FROM ${table}`); + return queryResult?.rowCount ?? 0; + } + + async deleteRowByKey(table: string, key: string): Promise { + this.checkConnection(); + const queryResult = await this.conn?.query( + `DELETE FROM ${table} WHERE id = $1`, + [key] + ); + return queryResult?.rowCount ?? 0; + } +} diff --git a/src/drivers/SqliteDriver.ts b/src/drivers/SqliteDriver.ts index 5feeafd2..e78daa6f 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -23,10 +23,14 @@ export class SqliteDriver implements IDriver { } public async prepare(table: string): Promise { - await this._database.exec(`CREATE TABLE IF NOT EXISTS ${table} (ID TEXT PRIMARY KEY, json TEXT)`); + await this._database.exec( + `CREATE TABLE IF NOT EXISTS ${table} (ID TEXT PRIMARY KEY, json TEXT)` + ); } - public async getAllRows(table: string): Promise<{ id: string; value: any }[]> { + public async getAllRows( + table: string + ): Promise<{ id: string; value: any }[]> { const prep = this._database.prepare(`SELECT * FROM ${table}`); const data = []; @@ -72,12 +76,16 @@ export class SqliteDriver implements IDriver { } public async deleteAllRows(table: string): Promise { - const result = await this._database.prepare(`DELETE FROM ${table}`).run(); + const result = await this._database + .prepare(`DELETE FROM ${table}`) + .run(); return result.changes; } public async deleteRowByKey(table: string, key: string): Promise { - const result = await this._database.prepare(`DELETE FROM ${table} WHERE ID=@key`).run({ key }); + const result = await this._database + .prepare(`DELETE FROM ${table} WHERE ID=@key`) + .run({ key }); return result.changes; } } diff --git a/src/index.ts b/src/index.ts index 9d86c342..636259cd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,6 +9,7 @@ export { MySQLDriver, Config } from "./drivers/MySQLDriver"; export { MemoryDriver, Table } from "./drivers/MemoryDriver"; export { JSONDriver, DataLike } from "./drivers/JSONDriver"; export { DriverUnion } from "./drivers/DriverUnion"; +export { PostgresDriver } from "./drivers/PostgresDriver"; export interface IQuickDBOptions { table?: string; @@ -250,8 +251,11 @@ export class QuickDB { const data = []; for (const i in currentArr) { - if (Array.isArray(value) ? value.includes(currentArr[i]) - : (value as any)(currentArr[i], i)) + if ( + Array.isArray(value) + ? value.includes(currentArr[i]) + : (value as any)(currentArr[i], i) + ) continue; data.push(currentArr[i]); if (once) break; From 3ca57bb3109d6ba55ed304cacf8e40b7694c845d Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 11:48:03 +0200 Subject: [PATCH 084/414] Added example with postgres driver --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index 56b4cedc..d3c1c901 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,30 @@ const { QuickDB, MySQLDriver } = require("quick.db"); })(); ``` +## Example With PostgresDriver + +> **NOTE:** In order to use this driver, install `npm i pg` separately. + +```js +const { QuickDB, PostgresDriver } = require("quick.db"); +(async () => { + const postgresDriver = new PostgresDriver({ + host: "localhost", + user: "me", + password: "secret", + database: "my_db", + }); + + await postgresDriver.connect(); // connect to the database **this is important** + + const db = new QuickDB({ driver: postgresDriver }); + // Now you can use quick.db as normal + + await db.set("userInfo", { difficulty: "Easy" }); + // -> { difficulty: 'Easy' } +})(); +``` + ## Example With MongoDriver > **NOTE:** In order to use this driver, install `npm i mongoose` separately. From 190581f112438316e834c892c9f4559e18b7fb4d Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 20:27:02 +0200 Subject: [PATCH 085/414] Removed unnecessary 'await' keyword in MysqlDriver and reworked PostgresDriver --- src/drivers/MySQLDriver.ts | 4 ++-- src/drivers/PostgresDriver.ts | 45 ++++++++++++++++------------------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/drivers/MySQLDriver.ts b/src/drivers/MySQLDriver.ts index 480f780f..4203517b 100644 --- a/src/drivers/MySQLDriver.ts +++ b/src/drivers/MySQLDriver.ts @@ -33,9 +33,9 @@ export class MySQLDriver implements IDriver { // This is needed for typescript typecheking // For some reason, it doesn't work even if createPool needs a string and in an overload a PoolOptions if (typeof this.config == "string") { - this.conn = await this._mysql.createPool(this.config); + this.conn = this._mysql.createPool(this.config); } else { - this.conn = await this._mysql.createPool(this.config); + this.conn = this._mysql.createPool(this.config); } } diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index b84b215a..d5afe3ac 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -9,7 +9,7 @@ export class PostgresDriver implements IDriver { get pg(): typeof PgModule { return this._pg; - } + } constructor(config: PgModule.ClientConfig) { this.config = config; @@ -34,20 +34,18 @@ export class PostgresDriver implements IDriver { async prepare(table: string): Promise { this.checkConnection(); - await this.conn?.query( - `CREATE TABLE IF NOT EXISTS ${table} (id VARCHAR(255), value jsonb)` + await this.conn!.query( + `CREATE TABLE IF NOT EXISTS ${table} (id VARCHAR(255), value TEXT)` ); } async getAllRows(table: string): Promise<{ id: string; value: any }[]> { this.checkConnection(); - const queryResult = await this.conn?.query(`SELECT * FROM ${table}`); - return ( - queryResult?.rows.map((row) => ({ - id: row.id, - value: row.value, - })) ?? [] - ); + const queryResult = await this.conn!.query(`SELECT * FROM ${table}`); + return queryResult.rows.map((row) => ({ + id: row.id, + value: JSON.parse(row.value), + })); } async getRowByKey( @@ -55,16 +53,13 @@ export class PostgresDriver implements IDriver { key: string ): Promise<[T | null, boolean]> { this.checkConnection(); - const queryResult = await this.conn?.query( + const queryResult = await this.conn!.query( `SELECT value FROM ${table} WHERE id = $1`, [key] ); - if (!queryResult || queryResult.rowCount < 1) { - return [null, false]; - } - - return [queryResult?.rows[0].value, true]; + if (queryResult.rowCount < 1) return [null, false]; + return [JSON.parse(queryResult.rows[0].value), true]; } async setRowByKey( @@ -75,15 +70,17 @@ export class PostgresDriver implements IDriver { ): Promise { this.checkConnection(); + const stringifiedValue = JSON.stringify(value); + if (update) { - await this.conn?.query( + await this.conn!.query( `UPDATE ${table} SET value = $1 WHERE id = $2`, - [value, key] + [stringifiedValue, key] ); } else { - await this.conn?.query( + await this.conn!.query( `INSERT INTO ${table} (id, value) VALUES ($1, $2)`, - [key, value] + [key, stringifiedValue] ); } @@ -92,16 +89,16 @@ export class PostgresDriver implements IDriver { async deleteAllRows(table: string): Promise { this.checkConnection(); - const queryResult = await this.conn?.query(`DELETE FROM ${table}`); - return queryResult?.rowCount ?? 0; + const queryResult = await this.conn!.query(`DELETE FROM ${table}`); + return queryResult.rowCount; } async deleteRowByKey(table: string, key: string): Promise { this.checkConnection(); - const queryResult = await this.conn?.query( + const queryResult = await this.conn!.query( `DELETE FROM ${table} WHERE id = $1`, [key] ); - return queryResult?.rowCount ?? 0; + return queryResult.rowCount; } } From 584a26fec821d7f698b427480019c01c22917dd7 Mon Sep 17 00:00:00 2001 From: Ricardo R <41346624+StasiumDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 21:12:39 +0200 Subject: [PATCH 086/414] Update README.md Updated README to include mongoose and pg as possible drivers --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d3c1c901..198340f7 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ **Support:** [discord.gg/plexidev](https://discord.gg/plexidev)
**NPM:** [npmjs.com/quick.db](https://www.npmjs.com/package/quick.db) -Quick.db is an open-source package meant to provide an easy way for beginners and people of all levels to access & store data in a low to medium volume environment. All data is stored persistently via either [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) or [mysql2](https://www.npmjs.com/package/mysql2) and comes way various other quality-of-life features. +Quick.db is an open-source package meant to provide an easy way for beginners and people of all levels to access & store data in a low to medium volume environment. All data is stored persistently via either [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3), [mysql2](https://www.npmjs.com/package/mysql2), [pg](https://www.npmjs.com/package/pg) or [mongoose](https://www.npmjs.com/package/mongoose) and comes way various other quality-of-life features. - **Persistent Storage** - Data doesn't disappear through restarts - **Multiple Drivers** - You can use either better-sqlite3 or mysql2 From a9dfdc4c91e2538dd4eda1b06220ddefdede78d5 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:36:07 -0700 Subject: [PATCH 087/414] Create .github/workflows/npm-publish.yml --- .github/workflows/npm-publish.yml | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/npm-publish.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml new file mode 100644 index 00000000..4f051d3e --- /dev/null +++ b/.github/workflows/npm-publish.yml @@ -0,0 +1,33 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Node.js Package + +on: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - run: npm ci + - run: npm test + + publish-npm: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + registry-url: https://registry.npmjs.org/ + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.npm_token}} From b5dd7cc08ccca5cfaa159dc4fe59f8a70134a6af Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 25 Mar 2023 19:41:13 -0700 Subject: [PATCH 088/414] Update npm-publish.yml --- .github/workflows/npm-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 4f051d3e..648cd6ba 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -6,6 +6,7 @@ name: Node.js Package on: release: types: [created] + workflow_dispatch: jobs: build: From 1081cc1cbf7b55ef35c36b9a6c8071778e6dd8fe Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 08:09:27 -0700 Subject: [PATCH 089/414] Delete npm-publish.yml --- .github/workflows/npm-publish.yml | 34 ------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 .github/workflows/npm-publish.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml deleted file mode 100644 index 648cd6ba..00000000 --- a/.github/workflows/npm-publish.yml +++ /dev/null @@ -1,34 +0,0 @@ -# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created -# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages - -name: Node.js Package - -on: - release: - types: [created] - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - run: npm ci - - run: npm test - - publish-npm: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - registry-url: https://registry.npmjs.org/ - - run: npm ci - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} From 12c29ca905242db96b115611c8294aeb9dec88d4 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sun, 26 Mar 2023 17:16:26 -0400 Subject: [PATCH 090/414] Adding docker compose --- .github/workflows/node.js.yml | 19 +++++++++++++------ docker-compose.yml | 27 +++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 docker-compose.yml diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 4bc3bd01..b33a7ce8 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -2,7 +2,6 @@ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs name: Node.js CI - on: push: branches: ["dev"] @@ -13,18 +12,26 @@ on: - "tsconfig.json" pull_request: branches: ["dev"] - +env: + MYSQL_PORT: 3306 + MYSQL_DATABASE: test + MYSQL_ROOT_PASSWORD: root + MONGO_PORT: 27017 + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: root + MONGO_INITDB_DATABASE: test jobs: build: runs-on: ubuntu-latest - strategy: matrix: node-version: [18.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - steps: - uses: actions/checkout@v3 + - name: Setup environment + - run: docker compose -f docker-compose.yml up -d + - name: Wait for databases + - run: sleep 30s - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: @@ -32,5 +39,5 @@ jobs: cache: "npm" - run: npm ci - run: npm run build --if-present - - run: npm test - run: npm run lint + - run: npm test diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..96b779bb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.9" +services: + mysql: + image: mysql + container_name: mysql + restart: always + ports: + - "${MYSQL_PORT}:${MYSQL_PORT}" + networks: + - testing-network + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + mongo: + image: mongo + container_name: mongo + restart: always + ports: + - "${MONGO_PORT}:${MONGO_PORT}" + networks: + - testing-network + environment: + MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} + MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} + MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} +networks: + testing-network: From ab5fa9bd6456384478b2af720b75da8c94e3abbf Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:17:30 -0700 Subject: [PATCH 091/414] Update node.js.yml --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index b33a7ce8..748c8d1e 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -4,7 +4,7 @@ name: Node.js CI on: push: - branches: ["dev"] + branches: ["dev", "feature/integration-tests"] paths: - "src/**" - "tests/**" From ab3eea15e33ea8a83468e751f3482df7659e977b Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:18:48 -0700 Subject: [PATCH 092/414] Update node.js.yml --- .github/workflows/node.js.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 748c8d1e..df1ab152 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,8 +3,9 @@ name: Node.js CI on: + workflow_dispatch: push: - branches: ["dev", "feature/integration-tests"] + branches: ["dev"] paths: - "src/**" - "tests/**" From aa639d7aa8c82f20f220e69c92caff1c0eb29d7e Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:21:16 -0700 Subject: [PATCH 093/414] Update node.js.yml --- .github/workflows/node.js.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index df1ab152..2a24955b 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -30,9 +30,9 @@ jobs: steps: - uses: actions/checkout@v3 - name: Setup environment - - run: docker compose -f docker-compose.yml up -d + run: docker compose -f docker-compose.yml up -d - name: Wait for databases - - run: sleep 30s + run: sleep 30s - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: From 11a23a8be1e6cb08e4016313222237b04e6d9fad Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:22:58 -0700 Subject: [PATCH 094/414] Update node.js.yml --- .github/workflows/node.js.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 2a24955b..9be1c45c 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,14 +3,8 @@ name: Node.js CI on: - workflow_dispatch: push: - branches: ["dev"] - paths: - - "src/**" - - "tests/**" - - "package.json" - - "tsconfig.json" + branches: ["dev", "feature/integration-tests"] pull_request: branches: ["dev"] env: From 8940bf0c87756054add5140e7cd0d095117adc1c Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:18:48 -0700 Subject: [PATCH 095/414] Update node.js.yml --- .github/workflows/node.js.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 9be1c45c..b1964b79 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,6 +3,7 @@ name: Node.js CI on: + workflow_dispatch: push: branches: ["dev", "feature/integration-tests"] pull_request: From f00797a4a39d4dc07a7eac752906f3d52e65aea5 Mon Sep 17 00:00:00 2001 From: Zelak Date: Sun, 26 Mar 2023 14:22:58 -0700 Subject: [PATCH 096/414] Update node.js.yml --- .github/workflows/node.js.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index b1964b79..9be1c45c 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,7 +3,6 @@ name: Node.js CI on: - workflow_dispatch: push: branches: ["dev", "feature/integration-tests"] pull_request: From f97eb948d7d25e52a550c5e5f32f9a026f466a90 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 09:04:29 -0400 Subject: [PATCH 097/414] Testing integration test CI --- .github/workflows/node.js.yml | 6 ++-- package-lock.json | 22 ++++++++++++++ package.json | 6 +++- tests/integration/driver.test.ts | 47 +++++++++++++++++++++++++++++ tests/{ => unit}/add.test.ts | 6 ++-- tests/{ => unit}/delete.test.ts | 6 ++-- tests/{ => unit}/pop.test.ts | 6 ++-- tests/{ => unit}/pull.test.ts | 6 ++-- tests/{ => unit}/push.test.ts | 6 ++-- tests/{ => unit}/set.test.ts | 6 ++-- tests/{ => unit}/shift.test.ts | 6 ++-- tests/{ => unit}/startsWith.test.ts | 6 ++-- tests/{ => unit}/sub.test.ts | 6 ++-- tests/{ => unit}/unshift.test.ts | 6 ++-- 14 files changed, 106 insertions(+), 35 deletions(-) create mode 100644 tests/integration/driver.test.ts rename tests/{ => unit}/add.test.ts (95%) rename tests/{ => unit}/delete.test.ts (91%) rename tests/{ => unit}/pop.test.ts (90%) rename tests/{ => unit}/pull.test.ts (95%) rename tests/{ => unit}/push.test.ts (96%) rename tests/{ => unit}/set.test.ts (96%) rename tests/{ => unit}/shift.test.ts (90%) rename tests/{ => unit}/startsWith.test.ts (90%) rename tests/{ => unit}/sub.test.ts (95%) rename tests/{ => unit}/unshift.test.ts (93%) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 9be1c45c..16c5b2fb 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -25,14 +25,12 @@ jobs: - uses: actions/checkout@v3 - name: Setup environment run: docker compose -f docker-compose.yml up -d - - name: Wait for databases - run: sleep 30s - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: "npm" - run: npm ci - - run: npm run build --if-present + - run: npm run build - run: npm run lint - - run: npm test + - run: npm run test:all diff --git a/package-lock.json b/package-lock.json index 0cf5264d..4d8ed7d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", + "dotenv": "^16.0.3", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", @@ -2556,6 +2557,7 @@ "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" +<<<<<<< Updated upstream }, "node_modules/@types/pg": { "version": "8.6.6", @@ -2567,6 +2569,8 @@ "pg-protocol": "*", "pg-types": "^2.2.0" } +======= +>>>>>>> Stashed changes }, "node_modules/@types/prettier": { "version": "2.7.2", @@ -3482,6 +3486,15 @@ "node": ">=6.0.0" } }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.340", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz", @@ -9431,6 +9444,7 @@ "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" +<<<<<<< Updated upstream }, "@types/pg": { "version": "8.6.6", @@ -9442,6 +9456,8 @@ "pg-protocol": "*", "pg-types": "^2.2.0" } +======= +>>>>>>> Stashed changes }, "@types/prettier": { "version": "2.7.2", @@ -10071,6 +10087,12 @@ "esutils": "^2.0.2" } }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true + }, "electron-to-chromium": { "version": "1.4.340", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz", diff --git a/package.json b/package.json index 2a7831ad..c800359c 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@types/write-file-atomic": "^4.0.0", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", + "dotenv": "^16.0.3", "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "jest": "^29.3.1", @@ -35,7 +36,10 @@ "lodash": "^4.17.21" }, "scripts": { - "test": "jest --roots tests", + "test:all": "jest --roots tests", + "test:integration": "jest --roots tests/integration", + "test:unit": "jest --roots tests/unit", + "test": "npm run test:unit", "build": "tsc", "lint": "eslint --ext \".ts\" ./src", "prettier": "prettier --write ./src", diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts new file mode 100644 index 00000000..7fab30fa --- /dev/null +++ b/tests/integration/driver.test.ts @@ -0,0 +1,47 @@ +import { MySQLDriver } from "../../src"; +import * as dotenv from 'dotenv' +dotenv.config(); + +const drivers = [ + new MySQLDriver({ + host: "127.0.0.1", + user: "root", + password: process.env.MYSQL_ROOT_PASSWORD, + port: Number(process.env.MYSQL_PORT), + database: process.env.MYSQL_DATABASE, + }) +]; + +const maxTime = 60; // seconds + +async function tryConnectAndPrepare(driver: any, fn: any): Promise { + if (fn in driver) { + await driver[fn](); + await driver.prepare(process.env.MYSQL_DATABASE); + return true; + } + + return true; +} + +describe("drivers integration tests", () => { + describe("should connect to database", () => { + test.each(drivers.map(driver => [driver.constructor.name, driver]))("connects to database using %p", async (_, driver) => { + const start = new Date().getTime(); + let now = new Date().getTime(); + let status = false; + while (now - start < maxTime * 1000) { + const connected = await tryConnectAndPrepare(driver, "connect").catch(() => false); + if (connected) { + status = true; + break; + } + + now = new Date().getTime(); + } + + return expect(status).toBe(true); + }, 1000 * maxTime); + + }); +}); \ No newline at end of file diff --git a/tests/add.test.ts b/tests/unit/add.test.ts similarity index 95% rename from tests/add.test.ts rename to tests/unit/add.test.ts index 3487bcf4..617367d8 100644 --- a/tests/add.test.ts +++ b/tests/unit/add.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/delete.test.ts b/tests/unit/delete.test.ts similarity index 91% rename from tests/delete.test.ts rename to tests/unit/delete.test.ts index 2b253663..00cd7f91 100644 --- a/tests/delete.test.ts +++ b/tests/unit/delete.test.ts @@ -1,7 +1,7 @@ import { faker } from "@faker-js/faker"; -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/pop.test.ts b/tests/unit/pop.test.ts similarity index 90% rename from tests/pop.test.ts rename to tests/unit/pop.test.ts index 3cfd625e..531750eb 100644 --- a/tests/pop.test.ts +++ b/tests/unit/pop.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/pull.test.ts b/tests/unit/pull.test.ts similarity index 95% rename from tests/pull.test.ts rename to tests/unit/pull.test.ts index 52086afa..9c13777c 100644 --- a/tests/pull.test.ts +++ b/tests/unit/pull.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/push.test.ts b/tests/unit/push.test.ts similarity index 96% rename from tests/push.test.ts rename to tests/unit/push.test.ts index 4da231f6..a792de55 100644 --- a/tests/push.test.ts +++ b/tests/unit/push.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/set.test.ts b/tests/unit/set.test.ts similarity index 96% rename from tests/set.test.ts rename to tests/unit/set.test.ts index 2898ff9a..b8f1eea8 100644 --- a/tests/set.test.ts +++ b/tests/unit/set.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/shift.test.ts b/tests/unit/shift.test.ts similarity index 90% rename from tests/shift.test.ts rename to tests/unit/shift.test.ts index 655402e6..038f2f7f 100644 --- a/tests/shift.test.ts +++ b/tests/unit/shift.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/startsWith.test.ts b/tests/unit/startsWith.test.ts similarity index 90% rename from tests/startsWith.test.ts rename to tests/unit/startsWith.test.ts index 569214e1..d56f4bb1 100644 --- a/tests/startsWith.test.ts +++ b/tests/unit/startsWith.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/sub.test.ts b/tests/unit/sub.test.ts similarity index 95% rename from tests/sub.test.ts rename to tests/unit/sub.test.ts index 7af18d1d..ab1f4f73 100644 --- a/tests/sub.test.ts +++ b/tests/unit/sub.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), diff --git a/tests/unshift.test.ts b/tests/unit/unshift.test.ts similarity index 93% rename from tests/unshift.test.ts rename to tests/unit/unshift.test.ts index 02080c87..03b022ec 100644 --- a/tests/unshift.test.ts +++ b/tests/unit/unshift.test.ts @@ -1,7 +1,7 @@ -import { QuickDB } from "../src"; -import { EntryGenerator } from "./generators/EntryGenerator"; +import { QuickDB } from "../../src"; +import { EntryGenerator } from "../generators/EntryGenerator"; import { faker } from "@faker-js/faker"; -import { SqliteDriverMock } from "./mocks/SqliteDriver"; +import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), From a116684ccec819782596f68fac27c37e573a216e Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 10:12:50 -0400 Subject: [PATCH 098/414] Adding new interface and fixed tests --- .env.dev | 14 ++++++++++++++ .github/workflows/node.js.yml | 5 ++--- docker-compose.yml | 16 +++++++++++++++- src/drivers/DriverUnion.ts | 2 +- src/drivers/MemoryDriver.ts | 2 +- src/drivers/MongoDriver.ts | 8 ++++---- src/drivers/MySQLDriver.ts | 9 +++++++-- src/drivers/PostgresDriver.ts | 9 +++++++-- src/drivers/SqliteDriver.ts | 2 +- src/index.ts | 4 ++-- src/{drivers => interfaces}/IDriver.ts | 0 src/interfaces/IRemoteDriver.ts | 6 ++++++ tests/integration/driver.test.ts | 12 +++++++----- 13 files changed, 67 insertions(+), 22 deletions(-) create mode 100644 .env.dev rename src/{drivers => interfaces}/IDriver.ts (100%) create mode 100644 src/interfaces/IRemoteDriver.ts diff --git a/.env.dev b/.env.dev new file mode 100644 index 00000000..e04e62ae --- /dev/null +++ b/.env.dev @@ -0,0 +1,14 @@ +MYSQL_PORT=3306 +MYSQL_DATABASE=test +MYSQL_USER=mysql +MYSQL_PASSWORD=root + +MONGO_PORT=27017 +MONGO_INITDB_DATABASE=test +MONGO_INITDB_ROOT_USERNAME=root +MONGO_INITDB_ROOT_PASSWORD=root + +POSTGRESS_PORT=5432 +POSTGRES_DB=test +POSTGRES_USER=postgres +POSTGRES_PASSWORD=root \ No newline at end of file diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 16c5b2fb..0bf41ef6 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -4,9 +4,9 @@ name: Node.js CI on: push: - branches: ["dev", "feature/integration-tests"] + branches: ["master", "dev", "feature/integration-tests"] pull_request: - branches: ["dev"] + branches: ["master", "dev"] env: MYSQL_PORT: 3306 MYSQL_DATABASE: test @@ -31,6 +31,5 @@ jobs: node-version: ${{ matrix.node-version }} cache: "npm" - run: npm ci - - run: npm run build - run: npm run lint - run: npm run test:all diff --git a/docker-compose.yml b/docker-compose.yml index 96b779bb..b5d6b632 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,8 +9,10 @@ services: networks: - testing-network environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_RANDOM_ROOT_PASSWORD: true mongo: image: mongo container_name: mongo @@ -23,5 +25,17 @@ services: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} + pg: + image: postgres + container_name: pg + restart: always + ports: + - "${POSTGRESS_PORT}:${POSTGRESS_PORT}" + networks: + - testing-network + environment: + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_DB: ${POSTGRES_DB} networks: testing-network: diff --git a/src/drivers/DriverUnion.ts b/src/drivers/DriverUnion.ts index 73d09fe7..fa420eba 100644 --- a/src/drivers/DriverUnion.ts +++ b/src/drivers/DriverUnion.ts @@ -1,4 +1,4 @@ -import { IDriver } from "./IDriver"; +import { IDriver } from "../interfaces/IDriver"; /** * DriverUnion - Union of Drivers diff --git a/src/drivers/MemoryDriver.ts b/src/drivers/MemoryDriver.ts index aa02c597..063eb94a 100644 --- a/src/drivers/MemoryDriver.ts +++ b/src/drivers/MemoryDriver.ts @@ -1,4 +1,4 @@ -import { IDriver } from "./IDriver"; +import { IDriver } from "../interfaces/IDriver"; export type Table = Map; diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 4b5c217e..6e340489 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -1,5 +1,5 @@ import type mongoose from "mongoose"; -import { IDriver } from "./IDriver"; +import { IRemoteDriver } from "../interfaces/IRemoteDriver"; export interface CollectionInterface { ID: string; @@ -30,7 +30,7 @@ export interface CollectionInterface { * // get something * console.log(await db.get("foo")); // -> foo */ -export class MongoDriver implements IDriver { +export class MongoDriver implements IRemoteDriver { public conn?: mongoose.Connection; public mongoose: typeof mongoose; private models = new Map>(); @@ -72,8 +72,8 @@ export class MongoDriver implements IDriver { return this; } - public async close(force?: boolean): Promise { - return await this.conn?.close(force); + public async disconnect(): Promise { + return await this.conn?.close(); } private checkConnection(): void { diff --git a/src/drivers/MySQLDriver.ts b/src/drivers/MySQLDriver.ts index 4203517b..1b7152e2 100644 --- a/src/drivers/MySQLDriver.ts +++ b/src/drivers/MySQLDriver.ts @@ -1,8 +1,8 @@ -import { IDriver } from "./IDriver"; import MySQLModule from "mysql2/promise"; +import { IRemoteDriver } from "../interfaces/IRemoteDriver"; export type Config = string | MySQLModule.PoolOptions; -export class MySQLDriver implements IDriver { +export class MySQLDriver implements IRemoteDriver { private static instance: MySQLDriver; private readonly _mysql: typeof MySQLModule; private conn?: MySQLModule.Pool; @@ -39,6 +39,11 @@ export class MySQLDriver implements IDriver { } } + async disconnect(): Promise { + this.checkConnection(); + await this.conn!.end(); + } + async prepare(table: string): Promise { this.checkConnection(); diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index d5afe3ac..bdb0af87 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -1,7 +1,7 @@ -import { IDriver } from "./IDriver"; import PgModule from "pg"; +import { IRemoteDriver } from "../interfaces/IRemoteDriver"; -export class PostgresDriver implements IDriver { +export class PostgresDriver implements IRemoteDriver { private static instance: PostgresDriver; private readonly _pg: typeof PgModule; private config: PgModule.ClientConfig; @@ -26,6 +26,11 @@ export class PostgresDriver implements IDriver { await this.conn.connect(); } + async disconnect(): Promise { + this.checkConnection(); + await this.conn!.end(); + } + private checkConnection(): void { if (!this.conn) { throw new Error("No connection to postgres database"); diff --git a/src/drivers/SqliteDriver.ts b/src/drivers/SqliteDriver.ts index e78daa6f..bed34b18 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -1,4 +1,4 @@ -import { IDriver } from "./IDriver"; +import { IDriver } from "../interfaces/IDriver"; import { Database } from "better-sqlite3"; export class SqliteDriver implements IDriver { diff --git a/src/index.ts b/src/index.ts index 636259cd..193bd097 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,8 +1,8 @@ import { set, get, unset } from "lodash"; -import { IDriver } from "./drivers/IDriver"; +import { IDriver } from "./interfaces/IDriver"; import { SqliteDriver } from "./drivers/SqliteDriver"; -export { IDriver } from "./drivers/IDriver"; +export { IDriver } from "./interfaces/IDriver"; export { MongoDriver, CollectionInterface } from "./drivers/MongoDriver"; export { SqliteDriver } from "./drivers/SqliteDriver"; export { MySQLDriver, Config } from "./drivers/MySQLDriver"; diff --git a/src/drivers/IDriver.ts b/src/interfaces/IDriver.ts similarity index 100% rename from src/drivers/IDriver.ts rename to src/interfaces/IDriver.ts diff --git a/src/interfaces/IRemoteDriver.ts b/src/interfaces/IRemoteDriver.ts new file mode 100644 index 00000000..8a4e40ee --- /dev/null +++ b/src/interfaces/IRemoteDriver.ts @@ -0,0 +1,6 @@ +import { IDriver } from "./IDriver"; + +export interface IRemoteDriver extends IDriver { + connect(): Promise; + disconnect(): Promise; +} \ No newline at end of file diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts index 7fab30fa..4826bcfc 100644 --- a/tests/integration/driver.test.ts +++ b/tests/integration/driver.test.ts @@ -1,12 +1,13 @@ import { MySQLDriver } from "../../src"; -import * as dotenv from 'dotenv' -dotenv.config(); +import * as dotenv from "dotenv"; +import { resolve } from "path"; +dotenv.config({ path: resolve(process.cwd(), ".env.dev") }); const drivers = [ new MySQLDriver({ host: "127.0.0.1", - user: "root", - password: process.env.MYSQL_ROOT_PASSWORD, + user: process.env.MYSQL_USER, + password: process.env.MYSQL_PASSWORD, port: Number(process.env.MYSQL_PORT), database: process.env.MYSQL_DATABASE, }) @@ -40,7 +41,8 @@ describe("drivers integration tests", () => { now = new Date().getTime(); } - return expect(status).toBe(true); + expect(status).toBe(true); + return await driver.disconnect(); }, 1000 * maxTime); }); From 4b1905aa1316d9c8b714034f7ea195b4f9e2953f Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 10:15:06 -0400 Subject: [PATCH 099/414] Fix not finding env --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 0bf41ef6..b05ba1de 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -24,7 +24,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Setup environment - run: docker compose -f docker-compose.yml up -d + run: docker compose -f docker-compose.yml --env-file .env.dev up -d - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: From 16f34af31c6285441245e09d2ae66a414699d2f6 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 10:18:59 -0400 Subject: [PATCH 100/414] Removing env from yml file --- .github/workflows/node.js.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index b05ba1de..fd496256 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -7,14 +7,6 @@ on: branches: ["master", "dev", "feature/integration-tests"] pull_request: branches: ["master", "dev"] -env: - MYSQL_PORT: 3306 - MYSQL_DATABASE: test - MYSQL_ROOT_PASSWORD: root - MONGO_PORT: 27017 - MONGO_INITDB_ROOT_USERNAME: root - MONGO_INITDB_ROOT_PASSWORD: root - MONGO_INITDB_DATABASE: test jobs: build: runs-on: ubuntu-latest From 271ee6c87092a601c62a973121a5d6e31447349c Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 13:28:32 -0400 Subject: [PATCH 101/414] Adding all remote drivers --- tests/integration/driver.test.ts | 36 +++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts index 4826bcfc..ec996858 100644 --- a/tests/integration/driver.test.ts +++ b/tests/integration/driver.test.ts @@ -1,8 +1,10 @@ -import { MySQLDriver } from "../../src"; +import { MongoDriver, MySQLDriver, PostgresDriver } from "../../src"; +import { IRemoteDriver } from "../../src/interfaces/IRemoteDriver"; import * as dotenv from "dotenv"; import { resolve } from "path"; dotenv.config({ path: resolve(process.cwd(), ".env.dev") }); +const maxTime = 6000; // seconds const drivers = [ new MySQLDriver({ host: "127.0.0.1", @@ -10,19 +12,23 @@ const drivers = [ password: process.env.MYSQL_PASSWORD, port: Number(process.env.MYSQL_PORT), database: process.env.MYSQL_DATABASE, + }), + new MongoDriver(`mongodb://${process.env.MONGO_INITDB_ROOT_USERNAME}:${process.env.MONGO_INITDB_ROOT_PASSWORD}@localhost:${process.env.MONGO_PORT}/${process.env.MONGO_INITDB_DATABASE}?authSource=admin`), + new PostgresDriver({ + host: "127.0.0.1", + user: process.env.POSTGRES_USER, + password: process.env.POSTGRES_PASSWORD, + port: Number(process.env.POSTGRES_PORT), + database: process.env.POSTGRES_DB, }) ]; -const maxTime = 60; // seconds - -async function tryConnectAndPrepare(driver: any, fn: any): Promise { - if (fn in driver) { - await driver[fn](); - await driver.prepare(process.env.MYSQL_DATABASE); - return true; - } +function isRemoteDriver(object: any): object is IRemoteDriver { + return "connect" in object; +} - return true; +function sleep(time: number): Promise { + return new Promise(resolve => setTimeout(resolve, time)); } describe("drivers integration tests", () => { @@ -31,11 +37,17 @@ describe("drivers integration tests", () => { const start = new Date().getTime(); let now = new Date().getTime(); let status = false; + + if (!isRemoteDriver(driver)) return true; while (now - start < maxTime * 1000) { - const connected = await tryConnectAndPrepare(driver, "connect").catch(() => false); - if (connected) { + try { + await driver.connect(); + await driver.prepare(process.env.MYSQL_DATABASE!); status = true; break; + // eslint-disable-next-line no-empty + } catch (_) { + await sleep(1000); } now = new Date().getTime(); From a2dd47097d884b7e0bcd43c92e5368fcbae00607 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 13:32:54 -0400 Subject: [PATCH 102/414] Adding down command to stoop containers --- .github/workflows/node.js.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index fd496256..c1f3ee9d 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -25,3 +25,5 @@ jobs: - run: npm ci - run: npm run lint - run: npm run test:all + - name: Removing environment + run: docker compose -f docker-compose.yml --env-file .env.dev down From ee4f30941412d7b44bcd18fce239442327601602 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 13:36:44 -0400 Subject: [PATCH 103/414] Removing compose down --- .github/workflows/node.js.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index c1f3ee9d..fd496256 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -25,5 +25,3 @@ jobs: - run: npm ci - run: npm run lint - run: npm run test:all - - name: Removing environment - run: docker compose -f docker-compose.yml --env-file .env.dev down From b38530e09183d77f905363d12e43b8faa7efa951 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 13:39:33 -0400 Subject: [PATCH 104/414] Added all drivers --- test-driver.json | 1 + test-driver.sqlite | Bin 0 -> 12288 bytes tests/integration/driver.test.ts | 14 +++++++++----- 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 test-driver.json create mode 100644 test-driver.sqlite diff --git a/test-driver.json b/test-driver.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/test-driver.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test-driver.sqlite b/test-driver.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..8fc6947b02c706df77491c873a7bc777edf3fc92 GIT binary patch literal 12288 zcmeI#!AiqG5P;#?C`E*lUP7;PQ$Ymr=*6fj6f0=V!Jb0I6e_i$W(D7%kLPRn2p-J@ zdhR{^12bWE*}#5#n&+qKB2+rBKR?Q#7cvs(Y5I_I{1Q0*~0R#|0009JgEO6%r<0NtGP`)m!P&L6ay2*T+d(G49 zsaIRk`(%XYRe%CAs&ePO>S z&aK*9e_) { const start = new Date().getTime(); let now = new Date().getTime(); let status = false; + if (!isRemoteDriver(driver)) { + await (driver as IDriver).prepare(process.env.MYSQL_DATABASE!); + return true; + } - if (!isRemoteDriver(driver)) return true; while (now - start < maxTime * 1000) { try { await driver.connect(); await driver.prepare(process.env.MYSQL_DATABASE!); status = true; break; - // eslint-disable-next-line no-empty } catch (_) { await sleep(1000); } From 0efdde2fd540fa3abf8297655cf333cfbec6eaa8 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 18:22:01 -0400 Subject: [PATCH 105/414] Adding gitignore entry --- .gitignore | 4 +++- test-driver.json | 1 - test-driver.sqlite | Bin 12288 -> 0 bytes tests/integration/driver.test.ts | 11 +++++++++-- 4 files changed, 12 insertions(+), 4 deletions(-) delete mode 100644 test-driver.json delete mode 100644 test-driver.sqlite diff --git a/.gitignore b/.gitignore index 9a22b851..c574ee2d 100644 --- a/.gitignore +++ b/.gitignore @@ -136,4 +136,6 @@ dist # End of https://www.toptal.com/developers/gitignore/api/node out -.tool-versions \ No newline at end of file +.tool-versions + +integration-database \ No newline at end of file diff --git a/test-driver.json b/test-driver.json deleted file mode 100644 index 9e26dfee..00000000 --- a/test-driver.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/test-driver.sqlite b/test-driver.sqlite deleted file mode 100644 index 8fc6947b02c706df77491c873a7bc777edf3fc92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI#!AiqG5P;#?C`E*lUP7;PQ$Ymr=*6fj6f0=V!Jb0I6e_i$W(D7%kLPRn2p-J@ zdhR{^12bWE*}#5#n&+qKB2+rBKR?Q#7cvs(Y5I_I{1Q0*~0R#|0009JgEO6%r<0NtGP`)m!P&L6ay2*T+d(G49 zsaIRk`(%XYRe%CAs&ePO>S z&aK*9e_) Date: Wed, 29 Mar 2023 20:07:40 -0400 Subject: [PATCH 106/414] Added integration tests for all drivers --- src/drivers/MemoryDriver.ts | 2 +- tests/integration/driver.test.ts | 123 +++++++++++++++++++++++++------ 2 files changed, 100 insertions(+), 25 deletions(-) diff --git a/src/drivers/MemoryDriver.ts b/src/drivers/MemoryDriver.ts index 063eb94a..a2229877 100644 --- a/src/drivers/MemoryDriver.ts +++ b/src/drivers/MemoryDriver.ts @@ -43,7 +43,7 @@ export class MemoryDriver implements IDriver { ): Promise<[T | null, boolean]> { const store = this.getOrCreateTable(table); const val = store.get(key) as T; - return [val == null ? null : val, false]; + return [val == null ? null : val, val == null ? false : true]; } public async setRowByKey( diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts index 66335a9f..e4974c87 100644 --- a/tests/integration/driver.test.ts +++ b/tests/integration/driver.test.ts @@ -1,12 +1,10 @@ -import { IDriver, JSONDriver, MongoDriver, MySQLDriver, PostgresDriver, SqliteDriver } from "../../src"; +import { IDriver, JSONDriver, MemoryDriver, MongoDriver, MySQLDriver, PostgresDriver, SqliteDriver } from "../../src"; import { IRemoteDriver } from "../../src/interfaces/IRemoteDriver"; import * as dotenv from "dotenv"; import { resolve } from "path"; -dotenv.config({ path: resolve(process.cwd(), ".env.dev") }); import fs from "fs"; +dotenv.config({ path: resolve(process.cwd(), ".env.dev") }); -// check if folder integration-database exists -// if not create it if (!fs.existsSync("./integration-database")) { fs.mkdirSync("./integration-database"); } @@ -30,6 +28,7 @@ const drivers = [ }), new JSONDriver("./integration-database/test-driver.json"), new SqliteDriver("./integration-database/test-driver.sqlite"), + new MemoryDriver(), ]; function isRemoteDriver(object: any): object is IRemoteDriver { @@ -40,33 +39,109 @@ function sleep(time: number): Promise { return new Promise(resolve => setTimeout(resolve, time)); } +const driversWithNames = drivers.map((driver) => [driver.constructor.name, driver]) as [string, IDriver][]; describe("drivers integration tests", () => { + afterAll(async () => { + if (fs.existsSync("./integration-database")) { + fs.rmdirSync("./integration-database", { recursive: true }); + } + }); + describe("should connect to database", () => { - test.each(drivers.map(driver => [driver.constructor.name, driver]))("connects to database using %p", async (_, driver) => { - const start = new Date().getTime(); - let now = new Date().getTime(); - let status = false; - if (!isRemoteDriver(driver)) { - await (driver as IDriver).prepare(process.env.MYSQL_DATABASE!); - return true; - } + test.each(driversWithNames)( + 'connects to database using %s', + async (_, driver) => { + const start = new Date().getTime(); + let now = new Date().getTime(); + let status = false; + if (!isRemoteDriver(driver)) { + await (driver as IDriver).prepare(process.env.MYSQL_DATABASE!); + return true; + } - while (now - start < maxTime * 1000) { - try { - await driver.connect(); - await driver.prepare(process.env.MYSQL_DATABASE!); - status = true; - break; - } catch (_) { - await sleep(1000); + while (now - start < maxTime * 1000) { + try { + await driver.connect(); + await driver.prepare(process.env.MYSQL_DATABASE!); + status = true; + break; + } catch (_) { + await sleep(1000); + } + + now = new Date().getTime(); } - now = new Date().getTime(); + expect(status).toBe(true); + }, 1000 * maxTime); + }); + + describe("integration tests", () => { + afterEach(async () => { + for (const driver of drivers) { + await driver.deleteAllRows(process.env.MYSQL_DATABASE!); } + }); - expect(status).toBe(true); - return await driver.disconnect(); - }, 1000 * maxTime); + test.each(driversWithNames)( + 'should set and get data using %s', + async (_, driver) => { + const key = "foo"; + const value = "bar"; + await driver.setRowByKey(process.env.MYSQL_DATABASE!, key, value, false); + let result = await driver.getRowByKey(process.env.MYSQL_DATABASE!, key); + expect(result).toEqual([value, true]); + + result = await driver.getRowByKey(process.env.MYSQL_DATABASE!, "not-exists"); + expect(result).toEqual([null, false]); + } + ); + test.each(driversWithNames)( + 'should delete data using %s', + async (_, driver) => { + const key = "foobar"; + const value = "bar"; + await driver.setRowByKey(process.env.MYSQL_DATABASE!, key, value, false); + let result = await driver.getRowByKey(process.env.MYSQL_DATABASE!, key); + expect(result).toEqual([value, true]); + + await driver.deleteRowByKey(process.env.MYSQL_DATABASE!, key); + result = await driver.getRowByKey(process.env.MYSQL_DATABASE!, key); + expect(result).toEqual([null, false]); + } + ); + + test.each(driversWithNames)( + 'should get all data using %s', + async (_, driver) => { + const key = "foobarbar"; + const value = "bar"; + await driver.setRowByKey(process.env.MYSQL_DATABASE!, key, value, false); + const result = await driver.getAllRows(process.env.MYSQL_DATABASE!); + expect(result.length).toBe(1); + expect(result[0]).toEqual({ id: key, value }); + } + ); + + test.each(driversWithNames)( + 'should delete all data using %s', + async (_, driver) => { + await driver.deleteAllRows(process.env.MYSQL_DATABASE!); + const result = await driver.getAllRows(process.env.MYSQL_DATABASE!); + expect(result.length).toBe(0); + } + ); + }); + + describe("should disconnect to database", () => { + test.each(driversWithNames)( + 'connects to database using %s', + async (_, driver) => { + if (!isRemoteDriver(driver)) return true; + + return await driver.disconnect(); + } + ); }); }); \ No newline at end of file From 1bdb0cb09fc7191f73ed4fdd643ff7d76baed294 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 20:13:07 -0400 Subject: [PATCH 107/414] Changing node.js.yml --- .github/workflows/node.js.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index fd496256..33f192c5 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -4,7 +4,12 @@ name: Node.js CI on: push: - branches: ["master", "dev", "feature/integration-tests"] + branches: ["master", "dev"] + paths: + - "src/**" + - "tests/**" + - "package.json" + - "tsconfig.json" pull_request: branches: ["master", "dev"] jobs: From dced367115547cfb3d5f5939977186da3640b7ea Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 20:18:12 -0400 Subject: [PATCH 108/414] Not sure why --- src/drivers/MongoDriver.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 6e340489..95cc7e19 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -87,11 +87,11 @@ export class MongoDriver implements IRemoteDriver { this.models.set(table, this.modelSchema(table)); } - private async getModel( + private async getModel( name: string - ): Promise | undefined> { + ): Promise> | undefined> { await this.prepare(name); - return this.models.get(name); + return this.models.get(name) as mongoose.Model> | undefined; } async getAllRows(table: string): Promise<{ id: string; value: any }[]> { From 928acb19552ef2c5988223b0ee55ab8c3aff023d Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 20:30:29 -0400 Subject: [PATCH 109/414] Fixing eslint and pretting files --- .eslintrc.js | 4 ++++ .vscode/settings.json | 2 +- src/drivers/MongoDriver.ts | 6 ++++-- src/drivers/SqliteDriver.ts | 12 +++++------- src/index.ts | 3 ++- src/interfaces/IRemoteDriver.ts | 2 +- tsconfig.json | 1 + 7 files changed, 18 insertions(+), 12 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 96d7ea5e..81fcc17d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -10,10 +10,14 @@ module.exports = { "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", ], + parserOptions: { + project: ["./tsconfig.json"], + }, rules: { "@typescript-eslint/no-explicit-any": 0, "@typescript-eslint/explicit-function-return-type": 1, "@typescript-eslint/no-non-null-assertion": 0, + "@typescript-eslint/await-thenable": 1, "no-console": 2, }, }; diff --git a/.vscode/settings.json b/.vscode/settings.json index 7611bbdf..882d8896 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,6 +2,6 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.tabSize": 4, "[typescript]": { - "editor.defaultFormatter": "vscode.typescript-language-features" + "editor.defaultFormatter": "esbenp.prettier-vscode" } } diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 95cc7e19..40759168 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -91,7 +91,9 @@ export class MongoDriver implements IRemoteDriver { name: string ): Promise> | undefined> { await this.prepare(name); - return this.models.get(name) as mongoose.Model> | undefined; + return this.models.get(name) as + | mongoose.Model> + | undefined; } async getAllRows(table: string): Promise<{ id: string; value: any }[]> { @@ -115,11 +117,11 @@ export class MongoDriver implements IRemoteDriver { return [res.data as T | null, true]; } - // eslint-disable-next-line @typescript-eslint/no-unused-vars async setRowByKey( table: string, key: string, value: any, + // eslint-disable-next-line @typescript-eslint/no-unused-vars _update: boolean ): Promise { this.checkConnection(); diff --git a/src/drivers/SqliteDriver.ts b/src/drivers/SqliteDriver.ts index bed34b18..99812be7 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -23,7 +23,7 @@ export class SqliteDriver implements IDriver { } public async prepare(table: string): Promise { - await this._database.exec( + this._database.exec( `CREATE TABLE IF NOT EXISTS ${table} (ID TEXT PRIMARY KEY, json TEXT)` ); } @@ -63,11 +63,11 @@ export class SqliteDriver implements IDriver { ): Promise { const stringifiedJson = JSON.stringify(value); if (update) { - await this._database + this._database .prepare(`UPDATE ${table} SET json = (?) WHERE ID = (?)`) .run(stringifiedJson, key); } else { - await this._database + this._database .prepare(`INSERT INTO ${table} (ID,json) VALUES (?,?)`) .run(key, stringifiedJson); } @@ -76,14 +76,12 @@ export class SqliteDriver implements IDriver { } public async deleteAllRows(table: string): Promise { - const result = await this._database - .prepare(`DELETE FROM ${table}`) - .run(); + const result = this._database.prepare(`DELETE FROM ${table}`).run(); return result.changes; } public async deleteRowByKey(table: string, key: string): Promise { - const result = await this._database + const result = this._database .prepare(`DELETE FROM ${table} WHERE ID=@key`) .run({ key }); return result.changes; diff --git a/src/index.ts b/src/index.ts index 193bd097..31963567 100644 --- a/src/index.ts +++ b/src/index.ts @@ -92,7 +92,8 @@ export class QuickDB { } static createSingleton(options: IQuickDBOptions = {}): QuickDB { - if (!this.instance && !options.driver) throw Error("No instance and driver provided"); + if (!this.instance && !options.driver) + throw Error("No instance and driver provided"); if (!this.instance) this.instance = new QuickDB(options); return this.instance; } diff --git a/src/interfaces/IRemoteDriver.ts b/src/interfaces/IRemoteDriver.ts index 8a4e40ee..ad1e7fac 100644 --- a/src/interfaces/IRemoteDriver.ts +++ b/src/interfaces/IRemoteDriver.ts @@ -3,4 +3,4 @@ import { IDriver } from "./IDriver"; export interface IRemoteDriver extends IDriver { connect(): Promise; disconnect(): Promise; -} \ No newline at end of file +} diff --git a/tsconfig.json b/tsconfig.json index 5f06ddf5..d7e4db88 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,5 +12,6 @@ "skipLibCheck": true /* Skip type checking all .d.ts files. */, "declaration": true }, + "include": ["src", ".eslintrc.js"], "exclude": ["tests", "out"] } From e116b4fd151e7fad5dd6969d9d41c2f7e5ea979c Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 29 Mar 2023 20:50:42 -0400 Subject: [PATCH 110/414] Fix problem with eslint --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index d7e4db88..2f1f1922 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,6 +12,6 @@ "skipLibCheck": true /* Skip type checking all .d.ts files. */, "declaration": true }, - "include": ["src", ".eslintrc.js"], + "include": ["src", ".eslintrc.js", "tests"], "exclude": ["tests", "out"] } From 7c8a176c32de595fd009811a37a84439a475ef77 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Mon, 27 Mar 2023 10:12:24 -0400 Subject: [PATCH 111/414] POC new export system --- package.json | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/package.json b/package.json index c800359c..85e77671 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,36 @@ "dependencies": { "lodash": "^4.17.21" }, + "exports": { + ".": { + "require": "./out/index.js", + "types": "./out/index.d.ts" + }, + "./SqliteDriver": { + "require": "./out/drivers/SqliteDriver.js", + "types": "./out/drivers/SqliteDriver.d.ts" + }, + "./MySQLDriver": { + "require": "./out/drivers/MySQLDriver.js", + "types": "./out/drivers/MySQLDriver.d.ts" + }, + "./MongoDriver": { + "require": "./out/drivers/MongoDriver.js", + "types": "./out/drivers/MongoDriver.d.ts" + }, + "./MemoryDriver": { + "require": "./out/drivers/MemoryDriver.js", + "types": "./out/drivers/MemoryDriver.d.ts" + }, + "./JSONDriver": { + "require": "./out/drivers/JSONDriver.js", + "types": "./out/drivers/JSONDriver.d.ts" + }, + "./DriverUnion": { + "require": "./out/drivers/DriverUnion.js", + "types": "./out/drivers/DriverUnion.d.ts" + } + }, "scripts": { "test:all": "jest --roots tests", "test:integration": "jest --roots tests/integration", From 83920f02301930295722d2aeeb4fbbc3f1586866 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 31 Mar 2023 11:03:15 -0400 Subject: [PATCH 112/414] Finished new export system --- package.json | 26 +++-------------------- src/drivers/JSONDriver.ts | 10 ++++----- src/drivers/MongoDriver.ts | 40 ++++++++++++++++++++--------------- src/drivers/MySQLDriver.ts | 33 +++++++++++++---------------- src/drivers/PostgresDriver.ts | 18 ++++++---------- src/drivers/SqliteDriver.ts | 4 +--- src/index.ts | 9 +------- typedoc.json | 3 ++- 8 files changed, 55 insertions(+), 88 deletions(-) diff --git a/package.json b/package.json index 85e77671..50f62681 100644 --- a/package.json +++ b/package.json @@ -40,29 +40,9 @@ "require": "./out/index.js", "types": "./out/index.d.ts" }, - "./SqliteDriver": { - "require": "./out/drivers/SqliteDriver.js", - "types": "./out/drivers/SqliteDriver.d.ts" - }, - "./MySQLDriver": { - "require": "./out/drivers/MySQLDriver.js", - "types": "./out/drivers/MySQLDriver.d.ts" - }, - "./MongoDriver": { - "require": "./out/drivers/MongoDriver.js", - "types": "./out/drivers/MongoDriver.d.ts" - }, - "./MemoryDriver": { - "require": "./out/drivers/MemoryDriver.js", - "types": "./out/drivers/MemoryDriver.d.ts" - }, - "./JSONDriver": { - "require": "./out/drivers/JSONDriver.js", - "types": "./out/drivers/JSONDriver.d.ts" - }, - "./DriverUnion": { - "require": "./out/drivers/DriverUnion.js", - "types": "./out/drivers/DriverUnion.d.ts" + "./*": { + "require": "./out/drivers/*.js", + "types": "./out/drivers/*.d.ts" } }, "scripts": { diff --git a/src/drivers/JSONDriver.ts b/src/drivers/JSONDriver.ts index dd4afcd1..fafdbc83 100644 --- a/src/drivers/JSONDriver.ts +++ b/src/drivers/JSONDriver.ts @@ -1,15 +1,13 @@ import { MemoryDriver } from "./MemoryDriver"; import { existsSync, readFileSync } from "fs"; import { readFile } from "fs/promises"; +import writeFile from "write-file-atomic"; export type DataLike = { id: string; value: T }; export class JSONDriver extends MemoryDriver { - private writeFile: typeof import("write-file-atomic"); - public constructor(public path = "./quickdb.json") { super(); - this.writeFile = require("write-file-atomic"); // synchronously load contents before initializing this.loadContentSync(); } @@ -30,7 +28,7 @@ export class JSONDriver extends MemoryDriver { throw new Error("Database malformed"); } } else { - this.writeFile.sync(this.path, "{}"); + writeFile.sync(this.path, "{}"); } } @@ -50,7 +48,7 @@ export class JSONDriver extends MemoryDriver { throw new Error("Database malformed"); } } else { - await this.writeFile(this.path, "{}"); + await writeFile(this.path, "{}"); } } @@ -66,7 +64,7 @@ export class JSONDriver extends MemoryDriver { public async snapshot(): Promise { const data = await this.export(); - await this.writeFile(this.path, JSON.stringify(data)); + await writeFile(this.path, JSON.stringify(data)); } public async deleteAllRows(table: string): Promise { diff --git a/src/drivers/MongoDriver.ts b/src/drivers/MongoDriver.ts index 40759168..36c67767 100644 --- a/src/drivers/MongoDriver.ts +++ b/src/drivers/MongoDriver.ts @@ -1,4 +1,11 @@ -import type mongoose from "mongoose"; +import { + ConnectOptions, + Connection, + Model, + Schema, + SchemaTypes, + createConnection, +} from "mongoose"; import { IRemoteDriver } from "../interfaces/IRemoteDriver"; export interface CollectionInterface { @@ -31,29 +38,27 @@ export interface CollectionInterface { * console.log(await db.get("foo")); // -> foo */ export class MongoDriver implements IRemoteDriver { - public conn?: mongoose.Connection; - public mongoose: typeof mongoose; + public conn?: Connection; private models = new Map>(); - docSchema: mongoose.Schema>; + docSchema: Schema>; public constructor( public url: string, - public options: mongoose.ConnectOptions = {} + public options: ConnectOptions = {} ) { - this.mongoose = require("mongoose"); - this.docSchema = new this.mongoose.Schema( + this.docSchema = new Schema( { ID: { - type: this.mongoose.SchemaTypes.String, + type: SchemaTypes.String, required: true, unique: true, }, data: { - type: this.mongoose.SchemaTypes.Mixed, + type: SchemaTypes.Mixed, required: false, }, expireAt: { - type: this.mongoose.SchemaTypes.Date, + type: SchemaTypes.Date, required: false, default: null, }, @@ -65,9 +70,10 @@ export class MongoDriver implements IRemoteDriver { } public async connect(): Promise { - const connection = await this.mongoose - .createConnection(this.url, this.options) - .asPromise(); + const connection = await createConnection( + this.url, + this.options + ).asPromise(); this.conn = connection; return this; } @@ -89,10 +95,10 @@ export class MongoDriver implements IRemoteDriver { private async getModel( name: string - ): Promise> | undefined> { + ): Promise> | undefined> { await this.prepare(name); return this.models.get(name) as - | mongoose.Model> + | Model> | undefined; } @@ -161,7 +167,7 @@ export class MongoDriver implements IRemoteDriver { // eslint-disable-next-line @typescript-eslint/ban-types modelSchema( modelName = "JSON" - ): mongoose.Model> { + ): Model> { this.checkConnection(); const model = this.conn!.model(modelName, this.docSchema); model.collection @@ -169,6 +175,6 @@ export class MongoDriver implements IRemoteDriver { .catch(() => { /* void */ }); - return model as mongoose.Model>; + return model as Model>; } } diff --git a/src/drivers/MySQLDriver.ts b/src/drivers/MySQLDriver.ts index 1b7152e2..bc658c62 100644 --- a/src/drivers/MySQLDriver.ts +++ b/src/drivers/MySQLDriver.ts @@ -1,21 +1,20 @@ -import MySQLModule from "mysql2/promise"; +import { + OkPacket, + Pool, + PoolOptions, + RowDataPacket, + createPool, +} from "mysql2/promise"; import { IRemoteDriver } from "../interfaces/IRemoteDriver"; -export type Config = string | MySQLModule.PoolOptions; +export type Config = string | PoolOptions; export class MySQLDriver implements IRemoteDriver { private static instance: MySQLDriver; - private readonly _mysql: typeof MySQLModule; - private conn?: MySQLModule.Pool; + private conn?: Pool; private config: Config; - get mysql(): typeof MySQLModule { - return this._mysql; - } - constructor(config: Config) { this.config = config; - // eslint-disable-next-line @typescript-eslint/no-var-requires - this._mysql = require("mysql2/promise"); } static createSingleton(config: string | Config): MySQLDriver { @@ -33,9 +32,9 @@ export class MySQLDriver implements IRemoteDriver { // This is needed for typescript typecheking // For some reason, it doesn't work even if createPool needs a string and in an overload a PoolOptions if (typeof this.config == "string") { - this.conn = this._mysql.createPool(this.config); + this.conn = createPool(this.config); } else { - this.conn = this._mysql.createPool(this.config); + this.conn = createPool(this.config); } } @@ -55,7 +54,7 @@ export class MySQLDriver implements IRemoteDriver { async getAllRows(table: string): Promise<{ id: string; value: any }[]> { this.checkConnection(); - const [rows] = await this.conn!.query( + const [rows] = await this.conn!.query( `SELECT * FROM ${table}` ); return rows.map((row: any) => ({ @@ -70,7 +69,7 @@ export class MySQLDriver implements IRemoteDriver { ): Promise<[T | null, boolean]> { this.checkConnection(); - const [rows] = await this.conn!.query( + const [rows] = await this.conn!.query( `SELECT json FROM ${table} WHERE ID = ?`, [key] ); @@ -106,16 +105,14 @@ export class MySQLDriver implements IRemoteDriver { async deleteAllRows(table: string): Promise { this.checkConnection(); - const [rows] = await this.conn!.query( - `DELETE FROM ${table}` - ); + const [rows] = await this.conn!.query(`DELETE FROM ${table}`); return rows.affectedRows; } async deleteRowByKey(table: string, key: string): Promise { this.checkConnection(); - const [rows] = await this.conn!.query( + const [rows] = await this.conn!.query( `DELETE FROM ${table} WHERE ID=?`, [key] ); diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index bdb0af87..f7de489e 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -1,28 +1,22 @@ -import PgModule from "pg"; +import { Client, ClientConfig } from "pg"; import { IRemoteDriver } from "../interfaces/IRemoteDriver"; export class PostgresDriver implements IRemoteDriver { private static instance: PostgresDriver; - private readonly _pg: typeof PgModule; - private config: PgModule.ClientConfig; - private conn: PgModule.Client | undefined; + private config: ClientConfig; + private conn: Client | undefined; - get pg(): typeof PgModule { - return this._pg; - } - - constructor(config: PgModule.ClientConfig) { + constructor(config: ClientConfig) { this.config = config; - this._pg = require("pg"); } - static createSingleton(config: PgModule.ClientConfig): PostgresDriver { + static createSingleton(config: ClientConfig): PostgresDriver { if (!this.instance) this.instance = new PostgresDriver(config); return this.instance; } async connect(): Promise { - this.conn = new PgModule.Client(this.config); + this.conn = new Client(this.config); await this.conn.connect(); } diff --git a/src/drivers/SqliteDriver.ts b/src/drivers/SqliteDriver.ts index 99812be7..c6539608 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -1,5 +1,5 @@ +import sqlite3, { Database } from "better-sqlite3"; import { IDriver } from "../interfaces/IDriver"; -import { Database } from "better-sqlite3"; export class SqliteDriver implements IDriver { private static instance: SqliteDriver | null = null; @@ -10,8 +10,6 @@ export class SqliteDriver implements IDriver { } constructor(path: string) { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const sqlite3 = require("better-sqlite3"); this._database = sqlite3(path); } diff --git a/src/index.ts b/src/index.ts index 31963567..1a311199 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,14 +3,7 @@ import { IDriver } from "./interfaces/IDriver"; import { SqliteDriver } from "./drivers/SqliteDriver"; export { IDriver } from "./interfaces/IDriver"; -export { MongoDriver, CollectionInterface } from "./drivers/MongoDriver"; -export { SqliteDriver } from "./drivers/SqliteDriver"; -export { MySQLDriver, Config } from "./drivers/MySQLDriver"; -export { MemoryDriver, Table } from "./drivers/MemoryDriver"; -export { JSONDriver, DataLike } from "./drivers/JSONDriver"; -export { DriverUnion } from "./drivers/DriverUnion"; -export { PostgresDriver } from "./drivers/PostgresDriver"; - +export { IRemoteDriver } from "./interfaces/IRemoteDriver"; export interface IQuickDBOptions { table?: string; filePath?: string; diff --git a/typedoc.json b/typedoc.json index e32f7b0b..baf7afb7 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,6 +1,7 @@ { "$schema": "https://typedoc.org/schema.json", - "entryPoints": ["./src/index.ts"], + "entryPoints": ["./src/index.ts", "./src/drivers/*.ts"], + "entryPointStrategy": "resolve", "out": "./docs", "json": "./docs/doc.json", "cname": "docs.plexidev.org" From f05f7b227bd3ff92f4aac77c00455415c086ede7 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 31 Mar 2023 11:10:12 -0400 Subject: [PATCH 113/414] Fixed problems with imports --- tests/integration/driver.test.ts | 90 ++++++++++++++++++++++++-------- tsconfig.json | 5 +- 2 files changed, 70 insertions(+), 25 deletions(-) diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts index e4974c87..154c6ff6 100644 --- a/tests/integration/driver.test.ts +++ b/tests/integration/driver.test.ts @@ -1,8 +1,14 @@ -import { IDriver, JSONDriver, MemoryDriver, MongoDriver, MySQLDriver, PostgresDriver, SqliteDriver } from "../../src"; +import { MySQLDriver } from "../../src/drivers/MySQLDriver"; +import { MongoDriver } from "../../src/drivers/MongoDriver"; +import { PostgresDriver } from "../../src/drivers/PostgresDriver"; +import { JSONDriver } from "../../src/drivers/JSONDriver"; +import { SqliteDriver } from "../../src/drivers/SqliteDriver"; +import { MemoryDriver } from "../../src/drivers/MemoryDriver"; import { IRemoteDriver } from "../../src/interfaces/IRemoteDriver"; import * as dotenv from "dotenv"; import { resolve } from "path"; import fs from "fs"; +import { IDriver } from "../../src/interfaces/IDriver"; dotenv.config({ path: resolve(process.cwd(), ".env.dev") }); if (!fs.existsSync("./integration-database")) { @@ -18,7 +24,9 @@ const drivers = [ port: Number(process.env.MYSQL_PORT), database: process.env.MYSQL_DATABASE, }), - new MongoDriver(`mongodb://${process.env.MONGO_INITDB_ROOT_USERNAME}:${process.env.MONGO_INITDB_ROOT_PASSWORD}@localhost:${process.env.MONGO_PORT}/${process.env.MONGO_INITDB_DATABASE}?authSource=admin`), + new MongoDriver( + `mongodb://${process.env.MONGO_INITDB_ROOT_USERNAME}:${process.env.MONGO_INITDB_ROOT_PASSWORD}@localhost:${process.env.MONGO_PORT}/${process.env.MONGO_INITDB_DATABASE}?authSource=admin` + ), new PostgresDriver({ host: "127.0.0.1", user: process.env.POSTGRES_USER, @@ -36,10 +44,13 @@ function isRemoteDriver(object: any): object is IRemoteDriver { } function sleep(time: number): Promise { - return new Promise(resolve => setTimeout(resolve, time)); + return new Promise((resolve) => setTimeout(resolve, time)); } -const driversWithNames = drivers.map((driver) => [driver.constructor.name, driver]) as [string, IDriver][]; +const driversWithNames = drivers.map((driver) => [ + driver.constructor.name, + driver, +]) as [string, IDriver][]; describe("drivers integration tests", () => { afterAll(async () => { if (fs.existsSync("./integration-database")) { @@ -49,13 +60,15 @@ describe("drivers integration tests", () => { describe("should connect to database", () => { test.each(driversWithNames)( - 'connects to database using %s', + "connects to database using %s", async (_, driver) => { const start = new Date().getTime(); let now = new Date().getTime(); let status = false; if (!isRemoteDriver(driver)) { - await (driver as IDriver).prepare(process.env.MYSQL_DATABASE!); + await (driver as IDriver).prepare( + process.env.MYSQL_DATABASE! + ); return true; } @@ -73,7 +86,9 @@ describe("drivers integration tests", () => { } expect(status).toBe(true); - }, 1000 * maxTime); + }, + 1000 * maxTime + ); }); describe("integration tests", () => { @@ -84,51 +99,82 @@ describe("drivers integration tests", () => { }); test.each(driversWithNames)( - 'should set and get data using %s', + "should set and get data using %s", async (_, driver) => { const key = "foo"; const value = "bar"; - await driver.setRowByKey(process.env.MYSQL_DATABASE!, key, value, false); - let result = await driver.getRowByKey(process.env.MYSQL_DATABASE!, key); + await driver.setRowByKey( + process.env.MYSQL_DATABASE!, + key, + value, + false + ); + let result = await driver.getRowByKey( + process.env.MYSQL_DATABASE!, + key + ); expect(result).toEqual([value, true]); - result = await driver.getRowByKey(process.env.MYSQL_DATABASE!, "not-exists"); + result = await driver.getRowByKey( + process.env.MYSQL_DATABASE!, + "not-exists" + ); expect(result).toEqual([null, false]); } ); test.each(driversWithNames)( - 'should delete data using %s', + "should delete data using %s", async (_, driver) => { const key = "foobar"; const value = "bar"; - await driver.setRowByKey(process.env.MYSQL_DATABASE!, key, value, false); - let result = await driver.getRowByKey(process.env.MYSQL_DATABASE!, key); + await driver.setRowByKey( + process.env.MYSQL_DATABASE!, + key, + value, + false + ); + let result = await driver.getRowByKey( + process.env.MYSQL_DATABASE!, + key + ); expect(result).toEqual([value, true]); await driver.deleteRowByKey(process.env.MYSQL_DATABASE!, key); - result = await driver.getRowByKey(process.env.MYSQL_DATABASE!, key); + result = await driver.getRowByKey( + process.env.MYSQL_DATABASE!, + key + ); expect(result).toEqual([null, false]); } ); test.each(driversWithNames)( - 'should get all data using %s', + "should get all data using %s", async (_, driver) => { const key = "foobarbar"; const value = "bar"; - await driver.setRowByKey(process.env.MYSQL_DATABASE!, key, value, false); - const result = await driver.getAllRows(process.env.MYSQL_DATABASE!); + await driver.setRowByKey( + process.env.MYSQL_DATABASE!, + key, + value, + false + ); + const result = await driver.getAllRows( + process.env.MYSQL_DATABASE! + ); expect(result.length).toBe(1); expect(result[0]).toEqual({ id: key, value }); } ); test.each(driversWithNames)( - 'should delete all data using %s', + "should delete all data using %s", async (_, driver) => { await driver.deleteAllRows(process.env.MYSQL_DATABASE!); - const result = await driver.getAllRows(process.env.MYSQL_DATABASE!); + const result = await driver.getAllRows( + process.env.MYSQL_DATABASE! + ); expect(result.length).toBe(0); } ); @@ -136,7 +182,7 @@ describe("drivers integration tests", () => { describe("should disconnect to database", () => { test.each(driversWithNames)( - 'connects to database using %s', + "connects to database using %s", async (_, driver) => { if (!isRemoteDriver(driver)) return true; @@ -144,4 +190,4 @@ describe("drivers integration tests", () => { } ); }); -}); \ No newline at end of file +}); diff --git a/tsconfig.json b/tsconfig.json index 2f1f1922..ad4020a8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,6 @@ "compilerOptions": { "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, "module": "CommonJS" /* Specify what module code is generated. */, - "rootDir": "./src", "sourceMap": true /* Create source map files for emitted JavaScript files. */, "outDir": "./out" /* Specify an output folder for all emitted files. */, "removeComments": true /* Disable emitting comments. */, @@ -12,6 +11,6 @@ "skipLibCheck": true /* Skip type checking all .d.ts files. */, "declaration": true }, - "include": ["src", ".eslintrc.js", "tests"], - "exclude": ["tests", "out"] + "include": ["src", "tests", ".eslintrc.js"], + "exclude": ["out"] } From 7b259480caf8dd86ad263cd2546407eabc3ad6a0 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 31 Mar 2023 11:17:09 -0400 Subject: [PATCH 114/414] Adding deploy script --- deploy-integration-environment.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100755 deploy-integration-environment.sh diff --git a/deploy-integration-environment.sh b/deploy-integration-environment.sh new file mode 100755 index 00000000..ae67bbc7 --- /dev/null +++ b/deploy-integration-environment.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +docker compose --env-file .env.dev up \ No newline at end of file From 2b86f6bfad8f02dea15ccef79db10f21ecd4ea10 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 31 Mar 2023 11:32:52 -0400 Subject: [PATCH 115/414] Docgen on releases --- .github/workflows/docgen-static.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docgen-static.yml b/.github/workflows/docgen-static.yml index f2724340..32f65425 100644 --- a/.github/workflows/docgen-static.yml +++ b/.github/workflows/docgen-static.yml @@ -2,11 +2,8 @@ # Modified to build with node name: Deploy built static content to Pages on: - # Runs on pushes targeting the default branch - push: - branches: ["master"] - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: + release: + types: [created] # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read From 6d97fb0d72d7129801deb0ba9990b32f9814eb04 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 31 Mar 2023 11:38:30 -0400 Subject: [PATCH 116/414] Run ci only on pull requests --- .github/workflows/node.js.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 33f192c5..410c1101 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,13 +3,6 @@ name: Node.js CI on: - push: - branches: ["master", "dev"] - paths: - - "src/**" - - "tests/**" - - "package.json" - - "tsconfig.json" pull_request: branches: ["master", "dev"] jobs: From a57b2d609ac0c9380049553d40659ce5124cb505 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 31 Mar 2023 11:42:31 -0400 Subject: [PATCH 117/414] Revert "Run ci only on pull requests" This reverts commit 6d97fb0d72d7129801deb0ba9990b32f9814eb04. --- .github/workflows/node.js.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 410c1101..33f192c5 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -3,6 +3,13 @@ name: Node.js CI on: + push: + branches: ["master", "dev"] + paths: + - "src/**" + - "tests/**" + - "package.json" + - "tsconfig.json" pull_request: branches: ["master", "dev"] jobs: From 4df6f3b250d704ce49b4f70d3aa87cf1ddafd35d Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 31 Mar 2023 11:52:12 -0400 Subject: [PATCH 118/414] Optimizing ci for draft pr --- .github/workflows/node.js.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 33f192c5..204fea68 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -12,8 +12,10 @@ on: - "tsconfig.json" pull_request: branches: ["master", "dev"] + types: [opened, synchronize, reopened, ready_for_review] jobs: build: + if: github.event.pull_request.draft == false runs-on: ubuntu-latest strategy: matrix: From 3a19cee06890a8328c472a4fccd77a36d1200286 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sat, 1 Apr 2023 09:10:02 -0400 Subject: [PATCH 119/414] Fix output from tsc --- .eslintrc.js | 2 +- tsconfig-eslint.json | 15 +++++++++++++++ tsconfig.json | 4 ++-- 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 tsconfig-eslint.json diff --git a/.eslintrc.js b/.eslintrc.js index 81fcc17d..62ee54b4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -11,7 +11,7 @@ module.exports = { "plugin:@typescript-eslint/recommended", ], parserOptions: { - project: ["./tsconfig.json"], + project: ["./tsconfig-eslint.json"], }, rules: { "@typescript-eslint/no-explicit-any": 0, diff --git a/tsconfig-eslint.json b/tsconfig-eslint.json new file mode 100644 index 00000000..43464774 --- /dev/null +++ b/tsconfig-eslint.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "module": "CommonJS" /* Specify what module code is generated. */, + "sourceMap": true /* Create source map files for emitted JavaScript files. */, + "removeComments": true /* Disable emitting comments. */, + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + "strict": true /* Enable all strict type-checking options. */, + "skipLibCheck": true /* Skip type checking all .d.ts files. */, + "declaration": true + }, + "include": ["src", "tests", ".eslintrc.js"], + "exclude": ["out"] +} diff --git a/tsconfig.json b/tsconfig.json index ad4020a8..ef3a64ea 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, "module": "CommonJS" /* Specify what module code is generated. */, "sourceMap": true /* Create source map files for emitted JavaScript files. */, + "rootDir": "./src", "outDir": "./out" /* Specify an output folder for all emitted files. */, "removeComments": true /* Disable emitting comments. */, "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, @@ -11,6 +12,5 @@ "skipLibCheck": true /* Skip type checking all .d.ts files. */, "declaration": true }, - "include": ["src", "tests", ".eslintrc.js"], - "exclude": ["out"] + "exclude": ["tests", "out"] } From f8fdd2cc9c864fcbb656b0a2074bb9057c0f0903 Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Sat, 1 Apr 2023 15:40:04 +0200 Subject: [PATCH 120/414] added init and close function as well as a utility function --- package-lock.json | 6 ------ src/index.ts | 24 +++++++++++------------- src/interfaces/IDisconnectable.ts | 5 +++++ src/interfaces/IRemoteDriver.ts | 7 +++---- src/utilities.ts | 10 ++++++++++ tests/integration/driver.test.ts | 10 +++------- 6 files changed, 32 insertions(+), 30 deletions(-) create mode 100644 src/interfaces/IDisconnectable.ts create mode 100644 src/utilities.ts diff --git a/package-lock.json b/package-lock.json index 70c657f6..6cf9a4f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2557,7 +2557,6 @@ "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" -<<<<<<< Updated upstream }, "node_modules/@types/pg": { "version": "8.6.6", @@ -2569,8 +2568,6 @@ "pg-protocol": "*", "pg-types": "^2.2.0" } -======= ->>>>>>> Stashed changes }, "node_modules/@types/prettier": { "version": "2.7.2", @@ -9447,7 +9444,6 @@ "version": "18.15.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz", "integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==" -<<<<<<< Updated upstream }, "@types/pg": { "version": "8.6.6", @@ -9459,8 +9455,6 @@ "pg-protocol": "*", "pg-types": "^2.2.0" } -======= ->>>>>>> Stashed changes }, "@types/prettier": { "version": "2.7.2", diff --git a/src/index.ts b/src/index.ts index 1a311199..1da83814 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,7 @@ import { set, get, unset } from "lodash"; import { IDriver } from "./interfaces/IDriver"; import { SqliteDriver } from "./drivers/SqliteDriver"; +import { isConnectable, isDisconnectable } from "./utilities"; export { IDriver } from "./interfaces/IDriver"; export { IRemoteDriver } from "./interfaces/IRemoteDriver"; @@ -13,7 +14,6 @@ export interface IQuickDBOptions { export class QuickDB { private static instance: QuickDB; - private prepared!: Promise; private _driver: IDriver; private tableName: string; private normalKeys: boolean; @@ -33,8 +33,6 @@ export class QuickDB { this._driver = options.driver; this.tableName = options.table; this.normalKeys = options.normalKeys; - - this.prepared = this.driver.prepare(this.tableName); } private async addSubtract( @@ -92,8 +90,16 @@ export class QuickDB { } async init(): Promise { - // TODO: change this to remove prepared and call prepare here instead - await this.prepared; + if (isConnectable(this.driver)) { + await this.driver.connect(); + } + await this.driver.prepare(this.tableName); + } + + async close(): Promise { + if (isDisconnectable(this.driver)) { + await this.driver.disconnect(); + } } async all(): Promise<{ id: string; value: T }[]> { @@ -289,14 +295,6 @@ export class QuickDB { return new QuickDB(options); } - // Here for temporary backwards compatibility fix - async tableAsync(table: string): Promise { - const db = this.table(table); - await db.prepared; - - return db; - } - useNormalKeys(activate: boolean): void { this.normalKeys = activate; } diff --git a/src/interfaces/IDisconnectable.ts b/src/interfaces/IDisconnectable.ts new file mode 100644 index 00000000..a6470a53 --- /dev/null +++ b/src/interfaces/IDisconnectable.ts @@ -0,0 +1,5 @@ +import { IDriver } from "./IDriver"; + +export interface IDisconnectable extends IDriver { + disconnect(): Promise; +} \ No newline at end of file diff --git a/src/interfaces/IRemoteDriver.ts b/src/interfaces/IRemoteDriver.ts index ad1e7fac..485cc8a9 100644 --- a/src/interfaces/IRemoteDriver.ts +++ b/src/interfaces/IRemoteDriver.ts @@ -1,6 +1,5 @@ -import { IDriver } from "./IDriver"; +import { IDisconnectable } from "./IDisconnectable"; -export interface IRemoteDriver extends IDriver { +export interface IRemoteDriver extends IDisconnectable { connect(): Promise; - disconnect(): Promise; -} +} \ No newline at end of file diff --git a/src/utilities.ts b/src/utilities.ts new file mode 100644 index 00000000..3b6bfe6d --- /dev/null +++ b/src/utilities.ts @@ -0,0 +1,10 @@ +import { IRemoteDriver } from "./interfaces/IRemoteDriver"; +import { IDisconnectable } from "./interfaces/IDisconnectable" + +export function isConnectable(object: any): object is IRemoteDriver { + return "connect" in object; +} + +export function isDisconnectable(object: any): object is IDisconnectable { + return "disconnect" in object; +} \ No newline at end of file diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts index 154c6ff6..67adbd6a 100644 --- a/tests/integration/driver.test.ts +++ b/tests/integration/driver.test.ts @@ -4,7 +4,7 @@ import { PostgresDriver } from "../../src/drivers/PostgresDriver"; import { JSONDriver } from "../../src/drivers/JSONDriver"; import { SqliteDriver } from "../../src/drivers/SqliteDriver"; import { MemoryDriver } from "../../src/drivers/MemoryDriver"; -import { IRemoteDriver } from "../../src/interfaces/IRemoteDriver"; +import { isConnectable, isDisconnectable } from "../../src/utilities" import * as dotenv from "dotenv"; import { resolve } from "path"; import fs from "fs"; @@ -39,10 +39,6 @@ const drivers = [ new MemoryDriver(), ]; -function isRemoteDriver(object: any): object is IRemoteDriver { - return "connect" in object; -} - function sleep(time: number): Promise { return new Promise((resolve) => setTimeout(resolve, time)); } @@ -65,7 +61,7 @@ describe("drivers integration tests", () => { const start = new Date().getTime(); let now = new Date().getTime(); let status = false; - if (!isRemoteDriver(driver)) { + if (!isConnectable(driver)) { await (driver as IDriver).prepare( process.env.MYSQL_DATABASE! ); @@ -184,7 +180,7 @@ describe("drivers integration tests", () => { test.each(driversWithNames)( "connects to database using %s", async (_, driver) => { - if (!isRemoteDriver(driver)) return true; + if (!isDisconnectable(driver)) return true; return await driver.disconnect(); } From 075d877770054146fceabff641fbac81debf41b4 Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Sat, 1 Apr 2023 15:40:52 +0200 Subject: [PATCH 121/414] forgot to run prettier --- src/interfaces/IDisconnectable.ts | 2 +- src/interfaces/IRemoteDriver.ts | 2 +- src/utilities.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/interfaces/IDisconnectable.ts b/src/interfaces/IDisconnectable.ts index a6470a53..64d3d20e 100644 --- a/src/interfaces/IDisconnectable.ts +++ b/src/interfaces/IDisconnectable.ts @@ -2,4 +2,4 @@ import { IDriver } from "./IDriver"; export interface IDisconnectable extends IDriver { disconnect(): Promise; -} \ No newline at end of file +} diff --git a/src/interfaces/IRemoteDriver.ts b/src/interfaces/IRemoteDriver.ts index 485cc8a9..90fa22da 100644 --- a/src/interfaces/IRemoteDriver.ts +++ b/src/interfaces/IRemoteDriver.ts @@ -2,4 +2,4 @@ import { IDisconnectable } from "./IDisconnectable"; export interface IRemoteDriver extends IDisconnectable { connect(): Promise; -} \ No newline at end of file +} diff --git a/src/utilities.ts b/src/utilities.ts index 3b6bfe6d..3241fc5e 100644 --- a/src/utilities.ts +++ b/src/utilities.ts @@ -1,5 +1,5 @@ import { IRemoteDriver } from "./interfaces/IRemoteDriver"; -import { IDisconnectable } from "./interfaces/IDisconnectable" +import { IDisconnectable } from "./interfaces/IDisconnectable"; export function isConnectable(object: any): object is IRemoteDriver { return "connect" in object; @@ -7,4 +7,4 @@ export function isConnectable(object: any): object is IRemoteDriver { export function isDisconnectable(object: any): object is IDisconnectable { return "disconnect" in object; -} \ No newline at end of file +} From 67ab98da0eed889718af2143e93de0feb9dcd37d Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sat, 1 Apr 2023 13:43:45 -0400 Subject: [PATCH 122/414] Adding auto assign for pull requests --- .github/auto_assign.yml | 8 ++++++++ .github/workflows/auto_assign.yml | 12 ++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 .github/auto_assign.yml create mode 100644 .github/workflows/auto_assign.yml diff --git a/.github/auto_assign.yml b/.github/auto_assign.yml new file mode 100644 index 00000000..4d973629 --- /dev/null +++ b/.github/auto_assign.yml @@ -0,0 +1,8 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - Zelak312 + +numberOfReviewers: 0 diff --git a/.github/workflows/auto_assign.yml b/.github/workflows/auto_assign.yml new file mode 100644 index 00000000..938d8793 --- /dev/null +++ b/.github/workflows/auto_assign.yml @@ -0,0 +1,12 @@ +name: "PR Triage" +on: + pull_request: + branches: ["dev"] + types: [opened, ready_for_review] +jobs: + auto-assign: + name: auto-assign + runs-on: ubuntu-latest + steps: + - name: Automatically assign reviewers + uses: kentaro-m/auto-assign-action@v1.2.5 From e12de4e3c4bdb8f10c840e829d4cb8aa05d2fdef Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 1 Apr 2023 10:53:46 -0700 Subject: [PATCH 123/414] Rename auto assign --- .github/workflows/auto_assign.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto_assign.yml b/.github/workflows/auto_assign.yml index 938d8793..be4d4933 100644 --- a/.github/workflows/auto_assign.yml +++ b/.github/workflows/auto_assign.yml @@ -1,4 +1,4 @@ -name: "PR Triage" +name: "auto assign" on: pull_request: branches: ["dev"] From 23cd473169be42ee770a2106561e3da9174d2cc7 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sat, 1 Apr 2023 14:18:25 -0400 Subject: [PATCH 124/414] Fixed deprecation warning + removed restart always --- docker-compose.yml | 3 --- tests/integration/driver.test.ts | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b5d6b632..2d567633 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,6 @@ services: mysql: image: mysql container_name: mysql - restart: always ports: - "${MYSQL_PORT}:${MYSQL_PORT}" networks: @@ -16,7 +15,6 @@ services: mongo: image: mongo container_name: mongo - restart: always ports: - "${MONGO_PORT}:${MONGO_PORT}" networks: @@ -28,7 +26,6 @@ services: pg: image: postgres container_name: pg - restart: always ports: - "${POSTGRESS_PORT}:${POSTGRESS_PORT}" networks: diff --git a/tests/integration/driver.test.ts b/tests/integration/driver.test.ts index 154c6ff6..2d9d0ee5 100644 --- a/tests/integration/driver.test.ts +++ b/tests/integration/driver.test.ts @@ -54,7 +54,7 @@ const driversWithNames = drivers.map((driver) => [ describe("drivers integration tests", () => { afterAll(async () => { if (fs.existsSync("./integration-database")) { - fs.rmdirSync("./integration-database", { recursive: true }); + fs.rmSync("./integration-database", { recursive: true }); } }); From ddb3bb6effce0f0f648c42fc5711d5354de05a9c Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Sat, 1 Apr 2023 21:27:31 +0200 Subject: [PATCH 125/414] Added custom error class for future tests --- src/error.ts | 21 +++++++ src/index.ts | 167 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 150 insertions(+), 38 deletions(-) create mode 100644 src/error.ts diff --git a/src/error.ts b/src/error.ts new file mode 100644 index 00000000..5b68232f --- /dev/null +++ b/src/error.ts @@ -0,0 +1,21 @@ +export enum ErrorKind { + MissingKey = "MISSING_KEY", + MissingValue = "MISSING_VALUE", + MissingDriver = "MISSING_DRIVER", + ParseException = "PARSE_EXCEPTION", + InvalidType = "INVALID_TYPE", +} + +export class CustomError extends Error { + public message: string; + public kind: ErrorKind; + + public constructor(message: string, kind: ErrorKind) { + super(); + Error.captureStackTrace(this, this.constructor); + + this.message = message; + this.kind = kind; + this.name = kind; + } +} diff --git a/src/index.ts b/src/index.ts index 1da83814..86d9326a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ import { set, get, unset } from "lodash"; import { IDriver } from "./interfaces/IDriver"; import { SqliteDriver } from "./drivers/SqliteDriver"; import { isConnectable, isDisconnectable } from "./utilities"; +import { CustomError as QuickError, ErrorKind } from "./error"; export { IDriver } from "./interfaces/IDriver"; export { IRemoteDriver } from "./interfaces/IRemoteDriver"; @@ -40,10 +41,19 @@ export class QuickDB { value: number, sub = false ): Promise { - if (typeof key != "string") - throw new Error("First argument (key) needs to be a string"); + if (typeof key != "string") { + throw new QuickError( + `First argument (key) needs to be a string received "${typeof key}"`, + ErrorKind.InvalidType + ); + } - if (value == null) throw new Error("Missing second argument (value)"); + if (value == null) { + throw new QuickError( + "Missing second argument (value)", + ErrorKind.MissingValue + ); + } let currentNumber = await this.get(key); @@ -52,8 +62,9 @@ export class QuickDB { try { currentNumber = parseFloat(currentNumber as string); } catch (_) { - throw new Error( - `Current value with key: (${key}) is not a number and couldn't be parsed to a number` + throw new QuickError( + `Current value with key: (${key}) is not a number and couldn't be parsed to a number`, + ErrorKind.InvalidType ); } } @@ -62,8 +73,9 @@ export class QuickDB { try { value = parseFloat(value as string); } catch (_) { - throw new Error( - `Value to add/subtract with key: (${key}) is not a number and couldn't be parsed to a number` + throw new QuickError( + `Value to add/subtract with key: (${key}) is not a number and couldn't be parsed to a number`, + ErrorKind.InvalidType ); } } @@ -76,16 +88,29 @@ export class QuickDB { private async getArray(key: string): Promise { const currentArr = (await this.get(key)) ?? []; - if (!Array.isArray(currentArr)) - throw new Error(`Current value with key: (${key}) is not an array`); + if (!Array.isArray(currentArr)) { + throw new QuickError( + `Current value with key: (${key}) is not an array`, + ErrorKind.InvalidType + ); + } return currentArr; } static createSingleton(options: IQuickDBOptions = {}): QuickDB { - if (!this.instance && !options.driver) - throw Error("No instance and driver provided"); - if (!this.instance) this.instance = new QuickDB(options); + if (!this.instance && !options.driver) { + throw new QuickError("No driver provided", ErrorKind.MissingDriver); + } + + if (!this.instance) { + this.instance = new QuickDB(options); + } + + return this.instance; + } + + static getSingletion(): QuickDB { return this.instance; } @@ -107,8 +132,12 @@ export class QuickDB { } async get(key: string): Promise { - if (typeof key != "string") - throw new Error("First argument (key) needs to be a string"); + if (typeof key != "string") { + throw new QuickError( + "First argument (key) needs to be a string", + ErrorKind.InvalidType + ); + } if (key.includes(".") && !this.normalKeys) { const keySplit = key.split("."); @@ -124,9 +153,19 @@ export class QuickDB { } async set(key: string, value: T): Promise { - if (typeof key != "string") - throw new Error("First argument (key) needs to be a string"); - if (value == null) throw new Error("Missing second argument (value)"); + if (typeof key != "string") { + throw new QuickError( + "First argument (key) needs to be a string", + ErrorKind.InvalidType + ); + } + + if (value == null) { + throw new QuickError( + "Missing second argument (value)", + ErrorKind.MissingValue + ); + } if (key.includes(".") && !this.normalKeys) { const keySplit = key.split("."); @@ -164,8 +203,12 @@ export class QuickDB { } async delete(key: string): Promise { - if (typeof key != "string") - throw new Error("First argument (key) needs to be a string"); + if (typeof key != "string") { + throw new QuickError( + "First argument (key) needs to be a string", + ErrorKind.InvalidType + ); + } if (key.includes(".")) { const keySplit = key.split("."); @@ -190,9 +233,19 @@ export class QuickDB { } async push(key: string, value: T): Promise { - if (typeof key != "string") - throw new Error("First argument (key) needs to be a string"); - if (value == null) throw new Error("Missing second argument (value)"); + if (typeof key != "string") { + throw new QuickError( + "First argument (key) needs to be a string", + ErrorKind.InvalidType + ); + } + + if (value == null) { + throw new QuickError( + "Missing second argument (value)", + ErrorKind.MissingValue + ); + } const currentArr = await this.getArray(key); currentArr.push(value); @@ -201,9 +254,18 @@ export class QuickDB { } async unshift(key: string, value: T | T[]): Promise { - if (typeof key != "string") - throw new Error("First argument (key) needs to be a string"); - if (value == null) throw new Error("Missing second argument (value)"); + if (typeof key != "string") { + throw new QuickError( + "First argument (key) needs to be a string", + ErrorKind.InvalidType + ); + } + if (value == null) { + throw new QuickError( + "Missing second argument (value)", + ErrorKind.InvalidType + ); + } let currentArr = await this.getArray(key); if (Array.isArray(value)) currentArr = value.concat(currentArr); @@ -213,8 +275,12 @@ export class QuickDB { } async pop(key: string): Promise { - if (typeof key != "string") - throw new Error("First argument (key) needs to be a string"); + if (typeof key != "string") { + throw new QuickError( + "First argument (key) needs to be a string", + ErrorKind.InvalidType + ); + } const currentArr = await this.getArray(key); const value = currentArr.pop(); @@ -225,8 +291,12 @@ export class QuickDB { } async shift(key: string): Promise { - if (typeof key != "string") - throw new Error("First argument (key) needs to be a string"); + if (typeof key != "string") { + throw new QuickError( + "First argument (key) needs to be a string", + ErrorKind.InvalidType + ); + } const currentArr = await this.getArray(key); const value = currentArr.shift(); @@ -241,9 +311,18 @@ export class QuickDB { value: T | T[] | ((data: T, index: string) => boolean), once = false ): Promise { - if (typeof key != "string") - throw new Error("First argument (key) needs to be a string"); - if (value == null) throw new Error("Missing second argument (value)"); + if (typeof key != "string") { + throw new QuickError( + "First argument (key) needs to be a string", + ErrorKind.InvalidType + ); + } + if (value == null) { + throw new QuickError( + "Missing second argument (value)", + ErrorKind.MissingValue + ); + } const currentArr = await this.getArray(key); if (!Array.isArray(value) && typeof value != "function") @@ -268,10 +347,18 @@ export class QuickDB { query: string, key = "" ): Promise<{ id: string; value: T }[]> { - if (typeof query != "string") - throw new Error("First argument (query) needs to be a string"); - if (typeof key != "string") - throw new Error("Second argument (key) needs to be a string"); + if (typeof query != "string") { + throw new QuickError( + "First argument (query) needs to be a string", + ErrorKind.InvalidType + ); + } + if (typeof key != "string") { + throw new QuickError( + "Second argument (key) needs to be a string", + ErrorKind.InvalidType + ); + } // Get either the whole db or the rows from the provided key // -> Filter the result if the id starts with the provided query @@ -285,8 +372,12 @@ export class QuickDB { } table(table: string): QuickDB { - if (typeof table != "string") - throw new Error("First argument (table) needs to be a string"); + if (typeof table != "string") { + throw new QuickError( + "First argument (table) needs to be a string", + ErrorKind.InvalidType + ); + } const options = { ...this.options }; From 56aa67ed8477713efafef207bc5b64bf1c95484c Mon Sep 17 00:00:00 2001 From: Zelak Date: Sat, 1 Apr 2023 13:28:11 -0700 Subject: [PATCH 126/414] Update auto_assign.yml --- .github/workflows/auto_assign.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto_assign.yml b/.github/workflows/auto_assign.yml index be4d4933..fc4711c2 100644 --- a/.github/workflows/auto_assign.yml +++ b/.github/workflows/auto_assign.yml @@ -1,6 +1,6 @@ name: "auto assign" on: - pull_request: + pull_request_target: branches: ["dev"] types: [opened, ready_for_review] jobs: From 41fb8dc674d3bb93b1ae1ccf31716ae1de798546 Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Sat, 1 Apr 2023 22:40:12 +0200 Subject: [PATCH 127/414] fixed unit tests? --- tests/unit/add.test.ts | 1 + tests/unit/delete.test.ts | 2 ++ tests/unit/pop.test.ts | 1 + tests/unit/pull.test.ts | 2 ++ tests/unit/push.test.ts | 1 + tests/unit/set.test.ts | 1 + tests/unit/shift.test.ts | 1 + tests/unit/startsWith.test.ts | 1 + tests/unit/sub.test.ts | 1 + tests/unit/unshift.test.ts | 1 + 10 files changed, 12 insertions(+) diff --git a/tests/unit/add.test.ts b/tests/unit/add.test.ts index 617367d8..d56b1640 100644 --- a/tests/unit/add.test.ts +++ b/tests/unit/add.test.ts @@ -6,6 +6,7 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); describe("add", () => { afterEach(async () => { diff --git a/tests/unit/delete.test.ts b/tests/unit/delete.test.ts index 00cd7f91..fd258609 100644 --- a/tests/unit/delete.test.ts +++ b/tests/unit/delete.test.ts @@ -6,6 +6,8 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); + describe("delete", () => { afterEach(async () => { diff --git a/tests/unit/pop.test.ts b/tests/unit/pop.test.ts index 531750eb..fec14895 100644 --- a/tests/unit/pop.test.ts +++ b/tests/unit/pop.test.ts @@ -6,6 +6,7 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); describe("pop", () => { afterEach(async () => { diff --git a/tests/unit/pull.test.ts b/tests/unit/pull.test.ts index 9c13777c..8da72f36 100644 --- a/tests/unit/pull.test.ts +++ b/tests/unit/pull.test.ts @@ -6,6 +6,8 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); + describe("pull", () => { afterEach(async () => { diff --git a/tests/unit/push.test.ts b/tests/unit/push.test.ts index a792de55..5268548c 100644 --- a/tests/unit/push.test.ts +++ b/tests/unit/push.test.ts @@ -6,6 +6,7 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); describe("push", () => { afterEach(async () => { diff --git a/tests/unit/set.test.ts b/tests/unit/set.test.ts index b8f1eea8..198a4070 100644 --- a/tests/unit/set.test.ts +++ b/tests/unit/set.test.ts @@ -6,6 +6,7 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); describe("set", () => { afterEach(async () => { diff --git a/tests/unit/shift.test.ts b/tests/unit/shift.test.ts index 038f2f7f..eb1d4d49 100644 --- a/tests/unit/shift.test.ts +++ b/tests/unit/shift.test.ts @@ -6,6 +6,7 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); describe("shift", () => { afterEach(async () => { diff --git a/tests/unit/startsWith.test.ts b/tests/unit/startsWith.test.ts index d56f4bb1..27775a7d 100644 --- a/tests/unit/startsWith.test.ts +++ b/tests/unit/startsWith.test.ts @@ -6,6 +6,7 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); describe("startsWith", () => { afterEach(async () => { diff --git a/tests/unit/sub.test.ts b/tests/unit/sub.test.ts index ab1f4f73..f5ed26f5 100644 --- a/tests/unit/sub.test.ts +++ b/tests/unit/sub.test.ts @@ -6,6 +6,7 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); describe("sub", () => { afterEach(async () => { diff --git a/tests/unit/unshift.test.ts b/tests/unit/unshift.test.ts index 03b022ec..fae08150 100644 --- a/tests/unit/unshift.test.ts +++ b/tests/unit/unshift.test.ts @@ -6,6 +6,7 @@ import { SqliteDriverMock } from "../mocks/SqliteDriver"; const db = new QuickDB({ driver: new SqliteDriverMock("test.sqlite"), }); +db.init(); describe("unshift", () => { afterEach(async () => { From 415a27a4e920922bda424e8b11f351ba4bc9b760 Mon Sep 17 00:00:00 2001 From: StasiumDev <41346624+StasiumDev@users.noreply.github.com> Date: Sat, 1 Apr 2023 23:04:19 +0200 Subject: [PATCH 128/414] made error messages more consistent --- src/index.ts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/index.ts b/src/index.ts index 86d9326a..0a33d4e9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -134,7 +134,7 @@ export class QuickDB { async get(key: string): Promise { if (typeof key != "string") { throw new QuickError( - "First argument (key) needs to be a string", + `First argument (key) needs to be a string received "${typeof key}"`, ErrorKind.InvalidType ); } @@ -155,7 +155,7 @@ export class QuickDB { async set(key: string, value: T): Promise { if (typeof key != "string") { throw new QuickError( - "First argument (key) needs to be a string", + `First argument (key) needs to be a string received "${typeof key}"`, ErrorKind.InvalidType ); } @@ -205,7 +205,7 @@ export class QuickDB { async delete(key: string): Promise { if (typeof key != "string") { throw new QuickError( - "First argument (key) needs to be a string", + `First argument (key) needs to be a string received "${typeof key}"`, ErrorKind.InvalidType ); } @@ -235,7 +235,7 @@ export class QuickDB { async push(key: string, value: T): Promise { if (typeof key != "string") { throw new QuickError( - "First argument (key) needs to be a string", + `First argument (key) needs to be a string received "${typeof key}"`, ErrorKind.InvalidType ); } @@ -256,7 +256,7 @@ export class QuickDB { async unshift(key: string, value: T | T[]): Promise { if (typeof key != "string") { throw new QuickError( - "First argument (key) needs to be a string", + `First argument (key) needs to be a string received "${typeof key}"`, ErrorKind.InvalidType ); } @@ -277,7 +277,7 @@ export class QuickDB { async pop(key: string): Promise { if (typeof key != "string") { throw new QuickError( - "First argument (key) needs to be a string", + `First argument (key) needs to be a string received "${typeof key}"`, ErrorKind.InvalidType ); } @@ -293,7 +293,7 @@ export class QuickDB { async shift(key: string): Promise { if (typeof key != "string") { throw new QuickError( - "First argument (key) needs to be a string", + `First argument (key) needs to be a string received "${typeof key}"`, ErrorKind.InvalidType ); } @@ -313,7 +313,7 @@ export class QuickDB { ): Promise { if (typeof key != "string") { throw new QuickError( - "First argument (key) needs to be a string", + `First argument (key) needs to be a string received "${typeof key}"`, ErrorKind.InvalidType ); } @@ -349,13 +349,13 @@ export class QuickDB { ): Promise<{ id: string; value: T }[]> { if (typeof query != "string") { throw new QuickError( - "First argument (query) needs to be a string", + `First argument (query) needs to be a string received "${typeof query}"`, ErrorKind.InvalidType ); } if (typeof key != "string") { throw new QuickError( - "Second argument (key) needs to be a string", + `Second argument (key) needs to be a string received "${typeof key}"`, ErrorKind.InvalidType ); } @@ -374,7 +374,7 @@ export class QuickDB { table(table: string): QuickDB { if (typeof table != "string") { throw new QuickError( - "First argument (table) needs to be a string", + `First argument (table) needs to be a string received "${typeof table}"`, ErrorKind.InvalidType ); } From 23a985360e0585a0f1ac8e82d9329feb47a20dc6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Apr 2023 18:29:36 +0000 Subject: [PATCH 129/414] Update dependency ts-jest to v29.1.0 --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6cf9a4f5..2e6282c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6972,9 +6972,9 @@ } }, "node_modules/ts-jest": { - "version": "29.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", - "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -6997,7 +6997,7 @@ "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", - "typescript": ">=4.3" + "typescript": ">=4.3 <6" }, "peerDependenciesMeta": { "@babel/core": { @@ -12673,9 +12673,9 @@ } }, "ts-jest": { - "version": "29.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", - "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", "dev": true, "requires": { "bs-logger": "0.x", From 55e5f82d806d4dd64169c5e3c2eddf75f6feae72 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 5 Apr 2023 13:39:56 -0400 Subject: [PATCH 130/414] feat: change createSingle to setSingleton --- src/index.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/index.ts b/src/index.ts index 0a33d4e9..e9cabc73 100644 --- a/src/index.ts +++ b/src/index.ts @@ -98,15 +98,8 @@ export class QuickDB { return currentArr; } - static createSingleton(options: IQuickDBOptions = {}): QuickDB { - if (!this.instance && !options.driver) { - throw new QuickError("No driver provided", ErrorKind.MissingDriver); - } - - if (!this.instance) { - this.instance = new QuickDB(options); - } - + static setSingleton(options: IQuickDBOptions = {}): QuickDB { + this.instance = new QuickDB(options); return this.instance; } From ced8e9ace8a36edf676cb0c039242f054238fdc0 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 5 Apr 2023 13:54:51 -0400 Subject: [PATCH 131/414] Fix: table method --- src/index.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index e9cabc73..52eb35f4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -364,7 +364,7 @@ export class QuickDB { ).filter((v) => v.id.startsWith(query)); } - table(table: string): QuickDB { + async table(table: string): Promise> { if (typeof table != "string") { throw new QuickError( `First argument (table) needs to be a string received "${typeof table}"`, @@ -373,10 +373,12 @@ export class QuickDB { } const options = { ...this.options }; - options.table = table; options.driver = this.driver; - return new QuickDB(options); + const instance = new QuickDB(options); + await instance.init(); + + return instance; } useNormalKeys(activate: boolean): void { From 59391b94992e5067e0e6f793f61d597315c66a50 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Wed, 5 Apr 2023 14:28:54 -0400 Subject: [PATCH 132/414] docs: added index tsdocs --- src/index.ts | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 248 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 52eb35f4..ce6dbb2c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,20 +6,63 @@ import { CustomError as QuickError, ErrorKind } from "./error"; export { IDriver } from "./interfaces/IDriver"; export { IRemoteDriver } from "./interfaces/IRemoteDriver"; + +/** + * Options for the QuickDB class + */ export interface IQuickDBOptions { + /** + * The table name to use + * @default json + */ table?: string; + + /** + * The file path to use + * @default json.sqlite + */ filePath?: string; + + /** + * The driver to use + * @default SqliteDriver + **/ driver?: IDriver; + + /** + * If the keys should be treated as normal keys + * @default false + **/ normalKeys?: boolean; } +/** + * The main class for QuickDB + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); // Always needed!!! + * await db.set("test", "Hello World"); + * console.log(await db.get("test")); + * ``` + */ export class QuickDB { - private static instance: QuickDB; + private static instance?: QuickDB; private _driver: IDriver; private tableName: string; private normalKeys: boolean; private options: IQuickDBOptions; + /** + * The driver used by QuickDB + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * console.log(db.driver); + * ``` + * @readonly + **/ get driver(): IDriver { return this._driver; } @@ -98,15 +141,41 @@ export class QuickDB { return currentArr; } + /** + * Set a singleton instance of QuickDB + * @example + * ```ts + * const db = QuickDB.getSingletion(); + * await db.init(); + * ``` + **/ static setSingleton(options: IQuickDBOptions = {}): QuickDB { this.instance = new QuickDB(options); return this.instance; } - static getSingletion(): QuickDB { + /** + * Get the singleton instance of QuickDB + * @example + * ```ts + * // If you have set a singleton instance + * // Otherwise it will return undefined + * const db = QuickDB.getSingletion(); + * await db.init(); + * ``` + **/ + static getSingletion(): QuickDB | undefined { return this.instance; } + /** + * Initialize the database + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * ``` + **/ async init(): Promise { if (isConnectable(this.driver)) { await this.driver.connect(); @@ -114,16 +183,45 @@ export class QuickDB { await this.driver.prepare(this.tableName); } + /** + * Closes the connection to the database + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.close(); + * ``` + **/ async close(): Promise { if (isDisconnectable(this.driver)) { await this.driver.disconnect(); } } + /** + * Return all the elements in the database + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", "Hello World"); + * console.log(await db.all()); + * ``` + **/ async all(): Promise<{ id: string; value: T }[]> { return this.driver.getAllRows(this.tableName); } + /** + * Get a value from the database + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", "Hello World"); + * console.log(await db.get("test")); + * ``` + **/ async get(key: string): Promise { if (typeof key != "string") { throw new QuickError( @@ -145,6 +243,15 @@ export class QuickDB { return result; } + /** + * Set a value in the database + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", "Hello World"); + * ``` + **/ async set(key: string, value: T): Promise { if (typeof key != "string") { throw new QuickError( @@ -191,10 +298,30 @@ export class QuickDB { return this.driver.setRowByKey(this.tableName, key, value, exist); } + /** + * Check if a key exists in the database + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", "Hello World"); + * console.log(await db.has("test")); + * ``` + **/ async has(key: string): Promise { return (await this.get(key)) != null; } + /** + * Delete a key from the database + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", "Hello World"); + * await db.delete("test"); + * ``` + **/ async delete(key: string): Promise { if (typeof key != "string") { throw new QuickError( @@ -213,18 +340,61 @@ export class QuickDB { return this.driver.deleteRowByKey(this.tableName, key); } + /** + * Delete all the keys from the database + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", "Hello World"); + * await db.deleteAll(); + * ``` + **/ async deleteAll(): Promise { return this.driver.deleteAllRows(this.tableName); } + /** + * Add a number to a key + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", 10); + * await db.add("test", 5); + * console.log(await db.get("test")); + * ``` + **/ async add(key: string, value: number): Promise { return this.addSubtract(key, value); } + /** + * Subtract a number from a key + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", 10); + * await db.sub("test", 5); + * console.log(await db.get("test")); + * ``` + **/ async sub(key: string, value: number): Promise { return this.addSubtract(key, value, true); } + /** + * Push a value to an array + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", []); + * await db.push("test", "Hello World"); + * console.log(await db.get("test")); + * ``` + **/ async push(key: string, value: T): Promise { if (typeof key != "string") { throw new QuickError( @@ -246,6 +416,17 @@ export class QuickDB { return this.set(key, currentArr); } + /** + * Unshift a value from an array + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", []); + * await db.unshift("test", "Hello World"); + * console.log(await db.get("test")); + * ``` + **/ async unshift(key: string, value: T | T[]): Promise { if (typeof key != "string") { throw new QuickError( @@ -267,6 +448,16 @@ export class QuickDB { return this.set(key, currentArr); } + /** + * Pop a value from an array + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", ["Hello World"]); + * console.log(await db.pop("test")); + * ``` + **/ async pop(key: string): Promise { if (typeof key != "string") { throw new QuickError( @@ -283,6 +474,16 @@ export class QuickDB { return value; } + /** + * Shift a value from an array + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", ["Hello World"]); + * console.log(await db.shift("test")); + * ``` + **/ async shift(key: string): Promise { if (typeof key != "string") { throw new QuickError( @@ -299,6 +500,16 @@ export class QuickDB { return value; } + /** + * Pull a value from an array + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", ["Hello World"]); + * console.log(await db.pull("test", "Hello World")); + * ``` + **/ async pull( key: string, value: T | T[] | ((data: T, index: string) => boolean), @@ -336,6 +547,17 @@ export class QuickDB { return this.set(key, data); } + /** + * Get all keys that start with the string + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test", "Hello World"); + * await db.set("test2", "Hello World"); + * console.log(await db.startsWith("test")); + * ``` + **/ async startsWith( query: string, key = "" @@ -364,6 +586,17 @@ export class QuickDB { ).filter((v) => v.id.startsWith(query)); } + /** + * Change the table + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * const table = await db.table("test"); + * await table.set("test", "Hello World"); + * console.log(await table.get("test")); + * ``` + **/ async table(table: string): Promise> { if (typeof table != "string") { throw new QuickError( @@ -381,6 +614,19 @@ export class QuickDB { return instance; } + /** + * Use normal keys + * @example + * ```ts + * const db = new QuickDB(); + * await db.init(); + * await db.set("test.nice", "Hello World"); + * console.log(await db.get("test")); + * await db.useNormalKeys(true); + * await db.set("test.nice", "Hello World"); + * console.log(await db.get("test")); + * ``` + **/ useNormalKeys(activate: boolean): void { this.normalKeys = activate; } From 48eb4ad24e5ed8890b08dcfbcce67ca7608d8f83 Mon Sep 17 00:00:00 2001 From: DarkenLM Date: Fri, 7 Apr 2023 17:25:00 +0100 Subject: [PATCH 133/414] feat(pipeline): added pipelines; Added Crypt pipeline; Added Pipeliner Added pipeline structure. --- src/index.ts | 11 ++ src/interfaces/pipeline/IPipeline.ts | 13 ++ src/interfaces/pipeline/crypto/crypt.ts | 203 ++++++++++++++++++++++++ src/interfaces/pipeline/pipeliner.ts | 52 ++++++ 4 files changed, 279 insertions(+) create mode 100644 src/interfaces/pipeline/IPipeline.ts create mode 100644 src/interfaces/pipeline/crypto/crypt.ts create mode 100644 src/interfaces/pipeline/pipeliner.ts diff --git a/src/index.ts b/src/index.ts index 52eb35f4..e1f43b01 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,17 @@ import { CustomError as QuickError, ErrorKind } from "./error"; export { IDriver } from "./interfaces/IDriver"; export { IRemoteDriver } from "./interfaces/IRemoteDriver"; +export { MongoDriver, CollectionInterface } from "./drivers/MongoDriver"; +export { SqliteDriver } from "./drivers/SqliteDriver"; +export { MySQLDriver, Config } from "./drivers/MySQLDriver"; +export { MemoryDriver, Table } from "./drivers/MemoryDriver"; +export { JSONDriver, DataLike } from "./drivers/JSONDriver"; +export { DriverUnion } from "./drivers/DriverUnion"; + +export { IPipeline } from "./interfaces/pipeline/IPipeline"; +export { PipeLiner } from "./interfaces/pipeline/pipeliner"; +export { CryptPipeline } from "./interfaces/pipeline/crypto/crypt" + export interface IQuickDBOptions { table?: string; filePath?: string; diff --git a/src/interfaces/pipeline/IPipeline.ts b/src/interfaces/pipeline/IPipeline.ts new file mode 100644 index 00000000..f096e627 --- /dev/null +++ b/src/interfaces/pipeline/IPipeline.ts @@ -0,0 +1,13 @@ +export interface IPipeline { + serialize(value: R): Promise; + deserialize(data: E): Promise; +} + +export interface ICachedPipeline extends IPipeline { + getCacheValue(entry: string): R | undefined; + setCacheValue(entry: string, value: R): boolean; +} + +export function isCachedPipeline(pipeline: IPipeline): pipeline is ICachedPipeline { + return ("getCacheValue" in pipeline && "setCacheValue" in pipeline); +} \ No newline at end of file diff --git a/src/interfaces/pipeline/crypto/crypt.ts b/src/interfaces/pipeline/crypto/crypt.ts new file mode 100644 index 00000000..d0d6a561 --- /dev/null +++ b/src/interfaces/pipeline/crypto/crypt.ts @@ -0,0 +1,203 @@ +/* eslint-disable no-console */ +import crypto from "crypto"; +import { IPipeline } from "../IPipeline"; + +/* CONSTANTS */ +const cryptSymbol = "__SYM_QUICKDB_CRYPT__{%encoding%;%payload%}"; +const cryptSymbolVars = ["encoding", "payload"] as const; + +const Encoding = ["ucs2", "ucs-2", "base64", "base64url", "latin1", "hex"] as const; +const StringEncoding = ["ascii", "utf8", "utf-8", "utf16le", "ucs2", "ucs-2", "base64", "base64url", "latin1", "hex", "binary"] as const; + +const algorithmByteSizes = { + "aes-128-cbc": 16, + "aes-192-cbc": 24, + "aes-256-cbc": 32 +} as const; + +/* INTERFACES AND TYPES */ +type cryptSymbolVars = typeof cryptSymbolVars[number]; + +const CryptoAlgorithm = Object.keys(algorithmByteSizes); +type CryptoAlgorithm = keyof typeof algorithmByteSizes + +type Encoding = typeof Encoding[number] +type StringEncoding = typeof StringEncoding[number] + +interface BuiltInCryptOptions { + key: string | Buffer, + algorithm?: CryptoAlgorithm, + encoding?: Encoding, + solveEncoding?: boolean, + // strict?: boolean +} +type CryptOptions = BuiltInCryptOptions +type JointResolvedCryptOptions = Required & { byteSize: number } +type ResolvedCryptOptions = Omit + +// type PipelineOptions = { +// strict: boolean +// } + +type Cryptor = (options: ResolvedCryptOptions, data: string, encoding?: StringEncoding) => Promise + +type Payload = Record; +type PayloadExtractor = ((str: string) => Payload | undefined) +function makePayloadExtractor(template: string): PayloadExtractor { + const varSymLength = 2; + const varRegex = /%((?:[a-zA-Z_])+)%/gm; + const indices: { index: number, length: number, name: K }[] = []; + let result; + + while ((result = varRegex.exec(template))) { + indices.push({ index: result.index, length: result[1].length, name: result[1] as any }); + } + + const parts = []; + let lastInd = 0; + for (const part of indices) { + parts.push(template.substring(lastInd, part.index)); + lastInd = part.index + part.length + varSymLength; + } + + if (lastInd < template.length) parts.push(template.slice(lastInd, template.length)); + + let payloadRegexStr = "^"; + for (let i = 0; i < parts.length - 1; i++) { + payloadRegexStr += parts[i]; + payloadRegexStr += "(.*)"; + } + + payloadRegexStr += parts[parts.length - 1]; + payloadRegexStr += "$"; + + const payloadRegex = new RegExp(payloadRegexStr); + function payloadExtractor(str: string): Payload | undefined { + if (!payloadRegex.test(str)) return undefined; + + const matches = payloadRegex.exec(str) as RegExpExecArray; + const ret: Payload = {} as Payload; + + for (let i = 0; i < indices.length; i++) { + const variable = indices[i]; + const match = matches[i + 1]; + + ret[variable.name] = match; + } + + return ret; + } + + return payloadExtractor; +} + +export class CryptPipeline implements IPipeline { + private options: ResolvedCryptOptions; + // private pipelineOptions: PipelineOptions; + private payloadExtractor: PayloadExtractor; + private encryptor: Cryptor; + private decryptor: Cryptor; + + constructor(options: CryptOptions) { + options.algorithm ??= "aes-128-cbc" as unknown as CryptoAlgorithm; + options.encoding ??= "hex" as unknown as Encoding; + options.solveEncoding ??= true; + // options.strict ??= false; + + const byteSize = algorithmByteSizes[options.algorithm]; + + // Runtime checks for pure JS users + if (!options.key || options.key.length !== byteSize) throw new Error(`Encryption key must have ${byteSize} bytes`); + if (!(CryptoAlgorithm as unknown as string[]).includes(options.algorithm)) throw new Error("Algorithm is not supported"); + if (!(Encoding as unknown as string[]).includes(options.encoding)) throw new Error("Encoding is not supported"); + options.solveEncoding = !!options.solveEncoding; + + + this.options = { + key: options.key, + algorithm: options.algorithm, + encoding: options.encoding, + solveEncoding: options.solveEncoding, + byteSize: byteSize + } + + // this.pipelineOptions = { + // strict: options.strict + // } + + this.payloadExtractor = makePayloadExtractor(cryptSymbol); + + this.encryptor = async function(options, data): Promise { + try { + const iv = crypto.randomBytes(options.byteSize); + const cipher = crypto.createCipheriv(options.algorithm, Buffer.from(options.key), iv); + + // Ensure data is a string + const stringifiedData = (data as unknown) instanceof Object ? JSON.stringify(data) : data; + + return Buffer.concat([ + cipher.update(stringifiedData), + cipher.final(), + iv + ]).toString(options.encoding); + } catch (e: unknown) { + const err = e instanceof Error ? e : new Error(`${e}`); + + throw new Error("Unable to encrypt data: Unknown error", { cause: err }); + } + } + + this.decryptor = async function(options, data, encoding): Promise { + try { + encoding ??= "utf8"; + + const binaryData = Buffer.from(data, options.encoding); + const iv = binaryData.subarray(binaryData.length - options.byteSize, binaryData.length); + const encryptedData = binaryData.subarray(0, binaryData.length - options.byteSize); + + const decipher = crypto.createDecipheriv(options.algorithm, Buffer.from(options.key), iv); + const decrypted = Buffer.concat([ + decipher.update(encryptedData), + decipher.final() + ]); + + return decrypted.toString(encoding); + } catch (e: unknown) { + const err = e instanceof Error ? e : new Error(`${e}`); + if (err.message.includes("error:1C800064:Provider routines::bad decrypt")) throw new Error("Unable to decrypt data: Bad decrypt."); + + throw new Error("Unable to decrypt data: Unknown error", { cause: err }); + } + } + } + + + async serialize(value: string): Promise { + const encryptedData = await this.encryptor(this.options, value); + return cryptSymbol.replace("%encoding%", this.options.encoding).replace("%payload%", encryptedData); + } + + async deserialize(data: string): Promise { + const nData = data.trim().replace(/^"/, "").replace(/"$/, ""); + const payload = this.payloadExtractor(nData); + if (!payload) { + // if (this.pipelineOptions.strict) throw new Error("Entry is not encrypted or was encrypted on an unsupported format.") + return data as R; + } + + const options = { ...this.options }; + if (payload.encoding !== "null") { + if (!this.options.solveEncoding) throw new Error(`Invalid encoding. Expected '${this.options.encoding}', but got '${payload.encoding}'`) + + if (Encoding.includes(payload.encoding as Encoding)) options.encoding = payload.encoding as Encoding; + } + + const decryptedData = await this.decryptor(options, payload.payload, "utf8"); + + try { + return JSON.parse(decryptedData) as R; + } catch (_) { + return decryptedData as R; + } + } +} \ No newline at end of file diff --git a/src/interfaces/pipeline/pipeliner.ts b/src/interfaces/pipeline/pipeliner.ts new file mode 100644 index 00000000..33685657 --- /dev/null +++ b/src/interfaces/pipeline/pipeliner.ts @@ -0,0 +1,52 @@ +import { IDriver } from "../IDriver"; +import { IPipeline } from "./IPipeline"; + +export class PipeLiner implements IDriver { + public driver: IDriver; + public pipeline: IPipeline; + + constructor(driver: IDriver, pipeline: IPipeline) { + this.driver = driver; + this.pipeline = pipeline + } + + async prepare(table: string): Promise { + return await this.driver.prepare(table); + } + + async getAllRows(table: string): Promise<{ id: string; value: any; }[]> { + const rawData = await this.driver.getAllRows(table); + + const deserializedData = []; + for (const entry of rawData) { + const deserialized = await this.pipeline.deserialize(JSON.stringify(entry.value)); + deserializedData.push({ id: entry.id, value: deserialized }); + } + + return deserializedData; + } + + async getRowByKey(table: string, key: string): Promise<[T | null, boolean]> { + const rawData = await this.driver.getRowByKey(table, key); + + if (!rawData[0]) return rawData; + + const deserializedData = await this.pipeline.deserialize(JSON.stringify(rawData[0])); + return deserializedData ? [deserializedData, true] : [null, false]; + } + + async setRowByKey(table: string, key: string, value: any, update: boolean): Promise { + const serializedData = await this.pipeline.serialize(value); + + const ret = await this.driver.setRowByKey(table, key, serializedData, update); + return ret; + } + + async deleteAllRows(table: string): Promise { + return await this.driver.deleteAllRows(table); + } + + async deleteRowByKey(table: string, key: string): Promise { + return await this.driver.deleteRowByKey(table, key); + } +} \ No newline at end of file From 5e542eb4cdb692a77d64140bfa88267da561b7e1 Mon Sep 17 00:00:00 2001 From: DarkenLM Date: Fri, 7 Apr 2023 17:27:59 +0100 Subject: [PATCH 134/414] feat(driverunion): added init method Added initialization method to initialize all proxied drivers. --- src/drivers/DriverUnion.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/drivers/DriverUnion.ts b/src/drivers/DriverUnion.ts index fa420eba..9aea1c27 100644 --- a/src/drivers/DriverUnion.ts +++ b/src/drivers/DriverUnion.ts @@ -1,4 +1,5 @@ import { IDriver } from "../interfaces/IDriver"; +import { isConnectable } from "../utilities"; /** * DriverUnion - Union of Drivers @@ -38,6 +39,12 @@ export class DriverUnion implements IDriver { this._main = 0; } + public async init(): Promise { + for (const driver of this.drivers) { + if (isConnectable(driver)) await driver.connect(); + } + } + public async prepare(table: string): Promise { for (const driver of this.drivers) await driver.prepare(table); } From 59afc3dc823ffa62e7c953ac0ce3aa215e3dffc5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Apr 2023 03:58:47 +0000 Subject: [PATCH 135/414] Update dependency eslint to v8.38.0 --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1e887184..d4719e47 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1828,9 +1828,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", - "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", + "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3556,15 +3556,15 @@ } }, "node_modules/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", + "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.37.0", + "@eslint/js": "8.38.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -8848,9 +8848,9 @@ } }, "@eslint/js": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", - "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", + "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", "dev": true }, "@faker-js/faker": { @@ -10139,15 +10139,15 @@ "dev": true }, "eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", + "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.37.0", + "@eslint/js": "8.38.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", From cd4efd205ecde4c61336f2d3c2aaf9b5a7af7931 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Apr 2023 01:22:48 +0000 Subject: [PATCH 136/414] Update dependency typedoc to ^0.24.0 --- package-lock.json | 26 +++++++++++++------------- package.json | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1e887184..23b363fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "jest": "^29.3.1", "prettier": "^2.5.1", "ts-jest": "^29.0.3", - "typedoc": "^0.23.26", + "typedoc": "^0.24.0", "typescript": "^5.0.0" }, "engines": { @@ -7088,9 +7088,9 @@ } }, "node_modules/typedoc": { - "version": "0.23.28", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", - "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.1.tgz", + "integrity": "sha512-u4HwjZcSQhQSkkhLjgcs0ooAf6HrFVLDHHrwU2xZW8WxH0KnGZlNkaWxiOcK5Gagj7mxJSgwWx0dv8ACDAOXAQ==", "dev": true, "dependencies": { "lunr": "^2.3.9", @@ -7118,9 +7118,9 @@ } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz", - "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.5.tgz", + "integrity": "sha512-OzOamaOmNBJZUv2qqY1OSWa+++4YPpOkLgkc0w30Oov5ufKlWWXnFUl0l4dgmSv5Shq/zRVkEOXAe2NaqO4l5Q==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -12743,9 +12743,9 @@ "dev": true }, "typedoc": { - "version": "0.23.28", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", - "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.1.tgz", + "integrity": "sha512-u4HwjZcSQhQSkkhLjgcs0ooAf6HrFVLDHHrwU2xZW8WxH0KnGZlNkaWxiOcK5Gagj7mxJSgwWx0dv8ACDAOXAQ==", "dev": true, "requires": { "lunr": "^2.3.9", @@ -12764,9 +12764,9 @@ } }, "minimatch": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz", - "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.5.tgz", + "integrity": "sha512-OzOamaOmNBJZUv2qqY1OSWa+++4YPpOkLgkc0w30Oov5ufKlWWXnFUl0l4dgmSv5Shq/zRVkEOXAe2NaqO4l5Q==", "dev": true, "requires": { "brace-expansion": "^2.0.1" diff --git a/package.json b/package.json index a39fb1ca..7aa461e0 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "jest": "^29.3.1", "prettier": "^2.5.1", "ts-jest": "^29.0.3", - "typedoc": "^0.23.26", + "typedoc": "^0.24.0", "typescript": "^5.0.0" }, "peerDependencies": { From 5cc43db8c84e5863b69930a3f0378e45cf9e298f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 21:07:37 +0000 Subject: [PATCH 137/414] Update typescript-eslint monorepo to v5.58.0 --- package-lock.json | 160 +++++++++++++++++++++++----------------------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1e887184..9aea8d39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2628,15 +2628,15 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", - "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz", + "integrity": "sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/type-utils": "5.57.0", - "@typescript-eslint/utils": "5.57.0", + "@typescript-eslint/scope-manager": "5.58.0", + "@typescript-eslint/type-utils": "5.58.0", + "@typescript-eslint/utils": "5.58.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -2662,14 +2662,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", - "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.58.0.tgz", + "integrity": "sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/scope-manager": "5.58.0", + "@typescript-eslint/types": "5.58.0", + "@typescript-eslint/typescript-estree": "5.58.0", "debug": "^4.3.4" }, "engines": { @@ -2689,13 +2689,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", - "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz", + "integrity": "sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0" + "@typescript-eslint/types": "5.58.0", + "@typescript-eslint/visitor-keys": "5.58.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2706,13 +2706,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", - "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz", + "integrity": "sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.57.0", - "@typescript-eslint/utils": "5.57.0", + "@typescript-eslint/typescript-estree": "5.58.0", + "@typescript-eslint/utils": "5.58.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -2733,9 +2733,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", - "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.58.0.tgz", + "integrity": "sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2746,13 +2746,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", - "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz", + "integrity": "sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0", + "@typescript-eslint/types": "5.58.0", + "@typescript-eslint/visitor-keys": "5.58.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2773,17 +2773,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", - "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.58.0.tgz", + "integrity": "sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/scope-manager": "5.58.0", + "@typescript-eslint/types": "5.58.0", + "@typescript-eslint/typescript-estree": "5.58.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -2799,12 +2799,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", - "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz", + "integrity": "sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/types": "5.58.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -9515,15 +9515,15 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", - "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz", + "integrity": "sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/type-utils": "5.57.0", - "@typescript-eslint/utils": "5.57.0", + "@typescript-eslint/scope-manager": "5.58.0", + "@typescript-eslint/type-utils": "5.58.0", + "@typescript-eslint/utils": "5.58.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -9533,53 +9533,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", - "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.58.0.tgz", + "integrity": "sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/scope-manager": "5.58.0", + "@typescript-eslint/types": "5.58.0", + "@typescript-eslint/typescript-estree": "5.58.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", - "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz", + "integrity": "sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0" + "@typescript-eslint/types": "5.58.0", + "@typescript-eslint/visitor-keys": "5.58.0" } }, "@typescript-eslint/type-utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", - "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz", + "integrity": "sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.57.0", - "@typescript-eslint/utils": "5.57.0", + "@typescript-eslint/typescript-estree": "5.58.0", + "@typescript-eslint/utils": "5.58.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", - "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.58.0.tgz", + "integrity": "sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", - "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz", + "integrity": "sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0", + "@typescript-eslint/types": "5.58.0", + "@typescript-eslint/visitor-keys": "5.58.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -9588,28 +9588,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", - "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.58.0.tgz", + "integrity": "sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/scope-manager": "5.58.0", + "@typescript-eslint/types": "5.58.0", + "@typescript-eslint/typescript-estree": "5.58.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", - "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz", + "integrity": "sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/types": "5.58.0", "eslint-visitor-keys": "^3.3.0" } }, From 16570423a1839775a919e9ec3ca5ae83cdadbaac Mon Sep 17 00:00:00 2001 From: DarkenLM Date: Wed, 12 Apr 2023 21:06:55 +0100 Subject: [PATCH 138/414] feat(crypto): added custom encryption - Added custom encryption / decryption function options. --- src/index.ts | 2 +- src/interfaces/pipeline/crypto/crypt.ts | 139 ++++++++++++++---------- 2 files changed, 83 insertions(+), 58 deletions(-) diff --git a/src/index.ts b/src/index.ts index e1f43b01..c4e56e55 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,7 +15,7 @@ export { DriverUnion } from "./drivers/DriverUnion"; export { IPipeline } from "./interfaces/pipeline/IPipeline"; export { PipeLiner } from "./interfaces/pipeline/pipeliner"; -export { CryptPipeline } from "./interfaces/pipeline/crypto/crypt" +export { CryptPipeline, CryptOptions, Cryptor } from "./interfaces/pipeline/crypto/crypt" export interface IQuickDBOptions { table?: string; diff --git a/src/interfaces/pipeline/crypto/crypt.ts b/src/interfaces/pipeline/crypto/crypt.ts index d0d6a561..21f38c33 100644 --- a/src/interfaces/pipeline/crypto/crypt.ts +++ b/src/interfaces/pipeline/crypto/crypt.ts @@ -31,7 +31,12 @@ interface BuiltInCryptOptions { solveEncoding?: boolean, // strict?: boolean } -type CryptOptions = BuiltInCryptOptions +interface CustomCryptOptions extends BuiltInCryptOptions { + encryptor: Cryptor, + decryptor: Cryptor +} + +export type CryptOptions = BuiltInCryptOptions | CustomCryptOptions type JointResolvedCryptOptions = Required & { byteSize: number } type ResolvedCryptOptions = Omit @@ -39,7 +44,7 @@ type ResolvedCryptOptions = Omit // strict: boolean // } -type Cryptor = (options: ResolvedCryptOptions, data: string, encoding?: StringEncoding) => Promise +export type Cryptor = (options: ResolvedCryptOptions, data: string, encoding?: StringEncoding) => Promise type Payload = Record; type PayloadExtractor = ((str: string) => Payload | undefined) @@ -127,77 +132,97 @@ export class CryptPipeline implements IPipeline { this.payloadExtractor = makePayloadExtractor(cryptSymbol); - this.encryptor = async function(options, data): Promise { - try { - const iv = crypto.randomBytes(options.byteSize); - const cipher = crypto.createCipheriv(options.algorithm, Buffer.from(options.key), iv); - - // Ensure data is a string - const stringifiedData = (data as unknown) instanceof Object ? JSON.stringify(data) : data; - - return Buffer.concat([ - cipher.update(stringifiedData), - cipher.final(), - iv - ]).toString(options.encoding); - } catch (e: unknown) { - const err = e instanceof Error ? e : new Error(`${e}`); - - throw new Error("Unable to encrypt data: Unknown error", { cause: err }); + if ("encryptor" in options) { + this.encryptor = options.encryptor; + } else { + this.encryptor ??= async function(options, data): Promise { + try { + const iv = crypto.randomBytes(options.byteSize); + const cipher = crypto.createCipheriv(options.algorithm, Buffer.from(options.key), iv); + + // Ensure data is a string + const stringifiedData = (data as unknown) instanceof Object ? JSON.stringify(data) : data; + + return Buffer.concat([ + cipher.update(stringifiedData), + cipher.final(), + iv + ]).toString(options.encoding); + } catch (e: unknown) { + const err = e instanceof Error ? e : new Error(`${e}`); + + throw new Error("Unknown error", { cause: err }); + } } } - this.decryptor = async function(options, data, encoding): Promise { - try { - encoding ??= "utf8"; - - const binaryData = Buffer.from(data, options.encoding); - const iv = binaryData.subarray(binaryData.length - options.byteSize, binaryData.length); - const encryptedData = binaryData.subarray(0, binaryData.length - options.byteSize); - - const decipher = crypto.createDecipheriv(options.algorithm, Buffer.from(options.key), iv); - const decrypted = Buffer.concat([ - decipher.update(encryptedData), - decipher.final() - ]); - - return decrypted.toString(encoding); - } catch (e: unknown) { - const err = e instanceof Error ? e : new Error(`${e}`); - if (err.message.includes("error:1C800064:Provider routines::bad decrypt")) throw new Error("Unable to decrypt data: Bad decrypt."); - - throw new Error("Unable to decrypt data: Unknown error", { cause: err }); + if ("decryptor" in options) { + this.decryptor = options.decryptor; + } else { + this.decryptor ??= async function(options, data, encoding): Promise { + try { + encoding ??= "utf8"; + + const binaryData = Buffer.from(data, options.encoding); + const iv = binaryData.subarray(binaryData.length - options.byteSize, binaryData.length); + const encryptedData = binaryData.subarray(0, binaryData.length - options.byteSize); + + const decipher = crypto.createDecipheriv(options.algorithm, Buffer.from(options.key), iv); + const decrypted = Buffer.concat([ + decipher.update(encryptedData), + decipher.final() + ]); + + return decrypted.toString(encoding); + } catch (e: unknown) { + const err = e instanceof Error ? e : new Error(`${e}`); + if (err.message.includes("error:1C800064:Provider routines::bad decrypt")) throw new Error("Bad decrypt"); + + throw new Error("Unknown error", { cause: err }); + } } } } async serialize(value: string): Promise { - const encryptedData = await this.encryptor(this.options, value); - return cryptSymbol.replace("%encoding%", this.options.encoding).replace("%payload%", encryptedData); + try { + const encryptedData = await this.encryptor(this.options, value); + return cryptSymbol.replace("%encoding%", this.options.encoding).replace("%payload%", encryptedData); + } catch (e: unknown) { + const err = e instanceof Error ? e : new Error(`${e}`); + + throw new Error("Unable to encrypt data", { cause: err }); + } } async deserialize(data: string): Promise { - const nData = data.trim().replace(/^"/, "").replace(/"$/, ""); - const payload = this.payloadExtractor(nData); - if (!payload) { - // if (this.pipelineOptions.strict) throw new Error("Entry is not encrypted or was encrypted on an unsupported format.") - return data as R; - } + try { + const nData = data.trim().replace(/^"/, "").replace(/"$/, ""); + const payload = this.payloadExtractor(nData); + if (!payload) { + // if (this.pipelineOptions.strict) throw new Error("Entry is not encrypted or was encrypted on an unsupported format.") + return data as R; + } - const options = { ...this.options }; - if (payload.encoding !== "null") { - if (!this.options.solveEncoding) throw new Error(`Invalid encoding. Expected '${this.options.encoding}', but got '${payload.encoding}'`) + const options = { ...this.options }; + if (payload.encoding !== "null") { + if (!this.options.solveEncoding) throw new Error(`Invalid encoding. Expected '${this.options.encoding}', but got '${payload.encoding}'`) - if (Encoding.includes(payload.encoding as Encoding)) options.encoding = payload.encoding as Encoding; - } + if (Encoding.includes(payload.encoding as Encoding)) options.encoding = payload.encoding as Encoding; + } - const decryptedData = await this.decryptor(options, payload.payload, "utf8"); + const decryptedData = await this.decryptor(options, payload.payload, "utf8"); - try { - return JSON.parse(decryptedData) as R; - } catch (_) { - return decryptedData as R; + try { + return JSON.parse(decryptedData) as R; + } catch (_) { + return decryptedData as R; + } + } catch (e: unknown) { + const err = e instanceof Error ? e : new Error(`${e}`); + + throw new Error("Unable to decrypt data", { cause: err }); } } } \ No newline at end of file From 29c6371ae9780992e8e7a49df94296e531e34b7a Mon Sep 17 00:00:00 2001 From: DarkenLM Date: Thu, 13 Apr 2023 19:35:07 +0100 Subject: [PATCH 139/414] refactor(pipeline): organized source code. Fixed bugs - Moved pipeline into root. Kept interfaces in the interfaces subdirectory. - Fixed bug: aes-192-cbc and aes-256-cbc had invalid IV sizes. --- src/index.ts | 6 +++--- src/interfaces/{pipeline => }/IPipeline.ts | 0 src/{interfaces => }/pipeline/crypto/crypt.ts | 4 ++-- src/{interfaces => }/pipeline/pipeliner.ts | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) rename src/interfaces/{pipeline => }/IPipeline.ts (100%) rename src/{interfaces => }/pipeline/crypto/crypt.ts (98%) rename src/{interfaces => }/pipeline/pipeliner.ts (93%) diff --git a/src/index.ts b/src/index.ts index c4e56e55..6e4ded8e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,9 +13,9 @@ export { MemoryDriver, Table } from "./drivers/MemoryDriver"; export { JSONDriver, DataLike } from "./drivers/JSONDriver"; export { DriverUnion } from "./drivers/DriverUnion"; -export { IPipeline } from "./interfaces/pipeline/IPipeline"; -export { PipeLiner } from "./interfaces/pipeline/pipeliner"; -export { CryptPipeline, CryptOptions, Cryptor } from "./interfaces/pipeline/crypto/crypt" +export { IPipeline } from "./interfaces/IPipeline"; +export { PipeLiner } from "./pipeline/pipeliner"; +export { CryptPipeline, CryptOptions, Cryptor } from "./pipeline/crypto/crypt" export interface IQuickDBOptions { table?: string; diff --git a/src/interfaces/pipeline/IPipeline.ts b/src/interfaces/IPipeline.ts similarity index 100% rename from src/interfaces/pipeline/IPipeline.ts rename to src/interfaces/IPipeline.ts diff --git a/src/interfaces/pipeline/crypto/crypt.ts b/src/pipeline/crypto/crypt.ts similarity index 98% rename from src/interfaces/pipeline/crypto/crypt.ts rename to src/pipeline/crypto/crypt.ts index 21f38c33..26cf0a31 100644 --- a/src/interfaces/pipeline/crypto/crypt.ts +++ b/src/pipeline/crypto/crypt.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import crypto from "crypto"; -import { IPipeline } from "../IPipeline"; +import { IPipeline } from "../../interfaces/IPipeline"; /* CONSTANTS */ const cryptSymbol = "__SYM_QUICKDB_CRYPT__{%encoding%;%payload%}"; @@ -123,7 +123,7 @@ export class CryptPipeline implements IPipeline { algorithm: options.algorithm, encoding: options.encoding, solveEncoding: options.solveEncoding, - byteSize: byteSize + byteSize: 16 //byteSize } // this.pipelineOptions = { diff --git a/src/interfaces/pipeline/pipeliner.ts b/src/pipeline/pipeliner.ts similarity index 93% rename from src/interfaces/pipeline/pipeliner.ts rename to src/pipeline/pipeliner.ts index 33685657..f0861c91 100644 --- a/src/interfaces/pipeline/pipeliner.ts +++ b/src/pipeline/pipeliner.ts @@ -1,5 +1,5 @@ -import { IDriver } from "../IDriver"; -import { IPipeline } from "./IPipeline"; +import { IDriver } from "../interfaces/IDriver"; +import { IPipeline } from "../interfaces/IPipeline"; export class PipeLiner implements IDriver { public driver: IDriver; From 37bbb920f677d544dbfcb286f87c54ff45ca6508 Mon Sep 17 00:00:00 2001 From: DarkenLM Date: Thu, 13 Apr 2023 20:16:42 +0100 Subject: [PATCH 140/414] docs(crypto): added documentation to the CryptoPipeline module - Added documentation to the CryptoPipeline module. - Namespaced re-export for CryptoPipeline. --- src/index.ts | 2 +- src/pipeline/crypto/crypt.ts | 67 ++++++++++++++++++++++++++---------- 2 files changed, 49 insertions(+), 20 deletions(-) diff --git a/src/index.ts b/src/index.ts index 6e4ded8e..0793ef04 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,7 +15,7 @@ export { DriverUnion } from "./drivers/DriverUnion"; export { IPipeline } from "./interfaces/IPipeline"; export { PipeLiner } from "./pipeline/pipeliner"; -export { CryptPipeline, CryptOptions, Cryptor } from "./pipeline/crypto/crypt" +export * as CryptoPipeline from "./pipeline/crypto/crypt" export interface IQuickDBOptions { table?: string; diff --git a/src/pipeline/crypto/crypt.ts b/src/pipeline/crypto/crypt.ts index 26cf0a31..01a7dccc 100644 --- a/src/pipeline/crypto/crypt.ts +++ b/src/pipeline/crypto/crypt.ts @@ -10,6 +10,7 @@ const Encoding = ["ucs2", "ucs-2", "base64", "base64url", "latin1", "hex"] as co const StringEncoding = ["ascii", "utf8", "utf-8", "utf16le", "ucs2", "ucs-2", "base64", "base64url", "latin1", "hex", "binary"] as const; const algorithmByteSizes = { + "custom": -1, "aes-128-cbc": 16, "aes-192-cbc": 24, "aes-256-cbc": 32 @@ -24,30 +25,31 @@ type CryptoAlgorithm = keyof typeof algorithmByteSizes type Encoding = typeof Encoding[number] type StringEncoding = typeof StringEncoding[number] -interface BuiltInCryptOptions { +export interface BuiltInCryptOptions { key: string | Buffer, algorithm?: CryptoAlgorithm, encoding?: Encoding, - solveEncoding?: boolean, - // strict?: boolean + solveEncoding?: boolean } -interface CustomCryptOptions extends BuiltInCryptOptions { +export interface CustomCryptOptions extends BuiltInCryptOptions { encryptor: Cryptor, decryptor: Cryptor } +export type ResolvedCryptOptions = Required & { byteSize: number } export type CryptOptions = BuiltInCryptOptions | CustomCryptOptions -type JointResolvedCryptOptions = Required & { byteSize: number } -type ResolvedCryptOptions = Omit - -// type PipelineOptions = { -// strict: boolean -// } - export type Cryptor = (options: ResolvedCryptOptions, data: string, encoding?: StringEncoding) => Promise type Payload = Record; type PayloadExtractor = ((str: string) => Payload | undefined) + +/** + * Automatically extracts relevant data against a template from a string, if the string matches the template. + * + * @template K + * @param {string} template + * @return {*} {PayloadExtractor} + */ function makePayloadExtractor(template: string): PayloadExtractor { const varSymLength = 2; const varRegex = /%((?:[a-zA-Z_])+)%/gm; @@ -96,6 +98,33 @@ function makePayloadExtractor(template: string): PayloadExtrac return payloadExtractor; } +/** + * The Crypt pipeline adds cryptography to all data piped through to the database. + * + * **WARNING:** Attempting to deserialize data which was serialized using a different algorithm / key ***will*** result in an error being thrown. + * + * A custom encryption / decryption pair algorithm can be provided. + * + * @example + * const { PipeLiner, CryptoPipeline: { CryptPipeline }, QuickDB, SqliteDriver } = require("quick.db"); + * const SQLiteInstance = SqliteDriver.createSingleton("./crypt.sqlite"); + * const Crypt = new CryptPipeline({ + * algorithm: "aes-128-cbc", + * key: "0000111122223333", + * encoding: "base64", + * solveEncoding: true + * }); + * const pipeline = new PipeLiner(SQLiteInstance, Crypt); + * + * const db = new QuickDB({ driver: pipeline }); + * await db.init(); + * + * // Database ready to be used. + * + * @export + * @class CryptPipeline + * @implements {IPipeline} + */ export class CryptPipeline implements IPipeline { private options: ResolvedCryptOptions; // private pipelineOptions: PipelineOptions; @@ -107,7 +136,6 @@ export class CryptPipeline implements IPipeline { options.algorithm ??= "aes-128-cbc" as unknown as CryptoAlgorithm; options.encoding ??= "hex" as unknown as Encoding; options.solveEncoding ??= true; - // options.strict ??= false; const byteSize = algorithmByteSizes[options.algorithm]; @@ -117,22 +145,23 @@ export class CryptPipeline implements IPipeline { if (!(Encoding as unknown as string[]).includes(options.encoding)) throw new Error("Encoding is not supported"); options.solveEncoding = !!options.solveEncoding; - this.options = { key: options.key, algorithm: options.algorithm, encoding: options.encoding, solveEncoding: options.solveEncoding, - byteSize: 16 //byteSize + byteSize: 16 } - // this.pipelineOptions = { - // strict: options.strict - // } - this.payloadExtractor = makePayloadExtractor(cryptSymbol); + // Check if custom encryption is being used, and ensure it is being correctly initialized + if ( ("encryptor" in options && !("decryptor" in options)) || (!("encryptor" in options) && "decryptor" in options) ) + throw new Error("Both an encryptor and decryptor must be provided when using a custom algorithm.") + else options.algorithm = "custom"; + if ("encryptor" in options) { + if (typeof options.encryptor !== "function") throw new Error("Encriptor is not a function."); this.encryptor = options.encryptor; } else { this.encryptor ??= async function(options, data): Promise { @@ -157,6 +186,7 @@ export class CryptPipeline implements IPipeline { } if ("decryptor" in options) { + if (typeof options.decryptor !== "function") throw new Error("Decriptor is not a function."); this.decryptor = options.decryptor; } else { this.decryptor ??= async function(options, data, encoding): Promise { @@ -201,7 +231,6 @@ export class CryptPipeline implements IPipeline { const nData = data.trim().replace(/^"/, "").replace(/"$/, ""); const payload = this.payloadExtractor(nData); if (!payload) { - // if (this.pipelineOptions.strict) throw new Error("Entry is not encrypted or was encrypted on an unsupported format.") return data as R; } From bc0a975778f39c025aaf7e7387770adcc4b71c24 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Thu, 13 Apr 2023 15:41:16 -0400 Subject: [PATCH 141/414] Fixed README.md --- .gitignore | 4 +++- README.md | 45 +++------------------------------------------ 2 files changed, 6 insertions(+), 43 deletions(-) diff --git a/.gitignore b/.gitignore index c574ee2d..4216dafd 100644 --- a/.gitignore +++ b/.gitignore @@ -138,4 +138,6 @@ out .tool-versions -integration-database \ No newline at end of file +integration-database + +docs \ No newline at end of file diff --git a/README.md b/README.md index 198340f7..cbb49f79 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ > Need a powerful, low-cost VPS for hosting your applications & bots 24/7? Check out our partner, [Contabo](https://www.tkqlhce.com/click-8950879-15301134)! 🎉 -**Documentation:** [quickdb.js.org](https://quickdb.js.org) [[Migration Guide](https://quickdb.js.org/overview/migration-guide)]
**Support:** [discord.gg/plexidev](https://discord.gg/plexidev)
**NPM:** [npmjs.com/quick.db](https://www.npmjs.com/package/quick.db) @@ -96,9 +95,8 @@ const { QuickDB, MySQLDriver } = require("quick.db"); database: "my_db", }); - await mysqlDriver.connect(); // connect to the database **this is important** - const db = new QuickDB({ driver: mysqlDriver }); + await db.init(); // Connects and setup the database // Now you can use quick.db as normal await db.set("userInfo", { difficulty: "Easy" }); @@ -120,9 +118,8 @@ const { QuickDB, PostgresDriver } = require("quick.db"); database: "my_db", }); - await postgresDriver.connect(); // connect to the database **this is important** - const db = new QuickDB({ driver: postgresDriver }); + await db.init(); // Connects and setup the database // Now you can use quick.db as normal await db.set("userInfo", { difficulty: "Easy" }); @@ -139,9 +136,8 @@ const { QuickDB, MongoDriver } = require("quick.db"); (async () => { const mongoDriver = new MongoDriver("mongodb://localhost/quickdb"); - await mongoDriver.connect(); - const db = new QuickDB({ driver: mongoDriver }); + await db.init(); // Connects and setup the database // Now you can use quick.db as normal await db.set("userInfo", { difficulty: "Easy" }); @@ -175,38 +171,3 @@ const db = new QuickDB({ driver: memoryDriver }); await db.set("userInfo", { difficulty: "Easy" }); ``` - -## Changes in 9.0.x - -- Added two new database options: **driver** and **filePath** - - By default, the Sqlite driver is used. Although, you can use the MySQL driver by looking at the example above. More drivers are planned for the future, feel free to submit a pull request as well. -- Added **.deleteAll()** method -- Added **.pull()** method (see below) -- Changed all methods to use async/await - - This is because some drivers, such as MySQL, need to use await. Using async/await globally adds code consistency throughout drivers. -- Changed QuickDB into a class - - This changes how the database is initialized, read the [migration guide](https://quickdb.js.org/overview/migration-guide) for more information. -- Renamed the **.subtract()** method to **.sub()** to match the length of **.add()** -- General bug fixes - - A notable one includes storing numbers as strings in the database now working as intended. - -**.pull()** - -```js -await db.set("myArray", [ - "axe", - "sword", - "shield", - "health_potion", - "mana_potion", -]); - -await db.pull("myArray", "axe"); // Removing a single item -// -> ['sword', 'shield', 'health_potion', 'mana_potion'] - -await db.pull("myArray", ["sword", "shield"]); // Removing multiple options -// -> ['health_potion', 'mana_potion'] - -await db.pull("myArray", (i) => i.includes("potion")); // Using a function -// -> [] -``` From 2aa98c38052759b5eba96c05786e65c280377ce4 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Thu, 13 Apr 2023 15:54:45 -0400 Subject: [PATCH 142/414] Adding better links and removing installs --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cbb49f79..5327a949 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,15 @@ > Need a powerful, low-cost VPS for hosting your applications & bots 24/7? Check out our partner, [Contabo](https://www.tkqlhce.com/click-8950879-15301134)! 🎉 +**Auto Generated Docs** [docs](https://docs.plexidev.org/classes/index.QuickDB.html)
+**Guide** [Guide](https://quickdb.js.org/en/introduction/)
**Support:** [discord.gg/plexidev](https://discord.gg/plexidev)
**NPM:** [npmjs.com/quick.db](https://www.npmjs.com/package/quick.db) Quick.db is an open-source package meant to provide an easy way for beginners and people of all levels to access & store data in a low to medium volume environment. All data is stored persistently via either [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3), [mysql2](https://www.npmjs.com/package/mysql2), [pg](https://www.npmjs.com/package/pg) or [mongoose](https://www.npmjs.com/package/mongoose) and comes way various other quality-of-life features. - **Persistent Storage** - Data doesn't disappear through restarts -- **Multiple Drivers** - You can use either better-sqlite3 or mysql2 +- **Multiple Drivers** - SQLite, MySQL, Postgres, Mongoose - **Works out of the box** - No need to set up a database server, all the data is stored locally in the same project - **Beginner Friendly** - Originally created for use in tutorials, the documentation is straightforward and jargon-free - & more... From b239f34e4a06c97de1f68dde5eee1eb1ebc59c33 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Thu, 13 Apr 2023 16:36:38 -0400 Subject: [PATCH 143/414] Removed installs from readme --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 5327a949..11210a49 100644 --- a/README.md +++ b/README.md @@ -29,11 +29,6 @@ Quick.db is an open-source package meant to provide an easy way for beginners an -```python -npm i quick.db better-sqlite3 # (Default) Local SQLite3 File -npm i quick.db mysql2 # (Alternative) MySQL Server Connection -``` - > If you're having troubles installing, please follow [this troubleshooting guide](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/troubleshooting.md). > Windows users may need to do additional steps listed [here](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/troubleshooting.md). From 85890cdfd6d9a41b691dbd899775011c5a578eb1 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Thu, 13 Apr 2023 16:53:29 -0400 Subject: [PATCH 144/414] Fixed install --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 11210a49..c69476ba 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,11 @@ Quick.db is an open-source package meant to provide an easy way for beginners an ## Installation +```bash +npm i quick.db +``` + +
Mac Prerequisites
From 3de4568884343304dec9ad075bec9e25a4974cbb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 13 Apr 2023 21:03:31 +0000 Subject: [PATCH 145/414] chore(deps): update dependency @types/better-sqlite3 to v7.6.4 --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f54015e5..02dc8482 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2458,9 +2458,9 @@ } }, "node_modules/@types/better-sqlite3": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.3.tgz", - "integrity": "sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.4.tgz", + "integrity": "sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==", "dev": true, "dependencies": { "@types/node": "*" @@ -9352,9 +9352,9 @@ } }, "@types/better-sqlite3": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.3.tgz", - "integrity": "sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.4.tgz", + "integrity": "sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==", "dev": true, "requires": { "@types/node": "*" From 811f5e84a5d14c541e059dad03cc74d3684bc4c2 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Thu, 13 Apr 2023 17:09:38 -0400 Subject: [PATCH 146/414] Fixed problem with types --- src/drivers/SqliteDriver.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/drivers/SqliteDriver.ts b/src/drivers/SqliteDriver.ts index c6539608..bbf86a2c 100644 --- a/src/drivers/SqliteDriver.ts +++ b/src/drivers/SqliteDriver.ts @@ -29,13 +29,15 @@ export class SqliteDriver implements IDriver { public async getAllRows( table: string ): Promise<{ id: string; value: any }[]> { - const prep = this._database.prepare(`SELECT * FROM ${table}`); + const prep = this._database.prepare<{ ID: string; json: string }[]>( + `SELECT * FROM ${table}` + ); const data = []; for (const row of prep.iterate()) { data.push({ - id: row.ID, - value: JSON.parse(row.json), + id: (row as { ID: string; json: string }).ID, + value: JSON.parse((row as { ID: string; json: string }).json), }); } @@ -46,9 +48,9 @@ export class SqliteDriver implements IDriver { table: string, key: string ): Promise<[T | null, boolean]> { - const value = await this._database + const value = (await this._database .prepare(`SELECT json FROM ${table} WHERE ID = @key`) - .get({ key }); + .get({ key })) as { ID: string; json: string }; return value != null ? [JSON.parse(value.json), true] : [null, false]; } From 948b685e7dca851a96db34597cf4b97945b21dd6 Mon Sep 17 00:00:00 2001 From: DarkenLM Date: Thu, 13 Apr 2023 22:14:54 +0100 Subject: [PATCH 147/414] fix(exports): removed driver exports from index file BREAKING CHANGE: Drivers are no longer exported from the index file. (See https://github.com/plexidev/quick.db/pull/306/files#r1165994876) --- src/index.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/index.ts b/src/index.ts index 0793ef04..25e6c31f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,12 +6,6 @@ import { CustomError as QuickError, ErrorKind } from "./error"; export { IDriver } from "./interfaces/IDriver"; export { IRemoteDriver } from "./interfaces/IRemoteDriver"; -export { MongoDriver, CollectionInterface } from "./drivers/MongoDriver"; -export { SqliteDriver } from "./drivers/SqliteDriver"; -export { MySQLDriver, Config } from "./drivers/MySQLDriver"; -export { MemoryDriver, Table } from "./drivers/MemoryDriver"; -export { JSONDriver, DataLike } from "./drivers/JSONDriver"; -export { DriverUnion } from "./drivers/DriverUnion"; export { IPipeline } from "./interfaces/IPipeline"; export { PipeLiner } from "./pipeline/pipeliner"; From 8a9da50a2946c9e67cd55da71210b8a7b1de55f0 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 14 Apr 2023 10:03:04 -0400 Subject: [PATCH 148/414] docs(readme): better-sqlite3 install --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c69476ba..1ae22439 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,9 @@ npm i quick.db > If you're having troubles installing, please follow [this troubleshooting guide](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/troubleshooting.md). > Windows users may need to do additional steps listed [here](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/troubleshooting.md). -## Example +## Example With Sqlite (Default driver) + +> **NOTE:** In order to use this driver, install `npm i better-sqlite3` separately. ```js const { QuickDB } = require("quick.db"); From e05fe94c0487607df7f54a480a264b3ce7548dc3 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 14 Apr 2023 10:16:11 -0400 Subject: [PATCH 149/414] chore(dependencies): fixed peerdependencies --- package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7aa461e0..2d05dd72 100644 --- a/package.json +++ b/package.json @@ -26,11 +26,11 @@ "typescript": "^5.0.0" }, "peerDependencies": { - "better-sqlite3": "^8.0.0", - "mongoose": "^7.0.0", - "mysql2": "^3.2.0", - "pg": "^8.10.0", - "write-file-atomic": "^5.0.0" + "better-sqlite3": "8.x", + "mongoose": "7.x", + "mysql2": "3.x", + "pg": "8.x", + "write-file-atomic": "5.x" }, "dependencies": { "lodash": "^4.17.21" From 2c20b133f5f4e6b25d85ca3f282c13bb94b0621e Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Fri, 14 Apr 2023 10:48:02 -0400 Subject: [PATCH 150/414] fix(dependency problem): requiring SqliteDriver only when needed --- src/index.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index ce6dbb2c..4c1acf36 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,5 @@ import { set, get, unset } from "lodash"; import { IDriver } from "./interfaces/IDriver"; -import { SqliteDriver } from "./drivers/SqliteDriver"; import { isConnectable, isDisconnectable } from "./utilities"; import { CustomError as QuickError, ErrorKind } from "./error"; @@ -70,11 +69,15 @@ export class QuickDB { constructor(options: IQuickDBOptions = {}) { options.table ??= "json"; options.filePath ??= "json.sqlite"; - options.driver ??= SqliteDriver.createSingleton(options.filePath); options.normalKeys ??= false; + if (!options.driver) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { SqliteDriver } = require("./drivers/SqliteDriver"); + options.driver = SqliteDriver.createSingleton(options.filePath); + } this.options = options; - this._driver = options.driver; + this._driver = options.driver!; this.tableName = options.table; this.normalKeys = options.normalKeys; } From dd04467e2ab596a6228d1f65b95e2d5fa5d7c406 Mon Sep 17 00:00:00 2001 From: Zelak312 Date: Sat, 15 Apr 2023 13:32:00 -0400 Subject: [PATCH 151/414] Feat(yarn): Moving to yarn --- .editorconfig | 10 + .gitattributes | 4 + .github/workflows/docgen-static.yml | 6 +- .github/workflows/node.js.yml | 8 +- .gitignore | 12 +- .yarn/releases/yarn-3.5.0.cjs | 873 ++ .yarnrc.yml | 2 + package-lock.json | 12957 -------------------------- package.json | 33 +- yarn.lock | 5223 +++++++++++ 10 files changed, 6156 insertions(+), 12972 deletions(-) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100755 .yarn/releases/yarn-3.5.0.cjs create mode 100644 .yarnrc.yml delete mode 100644 package-lock.json create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..ffe9a1f4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[*.{js,json,yml}] +charset = utf-8 +indent_style = space +indent_size = 4 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..af3ad128 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +/.yarn/** linguist-vendored +/.yarn/releases/* binary +/.yarn/plugins/**/* binary +/.pnp.* binary linguist-generated diff --git a/.github/workflows/docgen-static.yml b/.github/workflows/docgen-static.yml index 32f65425..f70d9c4b 100644 --- a/.github/workflows/docgen-static.yml +++ b/.github/workflows/docgen-static.yml @@ -24,9 +24,9 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - cache: "npm" - - run: npm ci - - run: npm run docgen + cache: "yarn" + - run: yarn install --immutable + - run: yarn run docgen - name: Setup Pages id: pages diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 204fea68..9f0cfc48 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -28,7 +28,7 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - cache: "npm" - - run: npm ci - - run: npm run lint - - run: npm run test:all + cache: "yarn" + - run: yarn install --immutable + - run: yarn run lint + - run: yarn run test:all diff --git a/.gitignore b/.gitignore index 4216dafd..ecb26c7e 100644 --- a/.gitignore +++ b/.gitignore @@ -135,9 +135,15 @@ dist # End of https://www.toptal.com/developers/gitignore/api/node out - .tool-versions - integration-database +docs -docs \ No newline at end of file +# yarn +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions diff --git a/.yarn/releases/yarn-3.5.0.cjs b/.yarn/releases/yarn-3.5.0.cjs new file mode 100755 index 00000000..093e64a9 --- /dev/null +++ b/.yarn/releases/yarn-3.5.0.cjs @@ -0,0 +1,873 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var Qge=Object.create;var AS=Object.defineProperty;var bge=Object.getOwnPropertyDescriptor;var Sge=Object.getOwnPropertyNames;var vge=Object.getPrototypeOf,xge=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var Pge=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ut=(r,e)=>{for(var t in e)AS(r,t,{get:e[t],enumerable:!0})},Dge=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Sge(e))!xge.call(r,n)&&n!==t&&AS(r,n,{get:()=>e[n],enumerable:!(i=bge(e,n))||i.enumerable});return r};var Pe=(r,e,t)=>(t=r!=null?Qge(vge(r)):{},Dge(e||!r||!r.__esModule?AS(t,"default",{value:r,enumerable:!0}):t,r));var QK=w((GXe,BK)=>{BK.exports=wK;wK.sync=Zge;var IK=J("fs");function Xge(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{xK.exports=SK;SK.sync=_ge;var bK=J("fs");function SK(r,e,t){bK.stat(r,function(i,n){t(i,i?!1:vK(n,e))})}function _ge(r,e){return vK(bK.statSync(r),e)}function vK(r,e){return r.isFile()&&$ge(r,e)}function $ge(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var kK=w((qXe,DK)=>{var jXe=J("fs"),sI;process.platform==="win32"||global.TESTING_WINDOWS?sI=QK():sI=PK();DK.exports=SS;SS.sync=efe;function SS(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){SS(r,e||{},function(s,o){s?n(s):i(o)})})}sI(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function efe(r,e){try{return sI.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var MK=w((JXe,OK)=>{var vg=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",RK=J("path"),tfe=vg?";":":",FK=kK(),NK=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),LK=(r,e)=>{let t=e.colon||tfe,i=r.match(/\//)||vg&&r.match(/\\/)?[""]:[...vg?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=vg?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=vg?n.split(t):[""];return vg&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},TK=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=LK(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(NK(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=RK.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];FK(c+p,{pathExt:s},(C,y)=>{if(!C&&y)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},rfe=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=LK(r,e),s=[];for(let o=0;o{"use strict";var KK=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};vS.exports=KK;vS.exports.default=KK});var jK=w((zXe,YK)=>{"use strict";var HK=J("path"),ife=MK(),nfe=UK();function GK(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=ife.sync(r.command,{path:t[nfe({env:t})],pathExt:e?HK.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=HK.resolve(n?r.options.cwd:"",o)),o}function sfe(r){return GK(r)||GK(r,!0)}YK.exports=sfe});var qK=w((VXe,PS)=>{"use strict";var xS=/([()\][%!^"`<>&|;, *?])/g;function ofe(r){return r=r.replace(xS,"^$1"),r}function afe(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(xS,"^$1"),e&&(r=r.replace(xS,"^$1")),r}PS.exports.command=ofe;PS.exports.argument=afe});var WK=w((XXe,JK)=>{"use strict";JK.exports=/^#!(.*)/});var VK=w((ZXe,zK)=>{"use strict";var Afe=WK();zK.exports=(r="")=>{let e=r.match(Afe);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var ZK=w((_Xe,XK)=>{"use strict";var DS=J("fs"),lfe=VK();function cfe(r){let t=Buffer.alloc(150),i;try{i=DS.openSync(r,"r"),DS.readSync(i,t,0,150,0),DS.closeSync(i)}catch{}return lfe(t.toString())}XK.exports=cfe});var tU=w(($Xe,eU)=>{"use strict";var ufe=J("path"),_K=jK(),$K=qK(),gfe=ZK(),ffe=process.platform==="win32",hfe=/\.(?:com|exe)$/i,pfe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function dfe(r){r.file=_K(r);let e=r.file&&gfe(r.file);return e?(r.args.unshift(r.file),r.command=e,_K(r)):r.file}function Cfe(r){if(!ffe)return r;let e=dfe(r),t=!hfe.test(e);if(r.options.forceShell||t){let i=pfe.test(e);r.command=ufe.normalize(r.command),r.command=$K.command(r.command),r.args=r.args.map(s=>$K.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function mfe(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:Cfe(i)}eU.exports=mfe});var nU=w((eZe,iU)=>{"use strict";var kS=process.platform==="win32";function RS(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function Efe(r,e){if(!kS)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=rU(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function rU(r,e){return kS&&r===1&&!e.file?RS(e.original,"spawn"):null}function Ife(r,e){return kS&&r===1&&!e.file?RS(e.original,"spawnSync"):null}iU.exports={hookChildProcess:Efe,verifyENOENT:rU,verifyENOENTSync:Ife,notFoundError:RS}});var LS=w((tZe,xg)=>{"use strict";var sU=J("child_process"),FS=tU(),NS=nU();function oU(r,e,t){let i=FS(r,e,t),n=sU.spawn(i.command,i.args,i.options);return NS.hookChildProcess(n,i),n}function yfe(r,e,t){let i=FS(r,e,t),n=sU.spawnSync(i.command,i.args,i.options);return n.error=n.error||NS.verifyENOENTSync(n.status,i),n}xg.exports=oU;xg.exports.spawn=oU;xg.exports.sync=yfe;xg.exports._parse=FS;xg.exports._enoent=NS});var AU=w((rZe,aU)=>{"use strict";function wfe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Wl(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Wl)}wfe(Wl,Error);Wl.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ie=me(">>",!1),de=">&",_e=me(">&",!1),Pt=">",It=me(">",!1),Or="<<<",ii=me("<<<",!1),gi="<&",hr=me("<&",!1),fi="<",ni=me("<",!1),Os=function(m){return{type:"argument",segments:[].concat(...m)}},pr=function(m){return m},Ii="$'",es=me("$'",!1),ua="'",pA=me("'",!1),ag=function(m){return[{type:"text",text:m}]},ts='""',dA=me('""',!1),ga=function(){return{type:"text",text:""}},yp='"',CA=me('"',!1),mA=function(m){return m},wr=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},kl=function(m){return{type:"shell",shell:m,quoted:!0}},Ag=function(m){return{type:"variable",...m,quoted:!0}},Io=function(m){return{type:"text",text:m}},lg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},wp=function(m){return{type:"shell",shell:m,quoted:!1}},Bp=function(m){return{type:"variable",...m,quoted:!1}},vr=function(m){return{type:"glob",pattern:m}},se=/^[^']/,yo=Je(["'"],!0,!1),kn=function(m){return m.join("")},cg=/^[^$"]/,Qt=Je(["$",'"'],!0,!1),Rl=`\\ +`,Rn=me(`\\ +`,!1),rs=function(){return""},is="\\",gt=me("\\",!1),wo=/^[\\$"`]/,At=Je(["\\","$",'"',"`"],!1,!1),an=function(m){return m},S="\\a",Tt=me("\\a",!1),ug=function(){return"a"},Fl="\\b",Qp=me("\\b",!1),bp=function(){return"\b"},Sp=/^[Ee]/,vp=Je(["E","e"],!1,!1),xp=function(){return"\x1B"},G="\\f",yt=me("\\f",!1),EA=function(){return"\f"},Ji="\\n",Nl=me("\\n",!1),Xe=function(){return` +`},fa="\\r",gg=me("\\r",!1),FE=function(){return"\r"},Pp="\\t",NE=me("\\t",!1),ar=function(){return" "},Fn="\\v",Ll=me("\\v",!1),Dp=function(){return"\v"},Ms=/^[\\'"?]/,ha=Je(["\\","'",'"',"?"],!1,!1),An=function(m){return String.fromCharCode(parseInt(m,16))},Te="\\x",fg=me("\\x",!1),Tl="\\u",Ks=me("\\u",!1),Ol="\\U",IA=me("\\U",!1),hg=function(m){return String.fromCodePoint(parseInt(m,16))},pg=/^[0-7]/,pa=Je([["0","7"]],!1,!1),da=/^[0-9a-fA-f]/,rt=Je([["0","9"],["a","f"],["A","f"]],!1,!1),Bo=nt(),yA="-",Ml=me("-",!1),Us="+",Kl=me("+",!1),LE=".",kp=me(".",!1),dg=function(m,b,N){return{type:"number",value:(m==="-"?-1:1)*parseFloat(b.join("")+"."+N.join(""))}},Rp=function(m,b){return{type:"number",value:(m==="-"?-1:1)*parseInt(b.join(""))}},TE=function(m){return{type:"variable",...m}},Ul=function(m){return{type:"variable",name:m}},OE=function(m){return m},Cg="*",wA=me("*",!1),Rr="/",ME=me("/",!1),Hs=function(m,b,N){return{type:b==="*"?"multiplication":"division",right:N}},Gs=function(m,b){return b.reduce((N,U)=>({left:N,...U}),m)},mg=function(m,b,N){return{type:b==="+"?"addition":"subtraction",right:N}},BA="$((",R=me("$((",!1),q="))",Ce=me("))",!1),Ke=function(m){return m},Re="$(",ze=me("$(",!1),dt=function(m){return m},Ft="${",Nn=me("${",!1),qb=":-",S1=me(":-",!1),v1=function(m,b){return{name:m,defaultValue:b}},Jb=":-}",x1=me(":-}",!1),P1=function(m){return{name:m,defaultValue:[]}},Wb=":+",D1=me(":+",!1),k1=function(m,b){return{name:m,alternativeValue:b}},zb=":+}",R1=me(":+}",!1),F1=function(m){return{name:m,alternativeValue:[]}},Vb=function(m){return{name:m}},N1="$",L1=me("$",!1),T1=function(m){return e.isGlobPattern(m)},O1=function(m){return m},Xb=/^[a-zA-Z0-9_]/,Zb=Je([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),_b=function(){return T()},$b=/^[$@*?#a-zA-Z0-9_\-]/,eS=Je(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),M1=/^[(){}<>$|&; \t"']/,Eg=Je(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),tS=/^[<>&; \t"']/,rS=Je(["<",">","&",";"," "," ",'"',"'"],!1,!1),KE=/^[ \t]/,UE=Je([" "," "],!1,!1),Q=0,Me=0,QA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function T(){return r.substring(Me,Q)}function Z(){return Et(Me,Q)}function te(m,b){throw b=b!==void 0?b:Et(Me,Q),Ri([lt(m)],r.substring(Me,Q),b)}function Be(m,b){throw b=b!==void 0?b:Et(Me,Q),Ln(m,b)}function me(m,b){return{type:"literal",text:m,ignoreCase:b}}function Je(m,b,N){return{type:"class",parts:m,inverted:b,ignoreCase:N}}function nt(){return{type:"any"}}function wt(){return{type:"end"}}function lt(m){return{type:"other",description:m}}function it(m){var b=QA[m],N;if(b)return b;for(N=m-1;!QA[N];)N--;for(b=QA[N],b={line:b.line,column:b.column};Nd&&(d=Q,E=[]),E.push(m))}function Ln(m,b){return new Wl(m,null,null,b)}function Ri(m,b,N){return new Wl(Wl.buildMessage(m,b),m,b,N)}function bA(){var m,b;return m=Q,b=Mr(),b===t&&(b=null),b!==t&&(Me=m,b=s(b)),m=b,m}function Mr(){var m,b,N,U,ce;if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=Ca(),U!==t?(ce=ns(),ce===t&&(ce=null),ce!==t?(Me=m,b=o(b,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;if(m===t)if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=Ca(),U===t&&(U=null),U!==t?(Me=m,b=a(b,U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function ns(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Mr(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=l(N),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function Ca(){var m;return r.charCodeAt(Q)===59?(m=c,Q++):(m=t,I===0&&Qe(u)),m===t&&(r.charCodeAt(Q)===38?(m=g,Q++):(m=t,I===0&&Qe(f))),m}function Kr(){var m,b,N;return m=Q,b=K1(),b!==t?(N=age(),N===t&&(N=null),N!==t?(Me=m,b=h(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function age(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Age(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Kr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=p(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function Age(){var m;return r.substr(Q,2)===C?(m=C,Q+=2):(m=t,I===0&&Qe(y)),m===t&&(r.substr(Q,2)===B?(m=B,Q+=2):(m=t,I===0&&Qe(v))),m}function K1(){var m,b,N;return m=Q,b=uge(),b!==t?(N=lge(),N===t&&(N=null),N!==t?(Me=m,b=D(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function lge(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=cge(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=K1(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=L(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function cge(){var m;return r.substr(Q,2)===H?(m=H,Q+=2):(m=t,I===0&&Qe(j)),m===t&&(r.charCodeAt(Q)===124?(m=$,Q++):(m=t,I===0&&Qe(V))),m}function HE(){var m,b,N,U,ce,Se;if(m=Q,b=Z1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(_)),N!==t)if(U=G1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(Me=m,b=A(b,U),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;else Q=m,m=t;if(m===t)if(m=Q,b=Z1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(_)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=ae(b),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function uge(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,ss;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===40?(N=ge,Q++):(N=t,I===0&&Qe(re)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===41?(ht=O,Q++):(ht=t,I===0&&Qe(F)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Fp();hi!==t;)Jr.push(hi),hi=Fp();if(Jr!==t){for(hi=[],ss=He();ss!==t;)hi.push(ss),ss=He();hi!==t?(Me=m,b=ue(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===123?(N=he,Q++):(N=t,I===0&&Qe(ke)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===125?(ht=Fe,Q++):(ht=t,I===0&&Qe(Ne)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Fp();hi!==t;)Jr.push(hi),hi=Fp();if(Jr!==t){for(hi=[],ss=He();ss!==t;)hi.push(ss),ss=He();hi!==t?(Me=m,b=oe(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){for(N=[],U=HE();U!==t;)N.push(U),U=HE();if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t){if(ce=[],Se=H1(),Se!==t)for(;Se!==t;)ce.push(Se),Se=H1();else ce=t;if(ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=le(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=HE(),U!==t)for(;U!==t;)N.push(U),U=HE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=we(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}}}return m}function U1(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=GE(),U!==t)for(;U!==t;)N.push(U),U=GE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=fe(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t;return m}function H1(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t?(N=Fp(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();b!==t?(N=GE(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t)}return m}function Fp(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(qe.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(ne)),N===t&&(N=null),N!==t?(U=gge(),U!==t?(ce=GE(),ce!==t?(Me=m,b=Y(N,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function gge(){var m;return r.substr(Q,2)===pe?(m=pe,Q+=2):(m=t,I===0&&Qe(ie)),m===t&&(r.substr(Q,2)===de?(m=de,Q+=2):(m=t,I===0&&Qe(_e)),m===t&&(r.charCodeAt(Q)===62?(m=Pt,Q++):(m=t,I===0&&Qe(It)),m===t&&(r.substr(Q,3)===Or?(m=Or,Q+=3):(m=t,I===0&&Qe(ii)),m===t&&(r.substr(Q,2)===gi?(m=gi,Q+=2):(m=t,I===0&&Qe(hr)),m===t&&(r.charCodeAt(Q)===60?(m=fi,Q++):(m=t,I===0&&Qe(ni))))))),m}function GE(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(N=G1(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function G1(){var m,b,N;if(m=Q,b=[],N=Y1(),N!==t)for(;N!==t;)b.push(N),N=Y1();else b=t;return b!==t&&(Me=m,b=Os(b)),m=b,m}function Y1(){var m,b;return m=Q,b=fge(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=hge(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=pge(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=dge(),b!==t&&(Me=m,b=pr(b)),m=b))),m}function fge(){var m,b,N,U;return m=Q,r.substr(Q,2)===Ii?(b=Ii,Q+=2):(b=t,I===0&&Qe(es)),b!==t?(N=Ege(),N!==t?(r.charCodeAt(Q)===39?(U=ua,Q++):(U=t,I===0&&Qe(pA)),U!==t?(Me=m,b=ag(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function hge(){var m,b,N,U;return m=Q,r.charCodeAt(Q)===39?(b=ua,Q++):(b=t,I===0&&Qe(pA)),b!==t?(N=Cge(),N!==t?(r.charCodeAt(Q)===39?(U=ua,Q++):(U=t,I===0&&Qe(pA)),U!==t?(Me=m,b=ag(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function pge(){var m,b,N,U;if(m=Q,r.substr(Q,2)===ts?(b=ts,Q+=2):(b=t,I===0&&Qe(dA)),b!==t&&(Me=m,b=ga()),m=b,m===t)if(m=Q,r.charCodeAt(Q)===34?(b=yp,Q++):(b=t,I===0&&Qe(CA)),b!==t){for(N=[],U=j1();U!==t;)N.push(U),U=j1();N!==t?(r.charCodeAt(Q)===34?(U=yp,Q++):(U=t,I===0&&Qe(CA)),U!==t?(Me=m,b=mA(N),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function dge(){var m,b,N;if(m=Q,b=[],N=q1(),N!==t)for(;N!==t;)b.push(N),N=q1();else b=t;return b!==t&&(Me=m,b=mA(b)),m=b,m}function j1(){var m,b;return m=Q,b=V1(),b!==t&&(Me=m,b=wr(b)),m=b,m===t&&(m=Q,b=X1(),b!==t&&(Me=m,b=kl(b)),m=b,m===t&&(m=Q,b=oS(),b!==t&&(Me=m,b=Ag(b)),m=b,m===t&&(m=Q,b=mge(),b!==t&&(Me=m,b=Io(b)),m=b))),m}function q1(){var m,b;return m=Q,b=V1(),b!==t&&(Me=m,b=lg(b)),m=b,m===t&&(m=Q,b=X1(),b!==t&&(Me=m,b=wp(b)),m=b,m===t&&(m=Q,b=oS(),b!==t&&(Me=m,b=Bp(b)),m=b,m===t&&(m=Q,b=wge(),b!==t&&(Me=m,b=vr(b)),m=b,m===t&&(m=Q,b=yge(),b!==t&&(Me=m,b=Io(b)),m=b)))),m}function Cge(){var m,b,N;for(m=Q,b=[],se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(yo));N!==t;)b.push(N),se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(yo));return b!==t&&(Me=m,b=kn(b)),m=b,m}function mge(){var m,b,N;if(m=Q,b=[],N=J1(),N===t&&(cg.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt))),N!==t)for(;N!==t;)b.push(N),N=J1(),N===t&&(cg.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt)));else b=t;return b!==t&&(Me=m,b=kn(b)),m=b,m}function J1(){var m,b,N;return m=Q,r.substr(Q,2)===Rl?(b=Rl,Q+=2):(b=t,I===0&&Qe(Rn)),b!==t&&(Me=m,b=rs()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=is,Q++):(b=t,I===0&&Qe(gt)),b!==t?(wo.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(At)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t)),m}function Ege(){var m,b,N;for(m=Q,b=[],N=W1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(yo)));N!==t;)b.push(N),N=W1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(yo)));return b!==t&&(Me=m,b=kn(b)),m=b,m}function W1(){var m,b,N;return m=Q,r.substr(Q,2)===S?(b=S,Q+=2):(b=t,I===0&&Qe(Tt)),b!==t&&(Me=m,b=ug()),m=b,m===t&&(m=Q,r.substr(Q,2)===Fl?(b=Fl,Q+=2):(b=t,I===0&&Qe(Qp)),b!==t&&(Me=m,b=bp()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=is,Q++):(b=t,I===0&&Qe(gt)),b!==t?(Sp.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(vp)),N!==t?(Me=m,b=xp(),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===G?(b=G,Q+=2):(b=t,I===0&&Qe(yt)),b!==t&&(Me=m,b=EA()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ji?(b=Ji,Q+=2):(b=t,I===0&&Qe(Nl)),b!==t&&(Me=m,b=Xe()),m=b,m===t&&(m=Q,r.substr(Q,2)===fa?(b=fa,Q+=2):(b=t,I===0&&Qe(gg)),b!==t&&(Me=m,b=FE()),m=b,m===t&&(m=Q,r.substr(Q,2)===Pp?(b=Pp,Q+=2):(b=t,I===0&&Qe(NE)),b!==t&&(Me=m,b=ar()),m=b,m===t&&(m=Q,r.substr(Q,2)===Fn?(b=Fn,Q+=2):(b=t,I===0&&Qe(Ll)),b!==t&&(Me=m,b=Dp()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=is,Q++):(b=t,I===0&&Qe(gt)),b!==t?(Ms.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(ha)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Ige()))))))))),m}function Ige(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,ss,aS;return m=Q,r.charCodeAt(Q)===92?(b=is,Q++):(b=t,I===0&&Qe(gt)),b!==t?(N=iS(),N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Te?(b=Te,Q+=2):(b=t,I===0&&Qe(fg)),b!==t?(N=Q,U=Q,ce=iS(),ce!==t?(Se=Tn(),Se!==t?(ce=[ce,Se],U=ce):(Q=U,U=t)):(Q=U,U=t),U===t&&(U=iS()),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Tl?(b=Tl,Q+=2):(b=t,I===0&&Qe(Ks)),b!==t?(N=Q,U=Q,ce=Tn(),ce!==t?(Se=Tn(),Se!==t?(ht=Tn(),ht!==t?(Bt=Tn(),Bt!==t?(ce=[ce,Se,ht,Bt],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ol?(b=Ol,Q+=2):(b=t,I===0&&Qe(IA)),b!==t?(N=Q,U=Q,ce=Tn(),ce!==t?(Se=Tn(),Se!==t?(ht=Tn(),ht!==t?(Bt=Tn(),Bt!==t?(Jr=Tn(),Jr!==t?(hi=Tn(),hi!==t?(ss=Tn(),ss!==t?(aS=Tn(),aS!==t?(ce=[ce,Se,ht,Bt,Jr,hi,ss,aS],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=hg(N),m=b):(Q=m,m=t)):(Q=m,m=t)))),m}function iS(){var m;return pg.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(pa)),m}function Tn(){var m;return da.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(rt)),m}function yge(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,r.charCodeAt(Q)===92?(U=is,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=_1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t)),N!==t)for(;N!==t;)b.push(N),N=Q,r.charCodeAt(Q)===92?(U=is,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=_1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t));else b=t;return b!==t&&(Me=m,b=kn(b)),m=b,m}function nS(){var m,b,N,U,ce,Se;if(m=Q,r.charCodeAt(Q)===45?(b=yA,Q++):(b=t,I===0&&Qe(Ml)),b===t&&(r.charCodeAt(Q)===43?(b=Us,Q++):(b=t,I===0&&Qe(Kl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;if(N!==t)if(r.charCodeAt(Q)===46?(U=LE,Q++):(U=t,I===0&&Qe(kp)),U!==t){if(ce=[],qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne)),Se!==t)for(;Se!==t;)ce.push(Se),qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne));else ce=t;ce!==t?(Me=m,b=dg(b,N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;if(m===t){if(m=Q,r.charCodeAt(Q)===45?(b=yA,Q++):(b=t,I===0&&Qe(Ml)),b===t&&(r.charCodeAt(Q)===43?(b=Us,Q++):(b=t,I===0&&Qe(Kl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;N!==t?(Me=m,b=Rp(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;if(m===t&&(m=Q,b=oS(),b!==t&&(Me=m,b=TE(b)),m=b,m===t&&(m=Q,b=Hl(),b!==t&&(Me=m,b=Ul(b)),m=b,m===t)))if(m=Q,r.charCodeAt(Q)===40?(b=ge,Q++):(b=t,I===0&&Qe(re)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=z1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.charCodeAt(Q)===41?(Se=O,Q++):(Se=t,I===0&&Qe(F)),Se!==t?(Me=m,b=OE(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t}return m}function sS(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=nS(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=Cg,Q++):(Se=t,I===0&&Qe(wA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(ME))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=nS(),Bt!==t?(Me=U,ce=Hs(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=Cg,Q++):(Se=t,I===0&&Qe(wA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(ME))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=nS(),Bt!==t?(Me=U,ce=Hs(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Gs(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function z1(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=sS(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Us,Q++):(Se=t,I===0&&Qe(Kl)),Se===t&&(r.charCodeAt(Q)===45?(Se=yA,Q++):(Se=t,I===0&&Qe(Ml))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=sS(),Bt!==t?(Me=U,ce=mg(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Us,Q++):(Se=t,I===0&&Qe(Kl)),Se===t&&(r.charCodeAt(Q)===45?(Se=yA,Q++):(Se=t,I===0&&Qe(Ml))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=sS(),Bt!==t?(Me=U,ce=mg(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Gs(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function V1(){var m,b,N,U,ce,Se;if(m=Q,r.substr(Q,3)===BA?(b=BA,Q+=3):(b=t,I===0&&Qe(R)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=z1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.substr(Q,2)===q?(Se=q,Q+=2):(Se=t,I===0&&Qe(Ce)),Se!==t?(Me=m,b=Ke(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;return m}function X1(){var m,b,N,U;return m=Q,r.substr(Q,2)===Re?(b=Re,Q+=2):(b=t,I===0&&Qe(ze)),b!==t?(N=Mr(),N!==t?(r.charCodeAt(Q)===41?(U=O,Q++):(U=t,I===0&&Qe(F)),U!==t?(Me=m,b=dt(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function oS(){var m,b,N,U,ce,Se;return m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Nn)),b!==t?(N=Hl(),N!==t?(r.substr(Q,2)===qb?(U=qb,Q+=2):(U=t,I===0&&Qe(S1)),U!==t?(ce=U1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=v1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Nn)),b!==t?(N=Hl(),N!==t?(r.substr(Q,3)===Jb?(U=Jb,Q+=3):(U=t,I===0&&Qe(x1)),U!==t?(Me=m,b=P1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Nn)),b!==t?(N=Hl(),N!==t?(r.substr(Q,2)===Wb?(U=Wb,Q+=2):(U=t,I===0&&Qe(D1)),U!==t?(ce=U1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=k1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Nn)),b!==t?(N=Hl(),N!==t?(r.substr(Q,3)===zb?(U=zb,Q+=3):(U=t,I===0&&Qe(R1)),U!==t?(Me=m,b=F1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Nn)),b!==t?(N=Hl(),N!==t?(r.charCodeAt(Q)===125?(U=Fe,Q++):(U=t,I===0&&Qe(Ne)),U!==t?(Me=m,b=Vb(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.charCodeAt(Q)===36?(b=N1,Q++):(b=t,I===0&&Qe(L1)),b!==t?(N=Hl(),N!==t?(Me=m,b=Vb(N),m=b):(Q=m,m=t)):(Q=m,m=t)))))),m}function wge(){var m,b,N;return m=Q,b=Bge(),b!==t?(Me=Q,N=T1(b),N?N=void 0:N=t,N!==t?(Me=m,b=O1(b),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Bge(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,U=Q,I++,ce=$1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N!==t)for(;N!==t;)b.push(N),N=Q,U=Q,I++,ce=$1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Bo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t);else b=t;return b!==t&&(Me=m,b=kn(b)),m=b,m}function Z1(){var m,b,N;if(m=Q,b=[],Xb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Zb)),N!==t)for(;N!==t;)b.push(N),Xb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Zb));else b=t;return b!==t&&(Me=m,b=_b()),m=b,m}function Hl(){var m,b,N;if(m=Q,b=[],$b.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(eS)),N!==t)for(;N!==t;)b.push(N),$b.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(eS));else b=t;return b!==t&&(Me=m,b=_b()),m=b,m}function _1(){var m;return M1.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(Eg)),m}function $1(){var m;return tS.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(rS)),m}function He(){var m,b;if(m=[],KE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(UE)),b!==t)for(;b!==t;)m.push(b),KE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(UE));else m=t;return m}if(k=n(),k!==t&&Q===r.length)return k;throw k!==t&&Q{"use strict";function Qfe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Vl(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Vl)}Qfe(Vl,Error);Vl.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ne))}function Ne(ne,Y){return new Vl(ne,null,null,Y)}function oe(ne,Y,pe){return new Vl(Vl.buildMessage(ne,Y),ne,Y,pe)}function le(){var ne,Y,pe,ie;return ne=v,Y=we(),Y!==t?(r.charCodeAt(v)===47?(pe=s,v++):(pe=t,$===0&&Fe(o)),pe!==t?(ie=we(),ie!==t?(D=ne,Y=a(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=we(),Y!==t&&(D=ne,Y=l(Y)),ne=Y),ne}function we(){var ne,Y,pe,ie;return ne=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(pe=c,v++):(pe=t,$===0&&Fe(u)),pe!==t?(ie=qe(),ie!==t?(D=ne,Y=g(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=fe(),Y!==t&&(D=ne,Y=f(Y)),ne=Y),ne}function fe(){var ne,Y,pe,ie,de;return ne=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Fe(u)),Y!==t?(pe=Ae(),pe!==t?(r.charCodeAt(v)===47?(ie=s,v++):(ie=t,$===0&&Fe(o)),ie!==t?(de=Ae(),de!==t?(D=ne,Y=h(),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=Ae(),Y!==t&&(D=ne,Y=h()),ne=Y),ne}function Ae(){var ne,Y,pe;if(ne=v,Y=[],p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C)),pe!==t)for(;pe!==t;)Y.push(pe),p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}function qe(){var ne,Y,pe;if(ne=v,Y=[],y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B)),pe!==t)for(;pe!==t;)Y.push(pe),y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function fU(r){return typeof r>"u"||r===null}function Sfe(r){return typeof r=="object"&&r!==null}function vfe(r){return Array.isArray(r)?r:fU(r)?[]:[r]}function xfe(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function Wp(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Wp.prototype=Object.create(Error.prototype);Wp.prototype.constructor=Wp;Wp.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};hU.exports=Wp});var CU=w((IZe,dU)=>{"use strict";var pU=Zl();function HS(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}HS.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),pU.repeat(" ",e)+i+a+s+` +`+pU.repeat(" ",e+this.position-n+i.length)+"^"};HS.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: +`+t)),i};dU.exports=HS});var si=w((yZe,EU)=>{"use strict";var mU=kg(),kfe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Rfe=["scalar","sequence","mapping"];function Ffe(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function Nfe(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(kfe.indexOf(t)===-1)throw new mU('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Ffe(e.styleAliases||null),Rfe.indexOf(this.kind)===-1)throw new mU('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}EU.exports=Nfe});var _l=w((wZe,yU)=>{"use strict";var IU=Zl(),gI=kg(),Lfe=si();function GS(r,e,t){var i=[];return r.include.forEach(function(n){t=GS(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function Tfe(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var Ofe=si();wU.exports=new Ofe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var bU=w((QZe,QU)=>{"use strict";var Mfe=si();QU.exports=new Mfe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var vU=w((bZe,SU)=>{"use strict";var Kfe=si();SU.exports=new Kfe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var fI=w((SZe,xU)=>{"use strict";var Ufe=_l();xU.exports=new Ufe({explicit:[BU(),bU(),vU()]})});var DU=w((vZe,PU)=>{"use strict";var Hfe=si();function Gfe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function Yfe(){return null}function jfe(r){return r===null}PU.exports=new Hfe("tag:yaml.org,2002:null",{kind:"scalar",resolve:Gfe,construct:Yfe,predicate:jfe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var RU=w((xZe,kU)=>{"use strict";var qfe=si();function Jfe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function Wfe(r){return r==="true"||r==="True"||r==="TRUE"}function zfe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}kU.exports=new qfe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Jfe,construct:Wfe,predicate:zfe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var NU=w((PZe,FU)=>{"use strict";var Vfe=Zl(),Xfe=si();function Zfe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function _fe(r){return 48<=r&&r<=55}function $fe(r){return 48<=r&&r<=57}function ehe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var OU=w((DZe,TU)=>{"use strict";var LU=Zl(),ihe=si(),nhe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function she(r){return!(r===null||!nhe.test(r)||r[r.length-1]==="_")}function ohe(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var ahe=/^[-+]?[0-9]+e/;function Ahe(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(LU.isNegativeZero(r))return"-0.0";return t=r.toString(10),ahe.test(t)?t.replace("e",".e"):t}function lhe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||LU.isNegativeZero(r))}TU.exports=new ihe("tag:yaml.org,2002:float",{kind:"scalar",resolve:she,construct:ohe,predicate:lhe,represent:Ahe,defaultStyle:"lowercase"})});var YS=w((kZe,MU)=>{"use strict";var che=_l();MU.exports=new che({include:[fI()],implicit:[DU(),RU(),NU(),OU()]})});var jS=w((RZe,KU)=>{"use strict";var uhe=_l();KU.exports=new uhe({include:[YS()]})});var YU=w((FZe,GU)=>{"use strict";var ghe=si(),UU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),HU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function fhe(r){return r===null?!1:UU.exec(r)!==null||HU.exec(r)!==null}function hhe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=UU.exec(r),e===null&&(e=HU.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function phe(r){return r.toISOString()}GU.exports=new ghe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:fhe,construct:hhe,instanceOf:Date,represent:phe})});var qU=w((NZe,jU)=>{"use strict";var dhe=si();function Che(r){return r==="<<"||r===null}jU.exports=new dhe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Che})});var zU=w((LZe,WU)=>{"use strict";var $l;try{JU=J,$l=JU("buffer").Buffer}catch{}var JU,mhe=si(),qS=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function Ehe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=qS;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function Ihe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=qS,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),$l?$l.from?$l.from(a):new $l(a):a}function yhe(r){var e="",t=0,i,n,s=r.length,o=qS;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function whe(r){return $l&&$l.isBuffer(r)}WU.exports=new mhe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ehe,construct:Ihe,predicate:whe,represent:yhe})});var XU=w((TZe,VU)=>{"use strict";var Bhe=si(),Qhe=Object.prototype.hasOwnProperty,bhe=Object.prototype.toString;function She(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var xhe=si(),Phe=Object.prototype.toString;function Dhe(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var Rhe=si(),Fhe=Object.prototype.hasOwnProperty;function Nhe(r){if(r===null)return!0;var e,t=r;for(e in t)if(Fhe.call(t,e)&&t[e]!==null)return!1;return!0}function Lhe(r){return r!==null?r:{}}$U.exports=new Rhe("tag:yaml.org,2002:set",{kind:"mapping",resolve:Nhe,construct:Lhe})});var Fg=w((KZe,t2)=>{"use strict";var The=_l();t2.exports=new The({include:[jS()],implicit:[YU(),qU()],explicit:[zU(),XU(),_U(),e2()]})});var i2=w((UZe,r2)=>{"use strict";var Ohe=si();function Mhe(){return!0}function Khe(){}function Uhe(){return""}function Hhe(r){return typeof r>"u"}r2.exports=new Ohe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Mhe,construct:Khe,predicate:Hhe,represent:Uhe})});var s2=w((HZe,n2)=>{"use strict";var Ghe=si();function Yhe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function jhe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function qhe(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function Jhe(r){return Object.prototype.toString.call(r)==="[object RegExp]"}n2.exports=new Ghe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:Yhe,construct:jhe,predicate:Jhe,represent:qhe})});var A2=w((GZe,a2)=>{"use strict";var hI;try{o2=J,hI=o2("esprima")}catch{typeof window<"u"&&(hI=window.esprima)}var o2,Whe=si();function zhe(r){if(r===null)return!1;try{var e="("+r+")",t=hI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function Vhe(r){var e="("+r+")",t=hI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function Xhe(r){return r.toString()}function Zhe(r){return Object.prototype.toString.call(r)==="[object Function]"}a2.exports=new Whe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:zhe,construct:Vhe,predicate:Zhe,represent:Xhe})});var zp=w((YZe,c2)=>{"use strict";var l2=_l();c2.exports=l2.DEFAULT=new l2({include:[Fg()],explicit:[i2(),s2(),A2()]})});var P2=w((jZe,Vp)=>{"use strict";var ya=Zl(),C2=kg(),_he=CU(),m2=Fg(),$he=zp(),DA=Object.prototype.hasOwnProperty,pI=1,E2=2,I2=3,dI=4,JS=1,epe=2,u2=3,tpe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,rpe=/[\x85\u2028\u2029]/,ipe=/[,\[\]\{\}]/,y2=/^(?:!|!!|![a-z\-]+!)$/i,w2=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function g2(r){return Object.prototype.toString.call(r)}function vo(r){return r===10||r===13}function tc(r){return r===9||r===32}function un(r){return r===9||r===32||r===10||r===13}function Ng(r){return r===44||r===91||r===93||r===123||r===125}function npe(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function spe(r){return r===120?2:r===117?4:r===85?8:0}function ope(r){return 48<=r&&r<=57?r-48:-1}function f2(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` +`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function ape(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var B2=new Array(256),Q2=new Array(256);for(ec=0;ec<256;ec++)B2[ec]=f2(ec)?1:0,Q2[ec]=f2(ec);var ec;function Ape(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||$he,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function b2(r,e){return new C2(e,new _he(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function ft(r,e){throw b2(r,e)}function CI(r,e){r.onWarning&&r.onWarning.call(null,b2(r,e))}var h2={YAML:function(e,t,i){var n,s,o;e.version!==null&&ft(e,"duplication of %YAML directive"),i.length!==1&&ft(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&ft(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&ft(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&CI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&&ft(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],y2.test(n)||ft(e,"ill-formed tag handle (first argument) of the TAG directive"),DA.call(e.tagMap,n)&&ft(e,'there is a previously declared suffix for "'+n+'" tag handle'),w2.test(s)||ft(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function PA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=ya.repeat(` +`,e-1))}function lpe(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),un(h)||Ng(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),un(n)||t&&Ng(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),un(n)||t&&Ng(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),un(i))break}else{if(r.position===r.lineStart&&mI(r)||t&&Ng(h))break;if(vo(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,zr(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(PA(r,s,o,!1),zS(r,r.line-l),s=o=r.position,a=!1),tc(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return PA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function cpe(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(PA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else vo(t)?(PA(r,i,n,!0),zS(r,zr(r,!1,e)),i=n=r.position):r.position===r.lineStart&&mI(r)?ft(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);ft(r,"unexpected end of the stream within a single quoted scalar")}function upe(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return PA(r,t,r.position,!0),r.position++,!0;if(a===92){if(PA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),vo(a))zr(r,!1,e);else if(a<256&&B2[a])r.result+=Q2[a],r.position++;else if((o=spe(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=npe(a))>=0?s=(s<<4)+o:ft(r,"expected hexadecimal character");r.result+=ape(s),r.position++}else ft(r,"unknown escape sequence");t=i=r.position}else vo(a)?(PA(r,t,i,!0),zS(r,zr(r,!1,e)),t=i=r.position):r.position===r.lineStart&&mI(r)?ft(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}ft(r,"unexpected end of the stream within a double quoted scalar")}function gpe(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,y;if(y=r.input.charCodeAt(r.position),y===91)l=93,g=!1,s=[];else if(y===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),y=r.input.charCodeAt(++r.position);y!==0;){if(zr(r,!0,e),y=r.input.charCodeAt(r.position),y===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||ft(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,y===63&&(a=r.input.charCodeAt(r.position+1),un(a)&&(c=u=!0,r.position++,zr(r,!0,e))),i=r.line,Tg(r,e,pI,!1,!0),p=r.tag,h=r.result,zr(r,!0,e),y=r.input.charCodeAt(r.position),(u||r.line===i)&&y===58&&(c=!0,y=r.input.charCodeAt(++r.position),zr(r,!0,e),Tg(r,e,pI,!1,!0),C=r.result),g?Lg(r,s,f,p,h,C):c?s.push(Lg(r,null,f,p,h,C)):s.push(h),zr(r,!0,e),y=r.input.charCodeAt(r.position),y===44?(t=!0,y=r.input.charCodeAt(++r.position)):t=!1}ft(r,"unexpected end of the stream within a flow collection")}function fpe(r,e){var t,i,n=JS,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)JS===n?n=g===43?u2:epe:ft(r,"repeat of a chomping mode identifier");else if((u=ope(g))>=0)u===0?ft(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?ft(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(tc(g)){do g=r.input.charCodeAt(++r.position);while(tc(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!vo(g)&&g!==0)}for(;g!==0;){for(WS(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),vo(g)){l++;continue}if(r.lineIndente)&&l!==0)ft(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(Tg(r,e,dI,!0,n)&&(p?f=r.result:h=r.result),p||(Lg(r,c,u,g,f,h,s,o),g=f=h=null),zr(r,!0,-1),y=r.input.charCodeAt(r.position)),r.lineIndent>e&&y!==0)ft(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):ft(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):ft(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function mpe(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(zr(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&&ft(r,"directive name must not be less than one character in length");o!==0;){for(;tc(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!vo(o));break}if(vo(o))break;for(t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&WS(r),DA.call(h2,i)?h2[i](r,i,n):CI(r,'unknown document directive "'+i+'"')}if(zr(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,zr(r,!0,-1)):s&&ft(r,"directives end mark is expected"),Tg(r,r.lineIndent-1,dI,!1,!0),zr(r,!0,-1),r.checkLineBreaks&&rpe.test(r.input.slice(e,r.position))&&CI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&mI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,zr(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=S2(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),v2(r,e,ya.extend({schema:m2},t))}function Ipe(r,e){return x2(r,ya.extend({schema:m2},e))}Vp.exports.loadAll=v2;Vp.exports.load=x2;Vp.exports.safeLoadAll=Epe;Vp.exports.safeLoad=Ipe});var _2=w((qZe,_S)=>{"use strict";var Zp=Zl(),_p=kg(),ype=zp(),wpe=Fg(),O2=Object.prototype.toString,M2=Object.prototype.hasOwnProperty,Bpe=9,Xp=10,Qpe=13,bpe=32,Spe=33,vpe=34,K2=35,xpe=37,Ppe=38,Dpe=39,kpe=42,U2=44,Rpe=45,H2=58,Fpe=61,Npe=62,Lpe=63,Tpe=64,G2=91,Y2=93,Ope=96,j2=123,Mpe=124,q2=125,Ni={};Ni[0]="\\0";Ni[7]="\\a";Ni[8]="\\b";Ni[9]="\\t";Ni[10]="\\n";Ni[11]="\\v";Ni[12]="\\f";Ni[13]="\\r";Ni[27]="\\e";Ni[34]='\\"';Ni[92]="\\\\";Ni[133]="\\N";Ni[160]="\\_";Ni[8232]="\\L";Ni[8233]="\\P";var Kpe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function Upe(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n0?r.charCodeAt(s-1):null,f=f&&R2(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!Og(o))return EI;a=s>0?r.charCodeAt(s-1):null,f=f&&R2(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?W2:z2:t>9&&J2(r)?EI:c?X2:V2}function Jpe(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&Kpe.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return Gpe(r,l)}switch(qpe(e,o,r.indent,s,a)){case W2:return e;case z2:return"'"+e.replace(/'/g,"''")+"'";case V2:return"|"+F2(e,r.indent)+N2(k2(e,n));case X2:return">"+F2(e,r.indent)+N2(k2(Wpe(e,s),n));case EI:return'"'+zpe(e,s)+'"';default:throw new _p("impossible error: invalid scalar style")}}()}function F2(r,e){var t=J2(r)?String(e):"",i=r[r.length-1]===` +`,n=i&&(r[r.length-2]===` +`||r===` +`),s=n?"+":i?"":"-";return t+s+` +`}function N2(r){return r[r.length-1]===` +`?r.slice(0,-1):r}function Wpe(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` +`);return c=c!==-1?c:r.length,t.lastIndex=c,L2(r.slice(0,c),e)}(),n=r[0]===` +`||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` +`:"")+L2(l,e),n=s}return i}function L2(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` +`+r.slice(n,s),n=s+1),o=a;return l+=` +`,r.length-n>e&&o>n?l+=r.slice(n,o)+` +`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function zpe(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=D2((t-55296)*1024+i-56320+65536),s++;continue}n=Ni[t],e+=!n&&Og(t)?r[s]:n||D2(t)}return e}function Vpe(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),rc(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function _pe(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new _p("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&Xp===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=VS(r,e)),rc(r,e+1,u,!0,g)&&(r.dump&&Xp===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function T2(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function rc(r,e,t,i,n,s){r.tag=null,r.dump=t,T2(r,t,!1)||T2(r,t,!0);var o=O2.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(_pe(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Zpe(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(Xpe(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Vpe(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&Jpe(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new _p("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function $pe(r,e){var t=[],i=[],n,s;for(XS(r,t,i),n=0,s=i.length;n{"use strict";var II=P2(),$2=_2();function yI(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Fr.exports.Type=si();Fr.exports.Schema=_l();Fr.exports.FAILSAFE_SCHEMA=fI();Fr.exports.JSON_SCHEMA=YS();Fr.exports.CORE_SCHEMA=jS();Fr.exports.DEFAULT_SAFE_SCHEMA=Fg();Fr.exports.DEFAULT_FULL_SCHEMA=zp();Fr.exports.load=II.load;Fr.exports.loadAll=II.loadAll;Fr.exports.safeLoad=II.safeLoad;Fr.exports.safeLoadAll=II.safeLoadAll;Fr.exports.dump=$2.dump;Fr.exports.safeDump=$2.safeDump;Fr.exports.YAMLException=kg();Fr.exports.MINIMAL_SCHEMA=fI();Fr.exports.SAFE_SCHEMA=Fg();Fr.exports.DEFAULT_SCHEMA=zp();Fr.exports.scan=yI("scan");Fr.exports.parse=yI("parse");Fr.exports.compose=yI("compose");Fr.exports.addConstructor=yI("addConstructor")});var rH=w((WZe,tH)=>{"use strict";var tde=eH();tH.exports=tde});var nH=w((zZe,iH)=>{"use strict";function rde(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function ic(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,ic)}rde(ic,Error);ic.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ke]:Ce})))},H=function(R){return R},j=function(R){return R},$=Ms("correct indentation"),V=" ",W=ar(" ",!1),_=function(R){return R.length===BA*mg},A=function(R){return R.length===(BA+1)*mg},ae=function(){return BA++,!0},ge=function(){return BA--,!0},re=function(){return gg()},O=Ms("pseudostring"),F=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Fn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),he=/^[^\r\n\t ,\][{}:#"']/,ke=Fn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Fe=function(){return gg().replace(/^ *| *$/g,"")},Ne="--",oe=ar("--",!1),le=/^[a-zA-Z\/0-9]/,we=Fn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,Ae=Fn(["\r",` +`," "," ",":",","],!0,!1),qe="null",ne=ar("null",!1),Y=function(){return null},pe="true",ie=ar("true",!1),de=function(){return!0},_e="false",Pt=ar("false",!1),It=function(){return!1},Or=Ms("string"),ii='"',gi=ar('"',!1),hr=function(){return""},fi=function(R){return R},ni=function(R){return R.join("")},Os=/^[^"\\\0-\x1F\x7F]/,pr=Fn(['"',"\\",["\0",""],"\x7F"],!0,!1),Ii='\\"',es=ar('\\"',!1),ua=function(){return'"'},pA="\\\\",ag=ar("\\\\",!1),ts=function(){return"\\"},dA="\\/",ga=ar("\\/",!1),yp=function(){return"/"},CA="\\b",mA=ar("\\b",!1),wr=function(){return"\b"},kl="\\f",Ag=ar("\\f",!1),Io=function(){return"\f"},lg="\\n",wp=ar("\\n",!1),Bp=function(){return` +`},vr="\\r",se=ar("\\r",!1),yo=function(){return"\r"},kn="\\t",cg=ar("\\t",!1),Qt=function(){return" "},Rl="\\u",Rn=ar("\\u",!1),rs=function(R,q,Ce,Ke){return String.fromCharCode(parseInt(`0x${R}${q}${Ce}${Ke}`))},is=/^[0-9a-fA-F]/,gt=Fn([["0","9"],["a","f"],["A","F"]],!1,!1),wo=Ms("blank space"),At=/^[ \t]/,an=Fn([" "," "],!1,!1),S=Ms("white space"),Tt=/^[ \t\n\r]/,ug=Fn([" "," ",` +`,"\r"],!1,!1),Fl=`\r +`,Qp=ar(`\r +`,!1),bp=` +`,Sp=ar(` +`,!1),vp="\r",xp=ar("\r",!1),G=0,yt=0,EA=[{line:1,column:1}],Ji=0,Nl=[],Xe=0,fa;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function gg(){return r.substring(yt,G)}function FE(){return An(yt,G)}function Pp(R,q){throw q=q!==void 0?q:An(yt,G),Tl([Ms(R)],r.substring(yt,G),q)}function NE(R,q){throw q=q!==void 0?q:An(yt,G),fg(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Fn(R,q,Ce){return{type:"class",parts:R,inverted:q,ignoreCase:Ce}}function Ll(){return{type:"any"}}function Dp(){return{type:"end"}}function Ms(R){return{type:"other",description:R}}function ha(R){var q=EA[R],Ce;if(q)return q;for(Ce=R-1;!EA[Ce];)Ce--;for(q=EA[Ce],q={line:q.line,column:q.column};CeJi&&(Ji=G,Nl=[]),Nl.push(R))}function fg(R,q){return new ic(R,null,null,q)}function Tl(R,q,Ce){return new ic(ic.buildMessage(R,q),R,q,Ce)}function Ks(){var R;return R=hg(),R}function Ol(){var R,q,Ce;for(R=G,q=[],Ce=IA();Ce!==t;)q.push(Ce),Ce=IA();return q!==t&&(yt=R,q=s(q)),R=q,R}function IA(){var R,q,Ce,Ke,Re;return R=G,q=da(),q!==t?(r.charCodeAt(G)===45?(Ce=o,G++):(Ce=t,Xe===0&&Te(a)),Ce!==t?(Ke=Rr(),Ke!==t?(Re=pa(),Re!==t?(yt=R,q=l(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function hg(){var R,q,Ce;for(R=G,q=[],Ce=pg();Ce!==t;)q.push(Ce),Ce=pg();return q!==t&&(yt=R,q=c(q)),R=q,R}function pg(){var R,q,Ce,Ke,Re,ze,dt,Ft,Nn;if(R=G,q=Rr(),q===t&&(q=null),q!==t){if(Ce=G,r.charCodeAt(G)===35?(Ke=u,G++):(Ke=t,Xe===0&&Te(g)),Ke!==t){if(Re=[],ze=G,dt=G,Xe++,Ft=Gs(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t),ze!==t)for(;ze!==t;)Re.push(ze),ze=G,dt=G,Xe++,Ft=Gs(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t);else Re=t;Re!==t?(Ke=[Ke,Re],Ce=Ke):(G=Ce,Ce=t)}else G=Ce,Ce=t;if(Ce===t&&(Ce=null),Ce!==t){if(Ke=[],Re=Hs(),Re!==t)for(;Re!==t;)Ke.push(Re),Re=Hs();else Ke=t;Ke!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=da(),q!==t?(Ce=Ml(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=pa(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=da(),q!==t?(Ce=Us(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=pa(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=da(),q!==t)if(Ce=Us(),Ce!==t)if(Ke=Rr(),Ke!==t)if(Re=LE(),Re!==t){if(ze=[],dt=Hs(),dt!==t)for(;dt!==t;)ze.push(dt),dt=Hs();else ze=t;ze!==t?(yt=R,q=y(Ce,Re),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=da(),q!==t)if(Ce=Us(),Ce!==t){if(Ke=[],Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Us(),Nn!==t?(yt=Re,ze=D(Ce,Nn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t),Re!==t)for(;Re!==t;)Ke.push(Re),Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Us(),Nn!==t?(yt=Re,ze=D(Ce,Nn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t);else Ke=t;Ke!==t?(Re=Rr(),Re===t&&(Re=null),Re!==t?(r.charCodeAt(G)===58?(ze=p,G++):(ze=t,Xe===0&&Te(C)),ze!==t?(dt=Rr(),dt===t&&(dt=null),dt!==t?(Ft=pa(),Ft!==t?(yt=R,q=L(Ce,Ke,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function pa(){var R,q,Ce,Ke,Re,ze,dt;if(R=G,q=G,Xe++,Ce=G,Ke=Gs(),Ke!==t?(Re=rt(),Re!==t?(r.charCodeAt(G)===45?(ze=o,G++):(ze=t,Xe===0&&Te(a)),ze!==t?(dt=Rr(),dt!==t?(Ke=[Ke,Re,ze,dt],Ce=Ke):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t),Xe--,Ce!==t?(G=q,q=void 0):q=t,q!==t?(Ce=Hs(),Ce!==t?(Ke=Bo(),Ke!==t?(Re=Ol(),Re!==t?(ze=yA(),ze!==t?(yt=R,q=H(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Gs(),q!==t?(Ce=Bo(),Ce!==t?(Ke=hg(),Ke!==t?(Re=yA(),Re!==t?(yt=R,q=H(Ke),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=Kl(),q!==t){if(Ce=[],Ke=Hs(),Ke!==t)for(;Ke!==t;)Ce.push(Ke),Ke=Hs();else Ce=t;Ce!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function da(){var R,q,Ce;for(Xe++,R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=_(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),Xe--,R===t&&(q=t,Xe===0&&Te($)),R}function rt(){var R,q,Ce;for(R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=A(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),R}function Bo(){var R;return yt=G,R=ae(),R?R=void 0:R=t,R}function yA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function Ml(){var R;return R=Ul(),R===t&&(R=kp()),R}function Us(){var R,q,Ce;if(R=Ul(),R===t){if(R=G,q=[],Ce=dg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=dg();else q=t;q!==t&&(yt=R,q=re()),R=q}return R}function Kl(){var R;return R=Rp(),R===t&&(R=TE(),R===t&&(R=Ul(),R===t&&(R=kp()))),R}function LE(){var R;return R=Rp(),R===t&&(R=Ul(),R===t&&(R=dg())),R}function kp(){var R,q,Ce,Ke,Re,ze;if(Xe++,R=G,F.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ue)),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(O)),R}function dg(){var R,q,Ce,Ke,Re;if(R=G,r.substr(G,2)===Ne?(q=Ne,G+=2):(q=t,Xe===0&&Te(oe)),q===t&&(q=null),q!==t)if(le.test(r.charAt(G))?(Ce=r.charAt(G),G++):(Ce=t,Xe===0&&Te(we)),Ce!==t){for(Ke=[],fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Re!==t;)Ke.push(Re),fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Ke!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function Rp(){var R,q;return R=G,r.substr(G,4)===qe?(q=qe,G+=4):(q=t,Xe===0&&Te(ne)),q!==t&&(yt=R,q=Y()),R=q,R}function TE(){var R,q;return R=G,r.substr(G,4)===pe?(q=pe,G+=4):(q=t,Xe===0&&Te(ie)),q!==t&&(yt=R,q=de()),R=q,R===t&&(R=G,r.substr(G,5)===_e?(q=_e,G+=5):(q=t,Xe===0&&Te(Pt)),q!==t&&(yt=R,q=It()),R=q),R}function Ul(){var R,q,Ce,Ke;return Xe++,R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(r.charCodeAt(G)===34?(Ce=ii,G++):(Ce=t,Xe===0&&Te(gi)),Ce!==t?(yt=R,q=hr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(Ce=OE(),Ce!==t?(r.charCodeAt(G)===34?(Ke=ii,G++):(Ke=t,Xe===0&&Te(gi)),Ke!==t?(yt=R,q=fi(Ce),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),Xe--,R===t&&(q=t,Xe===0&&Te(Or)),R}function OE(){var R,q,Ce;if(R=G,q=[],Ce=Cg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=Cg();else q=t;return q!==t&&(yt=R,q=ni(q)),R=q,R}function Cg(){var R,q,Ce,Ke,Re,ze;return Os.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(pr)),R===t&&(R=G,r.substr(G,2)===Ii?(q=Ii,G+=2):(q=t,Xe===0&&Te(es)),q!==t&&(yt=R,q=ua()),R=q,R===t&&(R=G,r.substr(G,2)===pA?(q=pA,G+=2):(q=t,Xe===0&&Te(ag)),q!==t&&(yt=R,q=ts()),R=q,R===t&&(R=G,r.substr(G,2)===dA?(q=dA,G+=2):(q=t,Xe===0&&Te(ga)),q!==t&&(yt=R,q=yp()),R=q,R===t&&(R=G,r.substr(G,2)===CA?(q=CA,G+=2):(q=t,Xe===0&&Te(mA)),q!==t&&(yt=R,q=wr()),R=q,R===t&&(R=G,r.substr(G,2)===kl?(q=kl,G+=2):(q=t,Xe===0&&Te(Ag)),q!==t&&(yt=R,q=Io()),R=q,R===t&&(R=G,r.substr(G,2)===lg?(q=lg,G+=2):(q=t,Xe===0&&Te(wp)),q!==t&&(yt=R,q=Bp()),R=q,R===t&&(R=G,r.substr(G,2)===vr?(q=vr,G+=2):(q=t,Xe===0&&Te(se)),q!==t&&(yt=R,q=yo()),R=q,R===t&&(R=G,r.substr(G,2)===kn?(q=kn,G+=2):(q=t,Xe===0&&Te(cg)),q!==t&&(yt=R,q=Qt()),R=q,R===t&&(R=G,r.substr(G,2)===Rl?(q=Rl,G+=2):(q=t,Xe===0&&Te(Rn)),q!==t?(Ce=wA(),Ce!==t?(Ke=wA(),Ke!==t?(Re=wA(),Re!==t?(ze=wA(),ze!==t?(yt=R,q=rs(Ce,Ke,Re,ze),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function wA(){var R;return is.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(gt)),R}function Rr(){var R,q;if(Xe++,R=[],At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an)),q!==t)for(;q!==t;)R.push(q),At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(wo)),R}function ME(){var R,q;if(Xe++,R=[],Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ug)),q!==t)for(;q!==t;)R.push(q),Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ug));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(S)),R}function Hs(){var R,q,Ce,Ke,Re,ze;if(R=G,q=Gs(),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Gs(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Gs(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)}else G=R,R=t;return R}function Gs(){var R;return r.substr(G,2)===Fl?(R=Fl,G+=2):(R=t,Xe===0&&Te(Qp)),R===t&&(r.charCodeAt(G)===10?(R=bp,G++):(R=t,Xe===0&&Te(Sp)),R===t&&(r.charCodeAt(G)===13?(R=vp,G++):(R=t,Xe===0&&Te(xp)))),R}let mg=2,BA=0;if(fa=n(),fa!==t&&G===r.length)return fa;throw fa!==t&&G{"use strict";var Ade=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=Ade(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};ev.exports=lH;ev.exports.default=lH});var uH=w((e_e,lde)=>{lde.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var nc=w(Mn=>{"use strict";var fH=uH(),xo=process.env;Object.defineProperty(Mn,"_vendors",{value:fH.map(function(r){return r.constant})});Mn.name=null;Mn.isPR=null;fH.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return gH(i)});if(Mn[r.constant]=t,t)switch(Mn.name=r.name,typeof r.pr){case"string":Mn.isPR=!!xo[r.pr];break;case"object":"env"in r.pr?Mn.isPR=r.pr.env in xo&&xo[r.pr.env]!==r.pr.ne:"any"in r.pr?Mn.isPR=r.pr.any.some(function(i){return!!xo[i]}):Mn.isPR=gH(r.pr);break;default:Mn.isPR=null}});Mn.isCI=!!(xo.CI||xo.CONTINUOUS_INTEGRATION||xo.BUILD_NUMBER||xo.RUN_ID||Mn.name);function gH(r){return typeof r=="string"?!!xo[r]:Object.keys(r).every(function(e){return xo[e]===r[e]})}});var gn={};ut(gn,{KeyRelationship:()=>sc,applyCascade:()=>nd,base64RegExp:()=>mH,colorStringAlphaRegExp:()=>CH,colorStringRegExp:()=>dH,computeKey:()=>kA,getPrintable:()=>Vr,hasExactLength:()=>BH,hasForbiddenKeys:()=>Hde,hasKeyRelationship:()=>av,hasMaxLength:()=>Qde,hasMinLength:()=>Bde,hasMutuallyExclusiveKeys:()=>Gde,hasRequiredKeys:()=>Ude,hasUniqueItems:()=>bde,isArray:()=>pde,isAtLeast:()=>xde,isAtMost:()=>Pde,isBase64:()=>Mde,isBoolean:()=>gde,isDate:()=>hde,isDict:()=>Cde,isEnum:()=>Vi,isHexColor:()=>Ode,isISO8601:()=>Tde,isInExclusiveRange:()=>kde,isInInclusiveRange:()=>Dde,isInstanceOf:()=>Ede,isInteger:()=>Rde,isJSON:()=>Kde,isLiteral:()=>cde,isLowerCase:()=>Fde,isNegative:()=>Sde,isNullable:()=>wde,isNumber:()=>fde,isObject:()=>mde,isOneOf:()=>Ide,isOptional:()=>yde,isPositive:()=>vde,isString:()=>id,isTuple:()=>dde,isUUID4:()=>Lde,isUnknown:()=>wH,isUpperCase:()=>Nde,iso8601RegExp:()=>ov,makeCoercionFn:()=>oc,makeSetter:()=>yH,makeTrait:()=>IH,makeValidator:()=>bt,matchesRegExp:()=>sd,plural:()=>vI,pushError:()=>pt,simpleKeyRegExp:()=>pH,uuid4RegExp:()=>EH});function bt({test:r}){return IH(r)()}function Vr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function kA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:pH.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function oc(r,e){return t=>{let i=r[e];return r[e]=t,oc(r,e).bind(null,i)}}function yH(r,e){return t=>{r[e]=t}}function vI(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}function cde(r){return bt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Vr(r)})`):!0})}function Vi(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return bt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Vr(i)})`)})}var pH,dH,CH,mH,EH,ov,IH,wH,id,ude,gde,fde,hde,pde,dde,Cde,mde,Ede,Ide,nd,yde,wde,Bde,Qde,BH,bde,Sde,vde,xde,Pde,Dde,kde,Rde,sd,Fde,Nde,Lde,Tde,Ode,Mde,Kde,Ude,Hde,Gde,sc,Yde,av,as=Pge(()=>{pH=/^[a-zA-Z_][a-zA-Z0-9_]*$/,dH=/^#[0-9a-f]{6}$/i,CH=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,mH=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,EH=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,ov=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,IH=r=>()=>r;wH=()=>bt({test:(r,e)=>!0});id=()=>bt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Vr(r)})`):!0});ude=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),gde=()=>bt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=ude.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Vr(r)})`)}return!0}}),fde=()=>bt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Vr(r)})`)}return!0}}),hde=()=>bt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&ov.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Vr(r)})`)}return!0}}),pde=(r,{delimiter:e}={})=>bt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Vr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=BH(r.length);return bt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Vr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;abt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Vr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return bt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Vr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:kA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:kA(n,l),coercion:oc(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:kA(n,l)}),`Extraneous property (got ${Vr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:yH(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Ede=r=>bt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Vr(e)})`)}),Ide=(r,{exclusive:e=!1}={})=>bt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),nd=(r,e)=>bt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?oc(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),yde=r=>bt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),wde=r=>bt({test:(e,t)=>e===null?!0:r(e,t)}),Bde=r=>bt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),Qde=r=>bt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),BH=r=>bt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),bde=({map:r}={})=>bt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sbt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),vde=()=>bt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),xde=r=>bt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),Pde=r=>bt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),Dde=(r,e)=>bt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),kde=(r,e)=>bt({test:(t,i)=>t>=r&&tbt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),sd=r=>bt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Vr(e)})`)}),Fde=()=>bt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),Nde=()=>bt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),Lde=()=>bt({test:(r,e)=>EH.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Vr(r)})`)}),Tde=()=>bt({test:(r,e)=>ov.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Vr(r)})`)}),Ode=({alpha:r=!1})=>bt({test:(e,t)=>(r?dH.test(e):CH.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Vr(e)})`)}),Mde=()=>bt({test:(r,e)=>mH.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Vr(r)})`)}),Kde=(r=wH())=>bt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Vr(e)})`)}return r(i,t)}}),Ude=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${vI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},Hde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${vI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},Gde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(sc||(sc={}));Yde={[sc.Forbids]:{expect:!1,message:"forbids using"},[sc.Requires]:{expect:!0,message:"requires using"}},av=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=Yde[e];return bt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${vI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var UH=w((e$e,KH)=>{"use strict";KH.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var Yg=w((t$e,pv)=>{"use strict";var oCe=UH(),HH=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=oCe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};pv.exports=HH;pv.exports.default=HH});var cd=w((i$e,GH)=>{var aCe="2.0.0",ACe=Number.MAX_SAFE_INTEGER||9007199254740991,lCe=16;GH.exports={SEMVER_SPEC_VERSION:aCe,MAX_LENGTH:256,MAX_SAFE_INTEGER:ACe,MAX_SAFE_COMPONENT_LENGTH:lCe}});var ud=w((n$e,YH)=>{var cCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};YH.exports=cCe});var ac=w((FA,jH)=>{var{MAX_SAFE_COMPONENT_LENGTH:dv}=cd(),uCe=ud();FA=jH.exports={};var gCe=FA.re=[],et=FA.src=[],tt=FA.t={},fCe=0,St=(r,e,t)=>{let i=fCe++;uCe(i,e),tt[r]=i,et[i]=e,gCe[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${et[tt.NUMERICIDENTIFIER]})\\.(${et[tt.NUMERICIDENTIFIER]})\\.(${et[tt.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${et[tt.NUMERICIDENTIFIERLOOSE]})\\.(${et[tt.NUMERICIDENTIFIERLOOSE]})\\.(${et[tt.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${et[tt.NUMERICIDENTIFIER]}|${et[tt.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${et[tt.NUMERICIDENTIFIERLOOSE]}|${et[tt.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${et[tt.PRERELEASEIDENTIFIER]}(?:\\.${et[tt.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${et[tt.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${et[tt.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${et[tt.BUILDIDENTIFIER]}(?:\\.${et[tt.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${et[tt.MAINVERSION]}${et[tt.PRERELEASE]}?${et[tt.BUILD]}?`);St("FULL",`^${et[tt.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${et[tt.MAINVERSIONLOOSE]}${et[tt.PRERELEASELOOSE]}?${et[tt.BUILD]}?`);St("LOOSE",`^${et[tt.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${et[tt.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${et[tt.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${et[tt.XRANGEIDENTIFIER]})(?:\\.(${et[tt.XRANGEIDENTIFIER]})(?:\\.(${et[tt.XRANGEIDENTIFIER]})(?:${et[tt.PRERELEASE]})?${et[tt.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${et[tt.XRANGEIDENTIFIERLOOSE]})(?:\\.(${et[tt.XRANGEIDENTIFIERLOOSE]})(?:\\.(${et[tt.XRANGEIDENTIFIERLOOSE]})(?:${et[tt.PRERELEASELOOSE]})?${et[tt.BUILD]}?)?)?`);St("XRANGE",`^${et[tt.GTLT]}\\s*${et[tt.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${et[tt.GTLT]}\\s*${et[tt.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${dv}})(?:\\.(\\d{1,${dv}}))?(?:\\.(\\d{1,${dv}}))?(?:$|[^\\d])`);St("COERCERTL",et[tt.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${et[tt.LONETILDE]}\\s+`,!0);FA.tildeTrimReplace="$1~";St("TILDE",`^${et[tt.LONETILDE]}${et[tt.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${et[tt.LONETILDE]}${et[tt.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${et[tt.LONECARET]}\\s+`,!0);FA.caretTrimReplace="$1^";St("CARET",`^${et[tt.LONECARET]}${et[tt.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${et[tt.LONECARET]}${et[tt.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${et[tt.GTLT]}\\s*(${et[tt.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${et[tt.GTLT]}\\s*(${et[tt.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${et[tt.GTLT]}\\s*(${et[tt.LOOSEPLAIN]}|${et[tt.XRANGEPLAIN]})`,!0);FA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${et[tt.XRANGEPLAIN]})\\s+-\\s+(${et[tt.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${et[tt.XRANGEPLAINLOOSE]})\\s+-\\s+(${et[tt.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var gd=w((s$e,qH)=>{var hCe=["includePrerelease","loose","rtl"],pCe=r=>r?typeof r!="object"?{loose:!0}:hCe.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};qH.exports=pCe});var FI=w((o$e,zH)=>{var JH=/^[0-9]+$/,WH=(r,e)=>{let t=JH.test(r),i=JH.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rWH(e,r);zH.exports={compareIdentifiers:WH,rcompareIdentifiers:dCe}});var Ti=w((a$e,_H)=>{var NI=ud(),{MAX_LENGTH:VH,MAX_SAFE_INTEGER:LI}=cd(),{re:XH,t:ZH}=ac(),CCe=gd(),{compareIdentifiers:fd}=FI(),Hn=class{constructor(e,t){if(t=CCe(t),e instanceof Hn){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>VH)throw new TypeError(`version is longer than ${VH} characters`);NI("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?XH[ZH.LOOSE]:XH[ZH.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>LI||this.major<0)throw new TypeError("Invalid major version");if(this.minor>LI||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>LI||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};_H.exports=Hn});var Ac=w((A$e,rG)=>{var{MAX_LENGTH:mCe}=cd(),{re:$H,t:eG}=ac(),tG=Ti(),ECe=gd(),ICe=(r,e)=>{if(e=ECe(e),r instanceof tG)return r;if(typeof r!="string"||r.length>mCe||!(e.loose?$H[eG.LOOSE]:$H[eG.FULL]).test(r))return null;try{return new tG(r,e)}catch{return null}};rG.exports=ICe});var nG=w((l$e,iG)=>{var yCe=Ac(),wCe=(r,e)=>{let t=yCe(r,e);return t?t.version:null};iG.exports=wCe});var oG=w((c$e,sG)=>{var BCe=Ac(),QCe=(r,e)=>{let t=BCe(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};sG.exports=QCe});var AG=w((u$e,aG)=>{var bCe=Ti(),SCe=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new bCe(r,t).inc(e,i).version}catch{return null}};aG.exports=SCe});var As=w((g$e,cG)=>{var lG=Ti(),vCe=(r,e,t)=>new lG(r,t).compare(new lG(e,t));cG.exports=vCe});var TI=w((f$e,uG)=>{var xCe=As(),PCe=(r,e,t)=>xCe(r,e,t)===0;uG.exports=PCe});var hG=w((h$e,fG)=>{var gG=Ac(),DCe=TI(),kCe=(r,e)=>{if(DCe(r,e))return null;{let t=gG(r),i=gG(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};fG.exports=kCe});var dG=w((p$e,pG)=>{var RCe=Ti(),FCe=(r,e)=>new RCe(r,e).major;pG.exports=FCe});var mG=w((d$e,CG)=>{var NCe=Ti(),LCe=(r,e)=>new NCe(r,e).minor;CG.exports=LCe});var IG=w((C$e,EG)=>{var TCe=Ti(),OCe=(r,e)=>new TCe(r,e).patch;EG.exports=OCe});var wG=w((m$e,yG)=>{var MCe=Ac(),KCe=(r,e)=>{let t=MCe(r,e);return t&&t.prerelease.length?t.prerelease:null};yG.exports=KCe});var QG=w((E$e,BG)=>{var UCe=As(),HCe=(r,e,t)=>UCe(e,r,t);BG.exports=HCe});var SG=w((I$e,bG)=>{var GCe=As(),YCe=(r,e)=>GCe(r,e,!0);bG.exports=YCe});var OI=w((y$e,xG)=>{var vG=Ti(),jCe=(r,e,t)=>{let i=new vG(r,t),n=new vG(e,t);return i.compare(n)||i.compareBuild(n)};xG.exports=jCe});var DG=w((w$e,PG)=>{var qCe=OI(),JCe=(r,e)=>r.sort((t,i)=>qCe(t,i,e));PG.exports=JCe});var RG=w((B$e,kG)=>{var WCe=OI(),zCe=(r,e)=>r.sort((t,i)=>WCe(i,t,e));kG.exports=zCe});var hd=w((Q$e,FG)=>{var VCe=As(),XCe=(r,e,t)=>VCe(r,e,t)>0;FG.exports=XCe});var MI=w((b$e,NG)=>{var ZCe=As(),_Ce=(r,e,t)=>ZCe(r,e,t)<0;NG.exports=_Ce});var Cv=w((S$e,LG)=>{var $Ce=As(),eme=(r,e,t)=>$Ce(r,e,t)!==0;LG.exports=eme});var KI=w((v$e,TG)=>{var tme=As(),rme=(r,e,t)=>tme(r,e,t)>=0;TG.exports=rme});var UI=w((x$e,OG)=>{var ime=As(),nme=(r,e,t)=>ime(r,e,t)<=0;OG.exports=nme});var mv=w((P$e,MG)=>{var sme=TI(),ome=Cv(),ame=hd(),Ame=KI(),lme=MI(),cme=UI(),ume=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return sme(r,t,i);case"!=":return ome(r,t,i);case">":return ame(r,t,i);case">=":return Ame(r,t,i);case"<":return lme(r,t,i);case"<=":return cme(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};MG.exports=ume});var UG=w((D$e,KG)=>{var gme=Ti(),fme=Ac(),{re:HI,t:GI}=ac(),hme=(r,e)=>{if(r instanceof gme)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(HI[GI.COERCE]);else{let i;for(;(i=HI[GI.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),HI[GI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;HI[GI.COERCERTL].lastIndex=-1}return t===null?null:fme(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};KG.exports=hme});var GG=w((k$e,HG)=>{"use strict";HG.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var YI=w((R$e,YG)=>{"use strict";YG.exports=Ht;Ht.Node=lc;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var mme=YI(),cc=Symbol("max"),ba=Symbol("length"),jg=Symbol("lengthCalculator"),dd=Symbol("allowStale"),uc=Symbol("maxAge"),Qa=Symbol("dispose"),jG=Symbol("noDisposeOnSet"),di=Symbol("lruList"),Vs=Symbol("cache"),JG=Symbol("updateAgeOnGet"),Ev=()=>1,yv=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[cc]=e.max||1/0,i=e.length||Ev;if(this[jg]=typeof i!="function"?Ev:i,this[dd]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[uc]=e.maxAge||0,this[Qa]=e.dispose,this[jG]=e.noDisposeOnSet||!1,this[JG]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[cc]=e||1/0,pd(this)}get max(){return this[cc]}set allowStale(e){this[dd]=!!e}get allowStale(){return this[dd]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[uc]=e,pd(this)}get maxAge(){return this[uc]}set lengthCalculator(e){typeof e!="function"&&(e=Ev),e!==this[jg]&&(this[jg]=e,this[ba]=0,this[di].forEach(t=>{t.length=this[jg](t.value,t.key),this[ba]+=t.length})),pd(this)}get lengthCalculator(){return this[jg]}get length(){return this[ba]}get itemCount(){return this[di].length}rforEach(e,t){t=t||this;for(let i=this[di].tail;i!==null;){let n=i.prev;qG(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[di].head;i!==null;){let n=i.next;qG(this,e,i,t),i=n}}keys(){return this[di].toArray().map(e=>e.key)}values(){return this[di].toArray().map(e=>e.value)}reset(){this[Qa]&&this[di]&&this[di].length&&this[di].forEach(e=>this[Qa](e.key,e.value)),this[Vs]=new Map,this[di]=new mme,this[ba]=0}dump(){return this[di].map(e=>jI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[di]}set(e,t,i){if(i=i||this[uc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[jg](t,e);if(this[Vs].has(e)){if(s>this[cc])return qg(this,this[Vs].get(e)),!1;let l=this[Vs].get(e).value;return this[Qa]&&(this[jG]||this[Qa](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[ba]+=s-l.length,l.length=s,this.get(e),pd(this),!0}let o=new wv(e,t,s,n,i);return o.length>this[cc]?(this[Qa]&&this[Qa](e,t),!1):(this[ba]+=o.length,this[di].unshift(o),this[Vs].set(e,this[di].head),pd(this),!0)}has(e){if(!this[Vs].has(e))return!1;let t=this[Vs].get(e).value;return!jI(this,t)}get(e){return Iv(this,e,!0)}peek(e){return Iv(this,e,!1)}pop(){let e=this[di].tail;return e?(qg(this,e),e.value):null}del(e){qg(this,this[Vs].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[Vs].forEach((e,t)=>Iv(this,t,!1))}},Iv=(r,e,t)=>{let i=r[Vs].get(e);if(i){let n=i.value;if(jI(r,n)){if(qg(r,i),!r[dd])return}else t&&(r[JG]&&(i.value.now=Date.now()),r[di].unshiftNode(i));return n.value}},jI=(r,e)=>{if(!e||!e.maxAge&&!r[uc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[uc]&&t>r[uc]},pd=r=>{if(r[ba]>r[cc])for(let e=r[di].tail;r[ba]>r[cc]&&e!==null;){let t=e.prev;qg(r,e),e=t}},qg=(r,e)=>{if(e){let t=e.value;r[Qa]&&r[Qa](t.key,t.value),r[ba]-=t.length,r[Vs].delete(t.key),r[di].removeNode(e)}},wv=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},qG=(r,e,t,i)=>{let n=t.value;jI(r,n)&&(qg(r,t),r[dd]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};WG.exports=yv});var ls=w((N$e,_G)=>{var gc=class{constructor(e,t){if(t=Ime(t),e instanceof gc)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new gc(e.raw,t);if(e instanceof Bv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!XG(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&bme(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=VG.get(i);if(n)return n;let s=this.options.loose,o=s?Oi[Qi.HYPHENRANGELOOSE]:Oi[Qi.HYPHENRANGE];e=e.replace(o,Lme(this.options.includePrerelease)),Gr("hyphen replace",e),e=e.replace(Oi[Qi.COMPARATORTRIM],wme),Gr("comparator trim",e,Oi[Qi.COMPARATORTRIM]),e=e.replace(Oi[Qi.TILDETRIM],Bme),e=e.replace(Oi[Qi.CARETTRIM],Qme),e=e.split(/\s+/).join(" ");let a=s?Oi[Qi.COMPARATORLOOSE]:Oi[Qi.COMPARATOR],l=e.split(" ").map(f=>Sme(f,this.options)).join(" ").split(/\s+/).map(f=>Nme(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new Bv(f,this.options)),c=l.length,u=new Map;for(let f of l){if(XG(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return VG.set(i,g),g}intersects(e,t){if(!(e instanceof gc))throw new TypeError("a Range is required");return this.set.some(i=>ZG(i,t)&&e.set.some(n=>ZG(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new yme(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",bme=r=>r.value==="",ZG=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},Sme=(r,e)=>(Gr("comp",r,e),r=Pme(r,e),Gr("caret",r),r=vme(r,e),Gr("tildes",r),r=kme(r,e),Gr("xrange",r),r=Fme(r,e),Gr("stars",r),r),Zi=r=>!r||r.toLowerCase()==="x"||r==="*",vme=(r,e)=>r.trim().split(/\s+/).map(t=>xme(t,e)).join(" "),xme=(r,e)=>{let t=e.loose?Oi[Qi.TILDELOOSE]:Oi[Qi.TILDE];return r.replace(t,(i,n,s,o,a)=>{Gr("tilde",r,i,n,s,o,a);let l;return Zi(n)?l="":Zi(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Zi(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Gr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Gr("tilde return",l),l})},Pme=(r,e)=>r.trim().split(/\s+/).map(t=>Dme(t,e)).join(" "),Dme=(r,e)=>{Gr("caret",r,e);let t=e.loose?Oi[Qi.CARETLOOSE]:Oi[Qi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{Gr("caret",r,n,s,o,a,l);let c;return Zi(s)?c="":Zi(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Zi(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Gr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Gr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Gr("caret return",c),c})},kme=(r,e)=>(Gr("replaceXRanges",r,e),r.split(/\s+/).map(t=>Rme(t,e)).join(" ")),Rme=(r,e)=>{r=r.trim();let t=e.loose?Oi[Qi.XRANGELOOSE]:Oi[Qi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{Gr("xRange",r,i,n,s,o,a,l);let c=Zi(s),u=c||Zi(o),g=u||Zi(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Gr("xRange return",i),i})},Fme=(r,e)=>(Gr("replaceStars",r,e),r.trim().replace(Oi[Qi.STAR],"")),Nme=(r,e)=>(Gr("replaceGTE0",r,e),r.trim().replace(Oi[e.includePrerelease?Qi.GTE0PRE:Qi.GTE0],"")),Lme=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(Zi(i)?t="":Zi(n)?t=`>=${i}.0.0${r?"-0":""}`:Zi(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,Zi(c)?l="":Zi(u)?l=`<${+c+1}.0.0-0`:Zi(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),Tme=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Cd=w((L$e,iY)=>{var md=Symbol("SemVer ANY"),Jg=class{static get ANY(){return md}constructor(e,t){if(t=Ome(t),e instanceof Jg){if(e.loose===!!t.loose)return e;e=e.value}bv("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===md?this.value="":this.value=this.operator+this.semver.version,bv("comp",this)}parse(e){let t=this.options.loose?$G[eY.COMPARATORLOOSE]:$G[eY.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new tY(i[2],this.options.loose):this.semver=md}toString(){return this.value}test(e){if(bv("Comparator.test",e,this.options.loose),this.semver===md||e===md)return!0;if(typeof e=="string")try{e=new tY(e,this.options)}catch{return!1}return Qv(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof Jg))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new rY(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new rY(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Qv(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Qv(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};iY.exports=Jg;var Ome=gd(),{re:$G,t:eY}=ac(),Qv=mv(),bv=ud(),tY=Ti(),rY=ls()});var Ed=w((T$e,nY)=>{var Mme=ls(),Kme=(r,e,t)=>{try{e=new Mme(e,t)}catch{return!1}return e.test(r)};nY.exports=Kme});var oY=w((O$e,sY)=>{var Ume=ls(),Hme=(r,e)=>new Ume(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));sY.exports=Hme});var AY=w((M$e,aY)=>{var Gme=Ti(),Yme=ls(),jme=(r,e,t)=>{let i=null,n=null,s=null;try{s=new Yme(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new Gme(i,t))}),i};aY.exports=jme});var cY=w((K$e,lY)=>{var qme=Ti(),Jme=ls(),Wme=(r,e,t)=>{let i=null,n=null,s=null;try{s=new Jme(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new qme(i,t))}),i};lY.exports=Wme});var fY=w((U$e,gY)=>{var Sv=Ti(),zme=ls(),uY=hd(),Vme=(r,e)=>{r=new zme(r,e);let t=new Sv("0.0.0");if(r.test(t)||(t=new Sv("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new Sv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||uY(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||uY(t,s))&&(t=s)}return t&&r.test(t)?t:null};gY.exports=Vme});var pY=w((H$e,hY)=>{var Xme=ls(),Zme=(r,e)=>{try{return new Xme(r,e).range||"*"}catch{return null}};hY.exports=Zme});var qI=w((G$e,EY)=>{var _me=Ti(),mY=Cd(),{ANY:$me}=mY,eEe=ls(),tEe=Ed(),dY=hd(),CY=MI(),rEe=UI(),iEe=KI(),nEe=(r,e,t,i)=>{r=new _me(r,i),e=new eEe(e,i);let n,s,o,a,l;switch(t){case">":n=dY,s=rEe,o=CY,a=">",l=">=";break;case"<":n=CY,s=iEe,o=dY,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(tEe(r,e,i))return!1;for(let c=0;c{h.semver===$me&&(h=new mY(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};EY.exports=nEe});var yY=w((Y$e,IY)=>{var sEe=qI(),oEe=(r,e,t)=>sEe(r,e,">",t);IY.exports=oEe});var BY=w((j$e,wY)=>{var aEe=qI(),AEe=(r,e,t)=>aEe(r,e,"<",t);wY.exports=AEe});var SY=w((q$e,bY)=>{var QY=ls(),lEe=(r,e,t)=>(r=new QY(r,t),e=new QY(e,t),r.intersects(e));bY.exports=lEe});var xY=w((J$e,vY)=>{var cEe=Ed(),uEe=As();vY.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>uEe(u,g,t));for(let u of o)cEe(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var PY=ls(),JI=Cd(),{ANY:vv}=JI,Id=Ed(),xv=As(),gEe=(r,e,t={})=>{if(r===e)return!0;r=new PY(r,t),e=new PY(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=fEe(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},fEe=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===vv){if(e.length===1&&e[0].semver===vv)return!0;t.includePrerelease?r=[new JI(">=0.0.0-0")]:r=[new JI(">=0.0.0")]}if(e.length===1&&e[0].semver===vv){if(t.includePrerelease)return!0;e=[new JI(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=DY(n,h,t):h.operator==="<"||h.operator==="<="?s=kY(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=xv(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Id(h,String(n),t)||s&&!Id(h,String(s),t))return null;for(let p of e)if(!Id(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=DY(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!Id(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=kY(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Id(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},DY=(r,e,t)=>{if(!r)return e;let i=xv(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},kY=(r,e,t)=>{if(!r)return e;let i=xv(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};RY.exports=gEe});var Xr=w((z$e,NY)=>{var Pv=ac();NY.exports={re:Pv.re,src:Pv.src,tokens:Pv.t,SEMVER_SPEC_VERSION:cd().SEMVER_SPEC_VERSION,SemVer:Ti(),compareIdentifiers:FI().compareIdentifiers,rcompareIdentifiers:FI().rcompareIdentifiers,parse:Ac(),valid:nG(),clean:oG(),inc:AG(),diff:hG(),major:dG(),minor:mG(),patch:IG(),prerelease:wG(),compare:As(),rcompare:QG(),compareLoose:SG(),compareBuild:OI(),sort:DG(),rsort:RG(),gt:hd(),lt:MI(),eq:TI(),neq:Cv(),gte:KI(),lte:UI(),cmp:mv(),coerce:UG(),Comparator:Cd(),Range:ls(),satisfies:Ed(),toComparators:oY(),maxSatisfying:AY(),minSatisfying:cY(),minVersion:fY(),validRange:pY(),outside:qI(),gtr:yY(),ltr:BY(),intersects:SY(),simplifyRange:xY(),subset:FY()}});var Dv=w(WI=>{"use strict";Object.defineProperty(WI,"__esModule",{value:!0});WI.VERSION=void 0;WI.VERSION="9.1.0"});var Gt=w((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof zI=="object"&&zI.exports?zI.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:LY,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var y={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(y,"global");break;case"i":o(y,"ignoreCase");break;case"m":o(y,"multiLine");break;case"u":o(y,"unicode");break;case"y":o(y,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:y,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var y=this.disjunction();return this.consumeChar(")"),{type:C,value:y,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,y=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(y),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` +`),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` +`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var y=this.classAtom(),B=y.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(y){C.push(y)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` +`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var y=p[C];p.hasOwnProperty(C)&&(y.type!==void 0?this.visit(y):Array.isArray(y)&&y.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var ZI=w(Wg=>{"use strict";Object.defineProperty(Wg,"__esModule",{value:!0});Wg.clearRegExpParserCache=Wg.getRegExpAst=void 0;var hEe=VI(),XI={},pEe=new hEe.RegExpParser;function dEe(r){var e=r.toString();if(XI.hasOwnProperty(e))return XI[e];var t=pEe.pattern(e);return XI[e]=t,t}Wg.getRegExpAst=dEe;function CEe(){XI={}}Wg.clearRegExpParserCache=CEe});var UY=w(pn=>{"use strict";var mEe=pn&&pn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(pn,"__esModule",{value:!0});pn.canMatchCharCode=pn.firstCharOptimizedIndices=pn.getOptimizedStartCodesIndices=pn.failedOptimizationPrefixMsg=void 0;var OY=VI(),cs=Gt(),MY=ZI(),Sa=Rv(),KY="Complement Sets are not supported for first char optimization";pn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function EEe(r,e){e===void 0&&(e=!1);try{var t=(0,MY.getRegExpAst)(r),i=$I(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===KY)e&&(0,cs.PRINT_WARNING)(""+pn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > +`)+` Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,cs.PRINT_ERROR)(pn.failedOptimizationPrefixMsg+` +`+(" Failed parsing: < "+r.toString()+` > +`)+(" Using the regexp-to-ast library version: "+OY.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}pn.getOptimizedStartCodesIndices=EEe;function $I(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=Sa.minOptimizationVal)for(var f=u.from>=Sa.minOptimizationVal?u.from:Sa.minOptimizationVal,h=u.to,p=(0,Sa.charCodeToOptimizedIndex)(f),C=(0,Sa.charCodeToOptimizedIndex)(h),y=p;y<=C;y++)e[y]=y}}});break;case"Group":$I(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&kv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,cs.values)(e)}pn.firstCharOptimizedIndices=$I;function _I(r,e,t){var i=(0,Sa.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&IEe(r,e)}function IEe(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,Sa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,Sa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function TY(r,e){return(0,cs.find)(r.value,function(t){if(typeof t=="number")return(0,cs.contains)(e,t);var i=t;return(0,cs.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function kv(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,cs.isArray)(r.value)?(0,cs.every)(r.value,kv):kv(r.value):!1}var yEe=function(r){mEe(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,cs.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?TY(t,this.targetCharCodes)===void 0&&(this.found=!0):TY(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(OY.BaseRegExpVisitor);function wEe(r,e){if(e instanceof RegExp){var t=(0,MY.getRegExpAst)(e),i=new yEe(r);return i.visit(t),i.found}else return(0,cs.find)(e,function(n){return(0,cs.contains)(r,n.charCodeAt(0))})!==void 0}pn.canMatchCharCode=wEe});var Rv=w(Ve=>{"use strict";var HY=Ve&&Ve.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ve,"__esModule",{value:!0});Ve.charCodeToOptimizedIndex=Ve.minOptimizationVal=Ve.buildLineBreakIssueMessage=Ve.LineTerminatorOptimizedTester=Ve.isShortPattern=Ve.isCustomPattern=Ve.cloneEmptyGroups=Ve.performWarningRuntimeChecks=Ve.performRuntimeChecks=Ve.addStickyFlag=Ve.addStartOfInput=Ve.findUnreachablePatterns=Ve.findModesThatDoNotExist=Ve.findInvalidGroupType=Ve.findDuplicatePatterns=Ve.findUnsupportedFlags=Ve.findStartOfInputAnchor=Ve.findEmptyMatchRegExps=Ve.findEndOfInputAnchor=Ve.findInvalidPatterns=Ve.findMissingPatterns=Ve.validatePatterns=Ve.analyzeTokenTypes=Ve.enableSticky=Ve.disableSticky=Ve.SUPPORT_STICKY=Ve.MODES=Ve.DEFAULT_MODE=void 0;var GY=VI(),ir=yd(),xe=Gt(),zg=UY(),YY=ZI(),Do="PATTERN";Ve.DEFAULT_MODE="defaultMode";Ve.MODES="modes";Ve.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function BEe(){Ve.SUPPORT_STICKY=!1}Ve.disableSticky=BEe;function QEe(){Ve.SUPPORT_STICKY=!0}Ve.enableSticky=QEe;function bEe(r,e){e=(0,xe.defaults)(e,{useSticky:Ve.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){LEe()});var i;t("Reject Lexer.NA",function(){i=(0,xe.reject)(r,function(v){return v[Do]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,xe.map)(i,function(v){var D=v[Do];if((0,xe.isRegExp)(D)){var L=D.source;return L.length===1&&L!=="^"&&L!=="$"&&L!=="."&&!D.ignoreCase?L:L.length===2&&L[0]==="\\"&&!(0,xe.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],L[1])?L[1]:e.useSticky?Lv(D):Nv(D)}else{if((0,xe.isFunction)(D))return n=!0,{exec:D};if((0,xe.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Lv(j):Nv(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,xe.map)(i,function(v){return v.tokenTypeIdx}),a=(0,xe.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,xe.isString)(D))return D;if((0,xe.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,xe.map)(i,function(v){var D=v.LONGER_ALT;if(D){var L=(0,xe.isArray)(D)?(0,xe.map)(D,function(H){return(0,xe.indexOf)(i,H)}):[(0,xe.indexOf)(i,D)];return L}}),c=(0,xe.map)(i,function(v){return v.PUSH_MODE}),u=(0,xe.map)(i,function(v){return(0,xe.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=ij(e.lineTerminatorCharacters);g=(0,xe.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,xe.map)(i,function(D){if((0,xe.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(tj(D,v)===!1)return(0,zg.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,xe.map)(i,Ov),h=(0,xe.map)(s,ej),p=(0,xe.reduce)(i,function(v,D){var L=D.GROUP;return(0,xe.isString)(L)&&L!==ir.Lexer.SKIPPED&&(v[L]=[]),v},{}),C=(0,xe.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var y=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,xe.reduce)(i,function(v,D,L){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=Tv(H);Fv(v,j,C[L])}else if((0,xe.isArray)(D.START_CHARS_HINT)){var $;(0,xe.forEach)(D.START_CHARS_HINT,function(W){var _=typeof W=="string"?W.charCodeAt(0):W,A=Tv(_);$!==A&&($=A,Fv(v,A,C[L]))})}else if((0,xe.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)y=!1,e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+zg.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. +`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,zg.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,xe.isEmpty)(V)&&(y=!1),(0,xe.forEach)(V,function(W){Fv(v,W,C[L])})}else e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+zg.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. +`)+` This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),y=!1;return v},[])}),t("ArrayPacking",function(){B=(0,xe.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:y}}Ve.analyzeTokenTypes=bEe;function SEe(r,e){var t=[],i=jY(r);t=t.concat(i.errors);var n=qY(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(vEe(s)),t=t.concat(ZY(s)),t=t.concat(_Y(s,e)),t=t.concat($Y(s)),t}Ve.validatePatterns=SEe;function vEe(r){var e=[],t=(0,xe.filter)(r,function(i){return(0,xe.isRegExp)(i[Do])});return e=e.concat(JY(t)),e=e.concat(zY(t)),e=e.concat(VY(t)),e=e.concat(XY(t)),e=e.concat(WY(t)),e}function jY(r){var e=(0,xe.filter)(r,function(n){return!(0,xe.has)(n,Do)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findMissingPatterns=jY;function qY(r){var e=(0,xe.filter)(r,function(n){var s=n[Do];return!(0,xe.isRegExp)(s)&&!(0,xe.isFunction)(s)&&!(0,xe.has)(s,"exec")&&!(0,xe.isString)(s)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findInvalidPatterns=qY;var xEe=/[^\\][\$]/;function JY(r){var e=function(n){HY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(GY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[Do];try{var o=(0,YY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return xEe.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findEndOfInputAnchor=JY;function WY(r){var e=(0,xe.filter)(r,function(i){var n=i[Do];return n.test("")}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Ve.findEmptyMatchRegExps=WY;var PEe=/[^\\[][\^]|^\^/;function zY(r){var e=function(n){HY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(GY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[Do];try{var o=(0,YY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return PEe.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findStartOfInputAnchor=zY;function VY(r){var e=(0,xe.filter)(r,function(i){var n=i[Do];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Ve.findUnsupportedFlags=VY;function XY(r){var e=[],t=(0,xe.map)(r,function(s){return(0,xe.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,xe.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,xe.compact)(t);var i=(0,xe.filter)(t,function(s){return s.length>1}),n=(0,xe.map)(i,function(s){var o=(0,xe.map)(s,function(l){return l.name}),a=(0,xe.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Ve.findDuplicatePatterns=XY;function ZY(r){var e=(0,xe.filter)(r,function(i){if(!(0,xe.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,xe.isString)(n)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Ve.findInvalidGroupType=ZY;function _Y(r,e){var t=(0,xe.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,xe.contains)(e,n.PUSH_MODE)}),i=(0,xe.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Ve.findModesThatDoNotExist=_Y;function $Y(r){var e=[],t=(0,xe.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,xe.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,xe.isRegExp)(o)&&kEe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,xe.forEach)(r,function(i,n){(0,xe.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Ve.findUnreachablePatterns=$Y;function DEe(r,e){if((0,xe.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,xe.isFunction)(e))return e(r,0,[],{});if((0,xe.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function kEe(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,xe.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function Nv(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Ve.addStartOfInput=Nv;function Lv(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Ve.addStickyFlag=Lv;function REe(r,e,t){var i=[];return(0,xe.has)(r,Ve.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.DEFAULT_MODE+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,xe.has)(r,Ve.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.MODES+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,xe.has)(r,Ve.MODES)&&(0,xe.has)(r,Ve.DEFAULT_MODE)&&!(0,xe.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Ve.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,xe.has)(r,Ve.MODES)&&(0,xe.forEach)(r.modes,function(n,s){(0,xe.forEach)(n,function(o,a){(0,xe.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> +`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Ve.performRuntimeChecks=REe;function FEe(r,e,t){var i=[],n=!1,s=(0,xe.compact)((0,xe.flatten)((0,xe.mapValues)(r.modes,function(l){return l}))),o=(0,xe.reject)(s,function(l){return l[Do]===ir.Lexer.NA}),a=ij(t);return e&&(0,xe.forEach)(o,function(l){var c=tj(l,a);if(c!==!1){var u=rj(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,xe.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,zg.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Ve.performWarningRuntimeChecks=FEe;function NEe(r){var e={},t=(0,xe.keys)(r);return(0,xe.forEach)(t,function(i){var n=r[i];if((0,xe.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Ve.cloneEmptyGroups=NEe;function Ov(r){var e=r.PATTERN;if((0,xe.isRegExp)(e))return!1;if((0,xe.isFunction)(e))return!0;if((0,xe.has)(e,"exec"))return!0;if((0,xe.isString)(e))return!1;throw Error("non exhaustive match")}Ve.isCustomPattern=Ov;function ej(r){return(0,xe.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Ve.isShortPattern=ej;Ve.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t Token Type +`)+(" Root cause: "+e.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+r.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Ve.buildLineBreakIssueMessage=rj;function ij(r){var e=(0,xe.map)(r,function(t){return(0,xe.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function Fv(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Ve.minOptimizationVal=256;var ey=[];function Tv(r){return r255?255+~~(r/255):r}}});var Vg=w(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var Zr=Gt();function TEe(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=TEe;function OEe(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=OEe;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function MEe(r){var e=nj(r);sj(e),aj(e),oj(e),(0,Zr.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=MEe;function nj(r){for(var e=(0,Zr.cloneArr)(r),t=r,i=!0;i;){t=(0,Zr.compact)((0,Zr.flatten)((0,Zr.map)(t,function(s){return s.CATEGORIES})));var n=(0,Zr.difference)(t,e);e=e.concat(n),(0,Zr.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=nj;function sj(r){(0,Zr.forEach)(r,function(e){Aj(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),Mv(e)&&!(0,Zr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Mv(e)||(e.CATEGORIES=[]),lj(e)||(e.categoryMatches=[]),cj(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=sj;function oj(r){(0,Zr.forEach)(r,function(e){e.categoryMatches=[],(0,Zr.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=oj;function aj(r){(0,Zr.forEach)(r,function(e){Kv([],e)})}Nt.assignCategoriesMapProp=aj;function Kv(r,e){(0,Zr.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,Zr.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,Zr.contains)(i,t)||Kv(i,t)})}Nt.singleAssignCategoriesToksMap=Kv;function Aj(r){return(0,Zr.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=Aj;function Mv(r){return(0,Zr.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=Mv;function lj(r){return(0,Zr.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=lj;function cj(r){return(0,Zr.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=cj;function KEe(r){return(0,Zr.has)(r,"tokenTypeIdx")}Nt.isTokenType=KEe});var Uv=w(ty=>{"use strict";Object.defineProperty(ty,"__esModule",{value:!0});ty.defaultLexerErrorProvider=void 0;ty.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var yd=w(fc=>{"use strict";Object.defineProperty(fc,"__esModule",{value:!0});fc.Lexer=fc.LexerDefinitionErrorType=void 0;var Xs=Rv(),nr=Gt(),UEe=Vg(),HEe=Uv(),GEe=ZI(),YEe;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(YEe=fc.LexerDefinitionErrorType||(fc.LexerDefinitionErrorType={}));var wd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:HEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(wd);var jEe=function(){function r(e,t){var i=this;if(t===void 0&&(t=wd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(wd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===wd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Xs.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===wd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[Xs.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[Xs.DEFAULT_MODE]=Xs.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Xs.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Xs.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Xs.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,UEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Xs.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Xs.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,GEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,y,B,v,D,L=e,H=L.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),_=[],A=this.trackStartLines?1:void 0,ae=this.trackStartLines?1:void 0,ge=(0,Xs.cloneEmptyGroups)(this.emptyGroups),re=this.trackStartLines,O=this.config.lineTerminatorsPattern,F=0,ue=[],he=[],ke=[],Fe=[];Object.freeze(Fe);var Ne=void 0;function oe(){return ue}function le(pr){var Ii=(0,Xs.charCodeToOptimizedIndex)(pr),es=he[Ii];return es===void 0?Fe:es}var we=function(pr){if(ke.length===1&&pr.tokenType.PUSH_MODE===void 0){var Ii=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(pr);_.push({offset:pr.startOffset,line:pr.startLine!==void 0?pr.startLine:void 0,column:pr.startColumn!==void 0?pr.startColumn:void 0,length:pr.image.length,message:Ii})}else{ke.pop();var es=(0,nr.last)(ke);ue=i.patternIdxToConfig[es],he=i.charCodeToPatternIdxToConfig[es],F=ue.length;var ua=i.canModeBeOptimized[es]&&i.config.safeMode===!1;he&&ua?Ne=le:Ne=oe}};function fe(pr){ke.push(pr),he=this.charCodeToPatternIdxToConfig[pr],ue=this.patternIdxToConfig[pr],F=ue.length,F=ue.length;var Ii=this.canModeBeOptimized[pr]&&this.config.safeMode===!1;he&&Ii?Ne=le:Ne=oe}fe.call(this,t);for(var Ae;jc.length){c=a,u=g,Ae=_e;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,C=this.createTokenInstance(c,j,p,Ae.tokenType,A,ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,ae=this.computeNewColumn(ae,f),re===!0&&Ae.canLineTerminator===!0){var It=0,Or=void 0,ii=void 0;O.lastIndex=0;do Or=O.test(c),Or===!0&&(ii=O.lastIndex-1,It++);while(Or===!0);It!==0&&(A=A+It,ae=f-ii,this.updateTokenEndLineColumnLocation(C,h,ii,It,A,ae,f))}this.handleModes(Ae,we,fe,C)}else{for(var gi=j,hr=A,fi=ae,ni=!1;!ni&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();fc.Lexer=jEe});var NA=w(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.tokenMatcher=bi.createTokenInstance=bi.EOF=bi.createToken=bi.hasTokenLabel=bi.tokenName=bi.tokenLabel=void 0;var Zs=Gt(),qEe=yd(),Hv=Vg();function JEe(r){return Ej(r)?r.LABEL:r.name}bi.tokenLabel=JEe;function WEe(r){return r.name}bi.tokenName=WEe;function Ej(r){return(0,Zs.isString)(r.LABEL)&&r.LABEL!==""}bi.hasTokenLabel=Ej;var zEe="parent",uj="categories",gj="label",fj="group",hj="push_mode",pj="pop_mode",dj="longer_alt",Cj="line_breaks",mj="start_chars_hint";function Ij(r){return VEe(r)}bi.createToken=Ij;function VEe(r){var e=r.pattern,t={};if(t.name=r.name,(0,Zs.isUndefined)(e)||(t.PATTERN=e),(0,Zs.has)(r,zEe))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Zs.has)(r,uj)&&(t.CATEGORIES=r[uj]),(0,Hv.augmentTokenTypes)([t]),(0,Zs.has)(r,gj)&&(t.LABEL=r[gj]),(0,Zs.has)(r,fj)&&(t.GROUP=r[fj]),(0,Zs.has)(r,pj)&&(t.POP_MODE=r[pj]),(0,Zs.has)(r,hj)&&(t.PUSH_MODE=r[hj]),(0,Zs.has)(r,dj)&&(t.LONGER_ALT=r[dj]),(0,Zs.has)(r,Cj)&&(t.LINE_BREAKS=r[Cj]),(0,Zs.has)(r,mj)&&(t.START_CHARS_HINT=r[mj]),t}bi.EOF=Ij({name:"EOF",pattern:qEe.Lexer.NA});(0,Hv.augmentTokenTypes)([bi.EOF]);function XEe(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}bi.createTokenInstance=XEe;function ZEe(r,e){return(0,Hv.tokenStructuredMatcher)(r,e)}bi.tokenMatcher=ZEe});var dn=w(zt=>{"use strict";var va=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.serializeProduction=zt.serializeGrammar=zt.Terminal=zt.Alternation=zt.RepetitionWithSeparator=zt.Repetition=zt.RepetitionMandatoryWithSeparator=zt.RepetitionMandatory=zt.Option=zt.Alternative=zt.Rule=zt.NonTerminal=zt.AbstractProduction=void 0;var Ar=Gt(),_Ee=NA(),ko=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,Ar.forEach)(this.definition,function(t){t.accept(e)})},r}();zt.AbstractProduction=ko;var yj=function(r){va(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(ko);zt.NonTerminal=yj;var wj=function(r){va(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.Rule=wj;var Bj=function(r){va(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.Alternative=Bj;var Qj=function(r){va(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.Option=Qj;var bj=function(r){va(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.RepetitionMandatory=bj;var Sj=function(r){va(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.RepetitionMandatoryWithSeparator=Sj;var vj=function(r){va(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.Repetition=vj;var xj=function(r){va(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(ko);zt.RepetitionWithSeparator=xj;var Pj=function(r){va(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(ko);zt.Alternation=Pj;var ry=function(){function r(e){this.idx=1,(0,Ar.assign)(this,(0,Ar.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();zt.Terminal=ry;function $Ee(r){return(0,Ar.map)(r,Bd)}zt.serializeGrammar=$Ee;function Bd(r){function e(s){return(0,Ar.map)(s,Bd)}if(r instanceof yj){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,Ar.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof Bj)return{type:"Alternative",definition:e(r.definition)};if(r instanceof Qj)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof bj)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof Sj)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:Bd(new ry({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof xj)return{type:"RepetitionWithSeparator",idx:r.idx,separator:Bd(new ry({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof vj)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof Pj)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof ry){var i={type:"Terminal",name:r.terminalType.name,label:(0,_Ee.tokenLabel)(r.terminalType),idx:r.idx};(0,Ar.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,Ar.isRegExp)(n)?n.source:n),i}else{if(r instanceof wj)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}zt.serializeProduction=Bd});var ny=w(iy=>{"use strict";Object.defineProperty(iy,"__esModule",{value:!0});iy.RestWalker=void 0;var Gv=Gt(),Cn=dn(),eIe=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,Gv.forEach)(e.definition,function(n,s){var o=(0,Gv.drop)(e.definition,s+1);if(n instanceof Cn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof Cn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof Cn.Alternative)i.walkFlat(n,o,t);else if(n instanceof Cn.Option)i.walkOption(n,o,t);else if(n instanceof Cn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof Cn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof Cn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof Cn.Repetition)i.walkMany(n,o,t);else if(n instanceof Cn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=Dj(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=Dj(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,Gv.forEach)(e.definition,function(o){var a=new Cn.Alternative({definition:[o]});n.walk(a,s)})},r}();iy.RestWalker=eIe;function Dj(r,e,t){var i=[new Cn.Option({definition:[new Cn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var Xg=w(sy=>{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.GAstVisitor=void 0;var Ro=dn(),tIe=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case Ro.NonTerminal:return this.visitNonTerminal(t);case Ro.Alternative:return this.visitAlternative(t);case Ro.Option:return this.visitOption(t);case Ro.RepetitionMandatory:return this.visitRepetitionMandatory(t);case Ro.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case Ro.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case Ro.Repetition:return this.visitRepetition(t);case Ro.Alternation:return this.visitAlternation(t);case Ro.Terminal:return this.visitTerminal(t);case Ro.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();sy.GAstVisitor=tIe});var bd=w(Mi=>{"use strict";var rIe=Mi&&Mi.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Mi,"__esModule",{value:!0});Mi.collectMethods=Mi.DslMethodsCollectorVisitor=Mi.getProductionDslName=Mi.isBranchingProd=Mi.isOptionalProd=Mi.isSequenceProd=void 0;var Qd=Gt(),Qr=dn(),iIe=Xg();function nIe(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Mi.isSequenceProd=nIe;function Yv(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,Qd.some)(r.definition,function(i){return Yv(i,e)}):r instanceof Qr.NonTerminal&&(0,Qd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,Qd.every)(r.definition,function(i){return Yv(i,e)})):!1}Mi.isOptionalProd=Yv;function sIe(r){return r instanceof Qr.Alternation}Mi.isBranchingProd=sIe;function oIe(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Mi.getProductionDslName=oIe;var kj=function(r){rIe(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,Qd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,Qd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(iIe.GAstVisitor);Mi.DslMethodsCollectorVisitor=kj;var oy=new kj;function aIe(r){oy.reset(),r.accept(oy);var e=oy.dslMethods;return oy.reset(),e}Mi.collectMethods=aIe});var qv=w(Fo=>{"use strict";Object.defineProperty(Fo,"__esModule",{value:!0});Fo.firstForTerminal=Fo.firstForBranching=Fo.firstForSequence=Fo.first=void 0;var ay=Gt(),Rj=dn(),jv=bd();function Ay(r){if(r instanceof Rj.NonTerminal)return Ay(r.referencedRule);if(r instanceof Rj.Terminal)return Lj(r);if((0,jv.isSequenceProd)(r))return Fj(r);if((0,jv.isBranchingProd)(r))return Nj(r);throw Error("non exhaustive match")}Fo.first=Ay;function Fj(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,jv.isOptionalProd)(s),e=e.concat(Ay(s)),i=i+1,n=t.length>i;return(0,ay.uniq)(e)}Fo.firstForSequence=Fj;function Nj(r){var e=(0,ay.map)(r.definition,function(t){return Ay(t)});return(0,ay.uniq)((0,ay.flatten)(e))}Fo.firstForBranching=Nj;function Lj(r){return[r.terminalType]}Fo.firstForTerminal=Lj});var Jv=w(ly=>{"use strict";Object.defineProperty(ly,"__esModule",{value:!0});ly.IN=void 0;ly.IN="_~IN~_"});var Uj=w(us=>{"use strict";var AIe=us&&us.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(us,"__esModule",{value:!0});us.buildInProdFollowPrefix=us.buildBetweenProdsFollowPrefix=us.computeAllProdsFollows=us.ResyncFollowsWalker=void 0;var lIe=ny(),cIe=qv(),Tj=Gt(),Oj=Jv(),uIe=dn(),Mj=function(r){AIe(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=Kj(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new uIe.Alternative({definition:o}),l=(0,cIe.first)(a);this.follows[s]=l},e}(lIe.RestWalker);us.ResyncFollowsWalker=Mj;function gIe(r){var e={};return(0,Tj.forEach)(r,function(t){var i=new Mj(t).startWalking();(0,Tj.assign)(e,i)}),e}us.computeAllProdsFollows=gIe;function Kj(r,e){return r.name+e+Oj.IN}us.buildBetweenProdsFollowPrefix=Kj;function fIe(r){var e=r.terminalType.name;return e+r.idx+Oj.IN}us.buildInProdFollowPrefix=fIe});var Sd=w(xa=>{"use strict";Object.defineProperty(xa,"__esModule",{value:!0});xa.defaultGrammarValidatorErrorProvider=xa.defaultGrammarResolverErrorProvider=xa.defaultParserErrorProvider=void 0;var Zg=NA(),hIe=Gt(),_s=Gt(),Wv=dn(),Hj=bd();xa.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,Zg.hasTokenLabel)(e),o=s?"--> "+(0,Zg.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,_s.first)(t).image,l=` +but found: '`+a+"'";if(n)return o+n+l;var c=(0,_s.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,_s.map)(c,function(h){return"["+(0,_s.map)(h,function(p){return(0,Zg.tokenLabel)(p)}).join(", ")+"]"}),g=(0,_s.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: +`+g.join(` +`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,_s.first)(t).image,a=` +but found: '`+o+"'";if(i)return s+i+a;var l=(0,_s.map)(e,function(u){return"["+(0,_s.map)(u,function(g){return(0,Zg.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(xa.defaultParserErrorProvider);xa.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+r.name+"<-";return t}};xa.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Wv.Terminal?u.terminalType.name:u instanceof Wv.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,_s.first)(e),s=n.idx,o=(0,Hj.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` + appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` +`),c},buildNamespaceConflictError:function(r){var e=`Namespace conflict found in grammar. +`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>. +`)+`To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,Zg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +`+("in inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,Zg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,Hj.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. +This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in inside <"+r.topLevelRule.name+`> Rule. +`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives: +`+(" inside <"+r.topLevelRule.name+`> Rule. + has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=hIe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. +`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) +`)+(`without consuming any Tokens. The grammar path that causes this is: + `+i+` +`)+` To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Wv.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var jj=w(LA=>{"use strict";var pIe=LA&&LA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(LA,"__esModule",{value:!0});LA.GastRefResolverVisitor=LA.resolveGrammar=void 0;var dIe=Gn(),Gj=Gt(),CIe=Xg();function mIe(r,e){var t=new Yj(r,e);return t.resolveRefs(),t.errors}LA.resolveGrammar=mIe;var Yj=function(r){pIe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,Gj.forEach)((0,Gj.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:dIe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(CIe.GAstVisitor);LA.GastRefResolverVisitor=Yj});var xd=w(Nr=>{"use strict";var hc=Nr&&Nr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Nr,"__esModule",{value:!0});Nr.nextPossibleTokensAfter=Nr.possiblePathsFrom=Nr.NextTerminalAfterAtLeastOneSepWalker=Nr.NextTerminalAfterAtLeastOneWalker=Nr.NextTerminalAfterManySepWalker=Nr.NextTerminalAfterManyWalker=Nr.AbstractNextTerminalAfterProductionWalker=Nr.NextAfterTokenWalker=Nr.AbstractNextPossibleTokensWalker=void 0;var qj=ny(),Kt=Gt(),EIe=qv(),kt=dn(),Jj=function(r){hc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Kt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Kt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Kt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(qj.RestWalker);Nr.AbstractNextPossibleTokensWalker=Jj;var IIe=function(r){hc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new kt.Alternative({definition:s});this.possibleTokTypes=(0,EIe.first)(o),this.found=!0}},e}(Jj);Nr.NextAfterTokenWalker=IIe;var vd=function(r){hc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(qj.RestWalker);Nr.AbstractNextTerminalAfterProductionWalker=vd;var yIe=function(r){hc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(vd);Nr.NextTerminalAfterManyWalker=yIe;var wIe=function(r){hc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(vd);Nr.NextTerminalAfterManySepWalker=wIe;var BIe=function(r){hc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(vd);Nr.NextTerminalAfterAtLeastOneWalker=BIe;var QIe=function(r){hc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(vd);Nr.NextTerminalAfterAtLeastOneSepWalker=QIe;function Wj(r,e,t){t===void 0&&(t=[]),t=(0,Kt.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Kt.drop)(r,n+1))}function o(c){var u=Wj(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var re=B.definition[ge],O={idx:p,def:re.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y};g.push(O),g.push(o)}else if(B instanceof kt.Alternative)g.push({idx:p,def:B.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y});else if(B instanceof kt.Rule)g.push(SIe(B,p,C,y));else throw Error("non exhaustive match")}}return u}Nr.nextPossibleTokensAfter=bIe;function SIe(r,e,t,i){var n=(0,Kt.cloneArr)(t);n.push(r.name);var s=(0,Kt.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var Pd=w(Zt=>{"use strict";var Xj=Zt&&Zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Zt,"__esModule",{value:!0});Zt.areTokenCategoriesNotUsed=Zt.isStrictPrefixOfPath=Zt.containsPath=Zt.getLookaheadPathsForOptionalProd=Zt.getLookaheadPathsForOr=Zt.lookAheadSequenceFromAlternatives=Zt.buildSingleAlternativeLookaheadFunction=Zt.buildAlternativesLookAheadFunc=Zt.buildLookaheadFuncForOptionalProd=Zt.buildLookaheadFuncForOr=Zt.getProdType=Zt.PROD_TYPE=void 0;var sr=Gt(),zj=xd(),vIe=ny(),cy=Vg(),TA=dn(),xIe=Xg(),oi;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(oi=Zt.PROD_TYPE||(Zt.PROD_TYPE={}));function PIe(r){if(r instanceof TA.Option)return oi.OPTION;if(r instanceof TA.Repetition)return oi.REPETITION;if(r instanceof TA.RepetitionMandatory)return oi.REPETITION_MANDATORY;if(r instanceof TA.RepetitionMandatoryWithSeparator)return oi.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof TA.RepetitionWithSeparator)return oi.REPETITION_WITH_SEPARATOR;if(r instanceof TA.Alternation)return oi.ALTERNATION;throw Error("non exhaustive match")}Zt.getProdType=PIe;function DIe(r,e,t,i,n,s){var o=_j(r,e,t),a=Xv(o)?cy.tokenStructuredMatcherNoCategories:cy.tokenStructuredMatcher;return s(o,i,a,n)}Zt.buildLookaheadFuncForOr=DIe;function kIe(r,e,t,i,n,s){var o=$j(r,e,n,t),a=Xv(o)?cy.tokenStructuredMatcherNoCategories:cy.tokenStructuredMatcher;return s(o[0],a,i)}Zt.buildLookaheadFuncForOptionalProd=kIe;function RIe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Zv=Vt&&Vt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Vt,"__esModule",{value:!0});Vt.checkPrefixAlternativesAmbiguities=Vt.validateSomeNonEmptyLookaheadPath=Vt.validateTooManyAlts=Vt.RepetionCollector=Vt.validateAmbiguousAlternationAlternatives=Vt.validateEmptyOrAlternative=Vt.getFirstNoneTerminal=Vt.validateNoLeftRecursion=Vt.validateRuleIsOverridden=Vt.validateRuleDoesNotAlreadyExist=Vt.OccurrenceValidationCollector=Vt.identifyProductionForDuplicates=Vt.validateGrammar=void 0;var er=Gt(),br=Gt(),No=Gn(),_v=bd(),_g=Pd(),OIe=xd(),$s=dn(),$v=Xg();function MIe(r,e,t,i,n){var s=er.map(r,function(h){return KIe(h,i)}),o=er.map(r,function(h){return ex(h,h,i)}),a=[],l=[],c=[];(0,br.every)(o,br.isEmpty)&&(a=(0,br.map)(r,function(h){return sq(h,i)}),l=(0,br.map)(r,function(h){return oq(h,e,i)}),c=lq(r,e,i));var u=GIe(r,t,i),g=(0,br.map)(r,function(h){return Aq(h,i)}),f=(0,br.map)(r,function(h){return nq(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}Vt.validateGrammar=MIe;function KIe(r,e){var t=new iq;r.accept(t);var i=t.allProductions,n=er.groupBy(i,tq),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,_v.getProductionDslName)(l),g={message:c,type:No.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=rq(l);return f&&(g.parameter=f),g});return o}function tq(r){return(0,_v.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+rq(r)}Vt.identifyProductionForDuplicates=tq;function rq(r){return r instanceof $s.Terminal?r.terminalType.name:r instanceof $s.NonTerminal?r.nonTerminalName:""}var iq=function(r){Zv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}($v.GAstVisitor);Vt.OccurrenceValidationCollector=iq;function nq(r,e,t,i){var n=[],s=(0,br.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:No.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}Vt.validateRuleDoesNotAlreadyExist=nq;function UIe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:No.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}Vt.validateRuleIsOverridden=UIe;function ex(r,e,t,i){i===void 0&&(i=[]);var n=[],s=Dd(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:No.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),ex(r,u,t,g)});return n.concat(er.flatten(c))}Vt.validateNoLeftRecursion=ex;function Dd(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof $s.NonTerminal)e.push(t.referencedRule);else if(t instanceof $s.Alternative||t instanceof $s.Option||t instanceof $s.RepetitionMandatory||t instanceof $s.RepetitionMandatoryWithSeparator||t instanceof $s.RepetitionWithSeparator||t instanceof $s.Repetition)e=e.concat(Dd(t.definition));else if(t instanceof $s.Alternation)e=er.flatten(er.map(t.definition,function(o){return Dd(o.definition)}));else if(!(t instanceof $s.Terminal))throw Error("non exhaustive match");var i=(0,_v.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat(Dd(s))}else return e}Vt.getFirstNoneTerminal=Dd;var tx=function(r){Zv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}($v.GAstVisitor);function sq(r,e){var t=new tx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,OIe.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:No.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}Vt.validateEmptyOrAlternative=sq;function oq(r,e,t){var i=new tx;r.accept(i);var n=i.alternations;n=(0,br.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,_g.getLookaheadPathsForOr)(l,r,c,a),g=HIe(u,a,r,t),f=cq(u,a,r,t);return o.concat(g,f)},[]);return s}Vt.validateAmbiguousAlternationAlternatives=oq;var aq=function(r){Zv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}($v.GAstVisitor);Vt.RepetionCollector=aq;function Aq(r,e){var t=new tx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:No.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}Vt.validateTooManyAlts=Aq;function lq(r,e,t){var i=[];return(0,br.forEach)(r,function(n){var s=new aq;n.accept(s);var o=s.allProductions;(0,br.forEach)(o,function(a){var l=(0,_g.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,_g.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,br.isEmpty)((0,br.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:No.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Vt.validateSomeNonEmptyLookaheadPath=lq;function HIe(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,br.forEach)(l,function(u){var g=[c];(0,br.forEach)(r,function(f,h){c!==h&&(0,_g.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,_g.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,br.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:No.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function cq(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(o,a,l){var c=(0,br.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,br.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,br.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty($g,"__esModule",{value:!0});$g.validateGrammar=$g.resolveGrammar=void 0;var ix=Gt(),YIe=jj(),jIe=rx(),uq=Sd();function qIe(r){r=(0,ix.defaults)(r,{errMsgProvider:uq.defaultGrammarResolverErrorProvider});var e={};return(0,ix.forEach)(r.rules,function(t){e[t.name]=t}),(0,YIe.resolveGrammar)(e,r.errMsgProvider)}$g.resolveGrammar=qIe;function JIe(r){return r=(0,ix.defaults)(r,{errMsgProvider:uq.defaultGrammarValidatorErrorProvider}),(0,jIe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}$g.validateGrammar=JIe});var ef=w(mn=>{"use strict";var kd=mn&&mn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(mn,"__esModule",{value:!0});mn.EarlyExitException=mn.NotAllInputParsedException=mn.NoViableAltException=mn.MismatchedTokenException=mn.isRecognitionException=void 0;var WIe=Gt(),fq="MismatchedTokenException",hq="NoViableAltException",pq="EarlyExitException",dq="NotAllInputParsedException",Cq=[fq,hq,pq,dq];Object.freeze(Cq);function zIe(r){return(0,WIe.contains)(Cq,r.name)}mn.isRecognitionException=zIe;var uy=function(r){kd(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),VIe=function(r){kd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=fq,s}return e}(uy);mn.MismatchedTokenException=VIe;var XIe=function(r){kd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=hq,s}return e}(uy);mn.NoViableAltException=XIe;var ZIe=function(r){kd(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=dq,n}return e}(uy);mn.NotAllInputParsedException=ZIe;var _Ie=function(r){kd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=pq,s}return e}(uy);mn.EarlyExitException=_Ie});var sx=w(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.attemptInRepetitionRecovery=Ki.Recoverable=Ki.InRuleRecoveryException=Ki.IN_RULE_RECOVERY_EXCEPTION=Ki.EOF_FOLLOW_KEY=void 0;var gy=NA(),gs=Gt(),$Ie=ef(),eye=Jv(),tye=Gn();Ki.EOF_FOLLOW_KEY={};Ki.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function nx(r){this.name=Ki.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Ki.InRuleRecoveryException=nx;nx.prototype=Error.prototype;var rye=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,gs.has)(e,"recoveryEnabled")?e.recoveryEnabled:tye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=mq)},r.prototype.getTokenToInsert=function(e){var t=(0,gy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new $Ie.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,gs.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new nx("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,gs.isEmpty)(t))return!1;var n=this.LA(1),s=(0,gs.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,gs.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,gs.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Ki.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,gs.map)(t,function(n,s){return s===0?Ki.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,gs.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,gs.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Ki.EOF_FOLLOW_KEY)return[gy.EOF];var t=e.ruleName+e.idxInCallingRule+eye.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,gy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,gs.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,gs.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,gs.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Ki.Recoverable=rye;function mq(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=gy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Ki.attemptInRepetitionRecovery=mq});var fy=w(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.getKeyForAutomaticLookahead=Jt.AT_LEAST_ONE_SEP_IDX=Jt.MANY_SEP_IDX=Jt.AT_LEAST_ONE_IDX=Jt.MANY_IDX=Jt.OPTION_IDX=Jt.OR_IDX=Jt.BITS_FOR_ALT_IDX=Jt.BITS_FOR_RULE_IDX=Jt.BITS_FOR_OCCURRENCE_IDX=Jt.BITS_FOR_METHOD_TYPE=void 0;Jt.BITS_FOR_METHOD_TYPE=4;Jt.BITS_FOR_OCCURRENCE_IDX=8;Jt.BITS_FOR_RULE_IDX=12;Jt.BITS_FOR_ALT_IDX=8;Jt.OR_IDX=1<{"use strict";Object.defineProperty(hy,"__esModule",{value:!0});hy.LooksAhead=void 0;var Pa=Pd(),eo=Gt(),Eq=Gn(),Da=fy(),pc=bd(),nye=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,eo.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Eq.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,eo.has)(e,"maxLookahead")?e.maxLookahead:Eq.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,eo.isES2015MapSupported)()?new Map:[],(0,eo.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,eo.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,pc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,eo.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,pc.getProductionDslName)(g)+f,function(){var h=(0,Pa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,Da.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],Da.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,eo.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,Da.MANY_IDX,Pa.PROD_TYPE.REPETITION,g.maxLookahead,(0,pc.getProductionDslName)(g))}),(0,eo.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,Da.OPTION_IDX,Pa.PROD_TYPE.OPTION,g.maxLookahead,(0,pc.getProductionDslName)(g))}),(0,eo.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,Da.AT_LEAST_ONE_IDX,Pa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,pc.getProductionDslName)(g))}),(0,eo.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,Da.AT_LEAST_ONE_SEP_IDX,Pa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,pc.getProductionDslName)(g))}),(0,eo.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,Da.MANY_SEP_IDX,Pa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,pc.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Pa.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,Da.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Pa.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Pa.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,Da.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();hy.LooksAhead=nye});var yq=w(Lo=>{"use strict";Object.defineProperty(Lo,"__esModule",{value:!0});Lo.addNoneTerminalToCst=Lo.addTerminalToCst=Lo.setNodeLocationFull=Lo.setNodeLocationOnlyOffset=void 0;function sye(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(OA,"__esModule",{value:!0});OA.defineNameProp=OA.functionName=OA.classNameFromInstance=void 0;var lye=Gt();function cye(r){return Bq(r.constructor)}OA.classNameFromInstance=cye;var wq="name";function Bq(r){var e=r.name;return e||"anonymous"}OA.functionName=Bq;function uye(r,e){var t=Object.getOwnPropertyDescriptor(r,wq);return(0,lye.isUndefined)(t)||t.configurable?(Object.defineProperty(r,wq,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}OA.defineNameProp=uye});var xq=w(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.validateRedundantMethods=Si.validateMissingCstMethods=Si.validateVisitor=Si.CstVisitorDefinitionError=Si.createBaseVisitorConstructorWithDefaults=Si.createBaseSemanticVisitorConstructor=Si.defaultVisit=void 0;var fs=Gt(),Rd=ox();function Qq(r,e){for(var t=(0,fs.keys)(r),i=t.length,n=0;n: + `+(""+s.join(` + +`).replace(/\n/g,` + `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}Si.createBaseSemanticVisitorConstructor=gye;function fye(r,e,t){var i=function(){};(0,Rd.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,fs.forEach)(e,function(s){n[s]=Qq}),i.prototype=n,i.prototype.constructor=i,i}Si.createBaseVisitorConstructorWithDefaults=fye;var ax;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(ax=Si.CstVisitorDefinitionError||(Si.CstVisitorDefinitionError={}));function bq(r,e){var t=Sq(r,e),i=vq(r,e);return t.concat(i)}Si.validateVisitor=bq;function Sq(r,e){var t=(0,fs.map)(e,function(i){if(!(0,fs.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,Rd.functionName)(r.constructor)+" CST Visitor.",type:ax.MISSING_METHOD,methodName:i}});return(0,fs.compact)(t)}Si.validateMissingCstMethods=Sq;var hye=["constructor","visit","validateVisitor"];function vq(r,e){var t=[];for(var i in r)(0,fs.isFunction)(r[i])&&!(0,fs.contains)(hye,i)&&!(0,fs.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,Rd.functionName)(r.constructor)+` CST Visitor +There is no Grammar Rule corresponding to this method's name. +`,type:ax.REDUNDANT_METHOD,methodName:i});return t}Si.validateRedundantMethods=vq});var Dq=w(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0});py.TreeBuilder=void 0;var tf=yq(),_r=Gt(),Pq=xq(),pye=Gn(),dye=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,_r.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:pye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=_r.NOOP,this.cstFinallyStateUpdate=_r.NOOP,this.cstPostTerminal=_r.NOOP,this.cstPostNonTerminal=_r.NOOP,this.cstPostRule=_r.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=tf.setNodeLocationFull,this.setNodeLocationFromNode=tf.setNodeLocationFull,this.cstPostRule=_r.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=_r.NOOP,this.setNodeLocationFromNode=_r.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=tf.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=tf.setNodeLocationOnlyOffset,this.cstPostRule=_r.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=_r.NOOP,this.setNodeLocationFromNode=_r.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=_r.NOOP,this.setNodeLocationFromNode=_r.NOOP,this.cstPostRule=_r.NOOP,this.setInitialNodeLocation=_r.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,tf.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,tf.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,_r.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Pq.createBaseSemanticVisitorConstructor)(this.className,(0,_r.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,_r.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Pq.createBaseVisitorConstructorWithDefaults)(this.className,(0,_r.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();py.TreeBuilder=dye});var Rq=w(dy=>{"use strict";Object.defineProperty(dy,"__esModule",{value:!0});dy.LexerAdapter=void 0;var kq=Gn(),Cye=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):kq.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?kq.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();dy.LexerAdapter=Cye});var Nq=w(Cy=>{"use strict";Object.defineProperty(Cy,"__esModule",{value:!0});Cy.RecognizerApi=void 0;var Fq=Gt(),mye=ef(),Ax=Gn(),Eye=Sd(),Iye=rx(),yye=dn(),wye=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Ax.DEFAULT_RULE_CONFIG),(0,Fq.contains)(this.definedRulesNames,e)){var n=Eye.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Ax.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Ax.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,Iye.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,mye.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,yye.serializeGrammar)((0,Fq.values)(this.gastProductionsCache))},r}();Cy.RecognizerApi=wye});var Mq=w(Ey=>{"use strict";Object.defineProperty(Ey,"__esModule",{value:!0});Ey.RecognizerEngine=void 0;var Pr=Gt(),Yn=fy(),my=ef(),Lq=Pd(),rf=xd(),Tq=Gn(),Bye=sx(),Oq=NA(),Fd=Vg(),Qye=ox(),bye=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,Qye.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Fd.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Pr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if((0,Pr.isArray)(e)){if((0,Pr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if((0,Pr.isArray)(e))this.tokensMap=(0,Pr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Pr.has)(e,"modes")&&(0,Pr.every)((0,Pr.flatten)((0,Pr.values)(e.modes)),Fd.isTokenType)){var i=(0,Pr.flatten)((0,Pr.values)(e.modes)),n=(0,Pr.uniq)(i);this.tokensMap=(0,Pr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Pr.isObject)(e))this.tokensMap=(0,Pr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Oq.EOF;var s=(0,Pr.every)((0,Pr.values)(e),function(o){return(0,Pr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?Fd.tokenStructuredMatcherNoCategories:Fd.tokenStructuredMatcher,(0,Fd.augmentTokenTypes)((0,Pr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Pr.has)(i,"resyncEnabled")?i.resyncEnabled:Tq.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Pr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:Tq.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(Yn.OR_IDX,t),n=(0,Pr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new my.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,my.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new my.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===Bye.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,Pr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),Oq.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();Ey.RecognizerEngine=bye});var Uq=w(Iy=>{"use strict";Object.defineProperty(Iy,"__esModule",{value:!0});Iy.ErrorHandler=void 0;var lx=ef(),cx=Gt(),Kq=Pd(),Sye=Gn(),vye=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,cx.has)(e,"errorMessageProvider")?e.errorMessageProvider:Sye.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,lx.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,cx.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,cx.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,Kq.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new lx.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,Kq.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new lx.NoViableAltException(c,this.LA(1),l))},r}();Iy.ErrorHandler=vye});var Yq=w(yy=>{"use strict";Object.defineProperty(yy,"__esModule",{value:!0});yy.ContentAssist=void 0;var Hq=xd(),Gq=Gt(),xye=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,Gq.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,Hq.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,Gq.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new Hq.NextAfterTokenWalker(n,e).startWalking();return s},r}();yy.ContentAssist=xye});var Zq=w(Qy=>{"use strict";Object.defineProperty(Qy,"__esModule",{value:!0});Qy.GastRecorder=void 0;var En=Gt(),To=dn(),Pye=yd(),Wq=Vg(),zq=NA(),Dye=Gn(),kye=fy(),By={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(By);var jq=!0,qq=Math.pow(2,kye.BITS_FOR_OCCURRENCE_IDX)-1,Vq=(0,zq.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:Pye.Lexer.NA});(0,Wq.augmentTokenTypes)([Vq]);var Xq=(0,zq.createTokenInstance)(Vq,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Xq);var Rye={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},Fye=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return Dye.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new To.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return Nd.call(this,To.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){Nd.call(this,To.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){Nd.call(this,To.RepetitionMandatoryWithSeparator,t,e,jq)},r.prototype.manyInternalRecord=function(e,t){Nd.call(this,To.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){Nd.call(this,To.RepetitionWithSeparator,t,e,jq)},r.prototype.orInternalRecord=function(e,t){return Nye.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(wy(t),!e||(0,En.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=e.ruleName,a=new To.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Rye:By},r.prototype.consumeInternalRecord=function(e,t,i){if(wy(t),!(0,Wq.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=new To.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),Xq},r}();Qy.GastRecorder=Fye;function Nd(r,e,t,i){i===void 0&&(i=!1),wy(t);var n=(0,En.peek)(this.recordingProdStack),s=(0,En.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,En.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),By}function Nye(r,e){var t=this;wy(e);var i=(0,En.peek)(this.recordingProdStack),n=(0,En.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new To.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,En.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,En.some)(s,function(l){return(0,En.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,En.forEach)(s,function(l){var c=new To.Alternative({definition:[]});o.definition.push(c),(0,En.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,En.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),By}function Jq(r){return r===0?"":""+r}function wy(r){if(r<0||r>qq){var e=new Error("Invalid DSL Method idx value: <"+r+`> + `+("Idx value must be a none negative value smaller than "+(qq+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var $q=w(by=>{"use strict";Object.defineProperty(by,"__esModule",{value:!0});by.PerformanceTracer=void 0;var _q=Gt(),Lye=Gn(),Tye=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,_q.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Lye.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,_q.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();by.PerformanceTracer=Tye});var eJ=w(Sy=>{"use strict";Object.defineProperty(Sy,"__esModule",{value:!0});Sy.applyMixins=void 0;function Oye(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}Sy.applyMixins=Oye});var Gn=w(dr=>{"use strict";var iJ=dr&&dr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dr,"__esModule",{value:!0});dr.EmbeddedActionsParser=dr.CstParser=dr.Parser=dr.EMPTY_ALT=dr.ParserDefinitionErrorType=dr.DEFAULT_RULE_CONFIG=dr.DEFAULT_PARSER_CONFIG=dr.END_OF_FILE=void 0;var _i=Gt(),Mye=Uj(),tJ=NA(),nJ=Sd(),rJ=gq(),Kye=sx(),Uye=Iq(),Hye=Dq(),Gye=Rq(),Yye=Nq(),jye=Mq(),qye=Uq(),Jye=Yq(),Wye=Zq(),zye=$q(),Vye=eJ();dr.END_OF_FILE=(0,tJ.createTokenInstance)(tJ.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(dr.END_OF_FILE);dr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:nJ.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});dr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var Xye;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(Xye=dr.ParserDefinitionErrorType||(dr.ParserDefinitionErrorType={}));function Zye(r){return r===void 0&&(r=void 0),function(){return r}}dr.EMPTY_ALT=Zye;var vy=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,_i.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=(0,_i.has)(t,"skipValidations")?t.skipValidations:dr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,_i.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,_i.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,rJ.resolveGrammar)({rules:(0,_i.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,_i.isEmpty)(n)&&e.skipValidations===!1){var s=(0,rJ.validateGrammar)({rules:(0,_i.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,_i.values)(e.tokensMap),errMsgProvider:nJ.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,_i.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,Mye.computeAllProdsFollows)((0,_i.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,_i.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,_i.isEmpty)(e.definitionErrors))throw t=(0,_i.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: + `+t.join(` +------------------------------- +`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();dr.Parser=vy;(0,Vye.applyMixins)(vy,[Kye.Recoverable,Uye.LooksAhead,Hye.TreeBuilder,Gye.LexerAdapter,jye.RecognizerEngine,Yye.RecognizerApi,qye.ErrorHandler,Jye.ContentAssist,Wye.GastRecorder,zye.PerformanceTracer]);var _ye=function(r){iJ(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(vy);dr.CstParser=_ye;var $ye=function(r){iJ(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(vy);dr.EmbeddedActionsParser=$ye});var oJ=w(xy=>{"use strict";Object.defineProperty(xy,"__esModule",{value:!0});xy.createSyntaxDiagramsCode=void 0;var sJ=Dv();function ewe(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+sJ.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+sJ.VERSION+"/diagrams/diagrams.css":s,a=` + + + + + +`,l=` + +`,c=` +