diff --git a/.eslintrc.yml b/.eslintrc.yml deleted file mode 100644 index 5ab7a028..00000000 --- a/.eslintrc.yml +++ /dev/null @@ -1,91 +0,0 @@ -parser: "@typescript-eslint/parser" -extends: - - airbnb-base -parserOptions: - ecmaVersion: 2018 - project: ./tsconfig.lint.json -plugins: - - import -env: - node: true - browser: true -rules: - "@typescript-eslint/lines-between-class-members": off - arrow-parens: - - error - - as-needed - class-methods-use-this: off - eol-last: error - import/extensions: off - import/no-cycle: off - import/no-unresolved: off - import/prefer-default-export: off - linebreak-style: - - error - - unix - lines-between-class-members: off - max-len: off - no-trailing-spaces: error - no-underscore-dangle: off - no-dupe-class-members: off - no-unused-vars: off - no-useless-constructor: off - no-empty-function: off - no-param-reassign: off - no-shadow: off - no-redeclare: off - padding-line-between-statements: - - error - - blankLine: always - prev: "*" - next: - - block - - block-like - - cjs-export - - class - - const - - export - - import - - let - - var - - blankLine: always - prev: - - block - - block-like - - cjs-export - - class - - const - - export - - import - - let - - var - next: "*" - - blankLine: any - prev: - - const - - let - - var - next: - - const - - let - - var - - blankLine: never - prev: - - import - next: - - import - - blankLine: always - prev: - - import - next: - - export - - blankLine: any - prev: - - export - next: - - export -settings: - import/parsers: - "@typescript-eslint/parser": - - .ts - diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index aa0d970d..e4e77615 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,83 +1,116 @@ -name: Comprehensive CI +name: πŸ› οΈ CI on: push: + branches: + - '**' # Runs on all branch pushes + tags-ignore: + - '**' # Ignore all tag pushes repository_dispatch: types: [ pr-approved ] +env: + PNPM_VERSION: '10' + jobs: build: - name: Build + name: πŸ—οΈ Build runs-on: ubuntu-latest strategy: matrix: - node-version: [ 16.x, 18.x, 20.x ] + node-version: [20.x, 22.x] steps: - - name: Checkout sources + - name: πŸ”„ Checkout sources uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} + - name: βš™οΈ Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - name: Installing dependencies - run: npm ci - - name: Building sources - run: npm run build + - name: πŸ“¦ Install pnpm + uses: pnpm/action-setup@v4 + with: + version: ${{ env.PNPM_VERSION }} + - name: πŸ“Œ Installing dependencies + run: pnpm install --frozen-lockfile + - name: πŸ› οΈ Building sources + run: pnpm run build lint: - name: Lint Code + name: πŸ” Lint Code needs: build runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20.x, 22.x] steps: - - name: Checkout sources + - name: πŸ”„ Checkout sources uses: actions/checkout@v4 - - name: Use Node.js 18.x + - name: βš™οΈ Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: - node-version: 18.x - - name: Installing dependencies - run: npm ci - - name: Linting - run: npm run lint + node-version: ${{ matrix.node-version }} + - name: πŸ“¦ Install pnpm + uses: pnpm/action-setup@v4 + with: + version: ${{ env.PNPM_VERSION }} + - name: πŸ“Œ Installing dependencies + run: pnpm install --frozen-lockfile + - name: ✨ Linting + run: pnpm run lint env: CI: true test_unit: - name: Unit Tests + name: πŸ§ͺ Unit Tests needs: build runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20.x, 22.x] steps: - - name: Checkout sources + - name: πŸ”„ Checkout sources uses: actions/checkout@v4 - - name: Use Node.js 18.x + - name: βš™οΈ Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: - node-version: 18.x - - name: Installing dependencies - run: npm ci - - name: Running unit tests - run: npm run test:unit + node-version: ${{ matrix.node-version }} + - name: πŸ“¦ Install pnpm + uses: pnpm/action-setup@v4 + with: + version: ${{ env.PNPM_VERSION }} + - name: πŸ“Œ Installing dependencies + run: pnpm install --frozen-lockfile + - name: πŸš€ Running unit tests + run: pnpm run test:unit test_integration: - name: Integration Tests - needs: [ lint, test_unit ] + name: 🧩 Integration Tests + needs: + - lint + - test_unit runs-on: ubuntu-latest strategy: - matrix: - node-version: [ 18.x ] max-parallel: 1 + matrix: + node-version: [20.x, 22.x] steps: - - name: Checkout sources + - name: πŸ”„ Checkout sources uses: actions/checkout@v4 - - name: Use Node.js 18.x + - name: βš™οΈ Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 - - name: Installing dependencies - run: npm ci - - name: Creating `.env` file + with: + node-version: ${{ matrix.node-version }} + - name: πŸ“¦ Install pnpm + uses: pnpm/action-setup@v4 + with: + version: ${{ env.PNPM_VERSION }} + - name: πŸ“Œ Installing dependencies + run: pnpm install --frozen-lockfile + - name: πŸ“ Creating `.env` file run: | touch .env echo HOST=${{ secrets.HOST }} >> .env echo EMAIL=${{ secrets.EMAIL }} >> .env echo API_TOKEN=${{ secrets.API_TOKEN }} >> .env - - name: Running integration tests - run: npm run test:integration + - name: πŸš€ Running integration tests + run: pnpm run test:integration diff --git a/.github/workflows/publish-dev.yml b/.github/workflows/publish-dev.yml new file mode 100644 index 00000000..fb3dce89 --- /dev/null +++ b/.github/workflows/publish-dev.yml @@ -0,0 +1,54 @@ +name: πŸš€ Publish to NPM Dev Channel + +on: + workflow_dispatch + +env: + NODE_VERSION: '20.x' + PNPM_VERSION: '10' + +permissions: + contents: read + +jobs: + build-and-publish: + runs-on: ubuntu-latest + + steps: + - name: πŸ”„ Checkout code + uses: actions/checkout@v4 + + - name: βš™οΈ Setup Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + registry-url: https://registry.npmjs.org/ + + - name: πŸ“¦ Install pnpm + uses: pnpm/action-setup@v4 + with: + version: ${{ env.PNPM_VERSION }} + + - name: πŸ“Œ Install dependencies + run: pnpm install --frozen-lockfile + + - name: πŸ› οΈ Run build + run: pnpm run build + + - name: πŸ”– Update package version + id: update-version + run: | + CURRENT_VERSION=$(node -p "require('./package.json').version") + TIMESTAMP=$(date -u +"%Y%m%d%H%M%S") + NEW_VERSION="${CURRENT_VERSION}-dev${TIMESTAMP}" + pnpm version --no-git-tag-version $NEW_VERSION + echo "New version: $NEW_VERSION" + echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV + + - name: πŸ”„ Update package-lock.json + run: pnpm install + + - name: πŸ“€ Publish to NPM Dev Channel + run: pnpm publish --tag dev --no-git-checks + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index aa1f77db..751d0158 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,188 +1,153 @@ -name: NPM publish -on: workflow_dispatch +name: πŸš€ Publish to NPM + +on: + push: + tags: + - 'v*.*.*' + +env: + NODE_VERSION: '20.x' + PNPM_VERSION: '10' + +permissions: + contents: read jobs: - build: - name: Build + build-and-test: + name: πŸ—οΈ Build and Test runs-on: ubuntu-latest steps: - - name: Checkout sources + - name: πŸ”„ Checkout repository uses: actions/checkout@v4 - - name: Use Node.js 18.x - uses: actions/setup-node@v4 with: - node-version: 18 - - name: Installing dependencies - run: npm ci - - name: Building sources - run: npm run build - - lint: - name: Lint Code - needs: build - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - name: Use Node.js 18.x + fetch-depth: 0 + + - name: βš™οΈ Setup Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: - node-version: 18 - - name: Installing dependencies - run: npm ci - - name: Linting - run: npm run lint + node-version: ${{ env.NODE_VERSION }} + + - name: πŸ“¦ Install pnpm + uses: pnpm/action-setup@v4 + with: + version: ${{ env.PNPM_VERSION }} + + - name: πŸ“Œ Install dependencies + run: pnpm install --frozen-lockfile + + - name: πŸ› οΈ Run build + run: pnpm run build + + - name: πŸ” Run lint + run: pnpm run lint env: CI: true - test_unit: - name: Unit Tests - needs: build + - name: πŸ§ͺ Run unit tests + run: pnpm run test:unit + + - name: 🧩 Run integration tests + run: pnpm run test:integration + env: + HOST: ${{ secrets.HOST }} + EMAIL: ${{ secrets.EMAIL }} + API_TOKEN: ${{ secrets.API_TOKEN }} + + publish-package: + name: πŸš€ Publish Package + needs: build-and-test runs-on: ubuntu-latest + permissions: + contents: write + outputs: + version: ${{ steps.version.outputs.version }} steps: - - name: Checkout sources + - name: πŸ”„ Checkout repository uses: actions/checkout@v4 - - name: Use Node.js 18.x - uses: actions/setup-node@v4 with: - node-version: 18 - - name: Installing dependencies - run: npm ci - - name: Running unit tests - run: npm run test:unit - - test_integration: - name: Integration Tests - needs: - - lint - - test_unit - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - name: Use Node.js 18.x + fetch-depth: 0 + + - name: βš™οΈ Setup Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: - node-version: 18 - - name: Installing dependencies - run: npm ci - - name: Creating `.env` file - run: | - touch .env - echo HOST=${{ secrets.HOST }} >> .env - echo EMAIL=${{ secrets.EMAIL }} >> .env - echo API_TOKEN=${{ secrets.API_TOKEN }} >> .env - - name: Running integration tests - run: npm run test:integration - - publish: - name: Package publish - needs: - - test_integration - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - name: Use Node.js 18.x - uses: actions/setup-node@v4 + node-version: ${{ env.NODE_VERSION }} + registry-url: 'https://registry.npmjs.org' + + - name: πŸ“¦ Install pnpm + uses: pnpm/action-setup@v4 with: - node-version: 18 - registry-url: https://registry.npmjs.org/ - - name: Installing dependencies - run: npm ci - - name: Building sources - run: npm run build - - name: Publishing - run: npm publish + version: ${{ env.PNPM_VERSION }} + + - name: πŸ”– Get and validate version + id: version + run: | + if [[ $GITHUB_REF == refs/tags/v* ]]; then + TAG_VERSION=${GITHUB_REF#refs/tags/v} + echo "Using version from tag: $TAG_VERSION" + CURRENT_VERSION=$(node -p "require('./package.json').version") + + if [ "$TAG_VERSION" != "$CURRENT_VERSION" ]; then + echo "Updating package version to match tag..." + npm version $TAG_VERSION --no-git-tag-version + pnpm install + git config user.name "GitHub Actions" + git config user.email "actions@github.com" + git add package.json pnpm-lock.yaml + git commit -m "Update version to $TAG_VERSION [skip ci]" + git push + fi + else + TAG_VERSION=$(node -p "require('./package.json').version") + echo "Using version from package.json: $TAG_VERSION" + fi + + echo "version=$TAG_VERSION" >> $GITHUB_OUTPUT + echo "VERSION=$TAG_VERSION" >> $GITHUB_ENV + env: + GITHUB_TOKEN: ${{ secrets.PAT }} + + - name: πŸ“Œ Install dependencies + run: pnpm install --frozen-lockfile + + - name: πŸ› οΈ Build package + run: pnpm run build + + - name: πŸ“€ Publish to NPM + run: pnpm publish --no-git-checks env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - publish-docs: - name: Docs publish - needs: - - publish + deploy-documentation: + name: πŸ“š Deploy Documentation + needs: publish-package runs-on: ubuntu-latest steps: - - name: Checkout code + - name: πŸ”„ Checkout repository uses: actions/checkout@v4 with: ref: master - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: 18 - - name: Install dependencies - run: npm ci - - name: Generate docs - run: npm run doc - - name: Extract version - id: pkg - run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_ENV - - name: Checkout docs branch - uses: actions/checkout@v4 - with: - ref: docs - clean: false - - name: Copy docs to root - run: | - cp -r docs/* . - - name: Commit and push docs - run: | - git config user.name "GitHub Actions" - git config user.email "actions@github.com" - git add . - git commit -m "Update documentation for version v${{ steps.pkg.outputs.version }}" - git push - - creating-git-tag: - name: Create Git Tag - needs: - - publish - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - name: Use Node.js 18.x.x - uses: actions/setup-node@v4 - with: - node-version: 18 - - name: Extract version from package.json - run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_ENV - - name: Create and Push Git Tag - run: | - git config user.name "GitHub Actions" - git config user.email "actions@github.com" - TAG="v${{ env.version }}" - git tag $TAG - git push origin $TAG - - creating-github-release: - name: Create GitHub Release - needs: - - creating-git-tag - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - name: Use Node.js 18.x.x + + - name: βš™οΈ Setup Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: - node-version: 18 - - name: Extract version from package.json - run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV - - name: Extract Changelog Entry - id: changelog - uses: juliangruber/read-file-action@v1 + node-version: ${{ env.NODE_VERSION }} + + - name: πŸ“¦ Install pnpm + uses: pnpm/action-setup@v4 with: - path: ./CHANGELOG.md - - name: Parse Changelog Entry - run: | - VERSION=${{ env.VERSION }} - CHANGELOG_CONTENT=$(echo '${{ steps.changelog.outputs.content }}' | awk "/### \\\${VERSION}/,/### /{print; if (/### / && !/### \\\${VERSION}/){exit}}") - echo "CHANGELOG=$CHANGELOG_CONTENT" >> $GITHUB_ENV - - name: Create GitHub Release - uses: softprops/action-gh-release@v1 + version: ${{ env.PNPM_VERSION }} + + - name: πŸ“Œ Install dependencies + run: pnpm install --frozen-lockfile + + - name: πŸ“ Generate documentation + run: pnpm run doc + + - name: πŸš€ Deploy to docs branch + uses: JamesIves/github-pages-deploy-action@v4 with: - tag_name: v${{ env.VERSION }} - name: Release v${{ env.VERSION }} - body: ${{ env.CHANGELOG }} + branch: docs + folder: docs + clean: true + token: '${{ secrets.PAT }}' + commit-message: "docs: Update documentation for v${{ needs.publish-package.outputs.version }} [skip ci]" diff --git a/.gitignore b/.gitignore index 3c68a078..1b46ebbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ .idea/ node_modules/ -out/ +dist/ docs/ .DS_Store diff --git a/CHANGELOG.md b/CHANGELOG.md index b8cf1724..f71b9c68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [2.0.0] - 2025-05-09 +### **Breaking Changes** ⚠️ +- **Deprecated APIs removed**: APIs marked as deprecated in v1.x have been removed. +- **Server API removed**: Server-related code and support are no longer included. +- **Node.js version**: Minimum supported version is now **Node 20**. + - Upgrade your environment if using Node < 20. + +### **Major Improvements** ✨ +- **Dual CJS/ESM support**: Added ESM (ECMAScript Modules) support **alongside** existing CommonJS. + - Use `import` (ESM) or `require` (CJS) β€” both work. + - ESM entry point: `dist/esm/index.js` (via `"module"` field in `package.json`). +- **Testing**: Replaced `ava` with [`vitest`](https://vitest.dev/) for faster, modern testing. +- **Security**: Fixed JWT expiry time handling. + - Tokens now respect configured TTL consistently. + +### **Other Changes** +- **Telemetry**: All telemetry/tracking code has been removed. + - No data is collected by the package. + ### [1.7.3] - 2024-03-04 - Dependencies updated diff --git a/README.md b/README.md index 50c43307..35669fd3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@
- Confluence.js logo + Confluence.js logo NPM version NPM downloads per month @@ -23,7 +23,6 @@ Usability, consistency, and performance are key focuses of confluence.js, and it - [Basic](#basic-authentication) - [OAuth 2.0](#oauth-20) - [JWT](#jwt) - - [Personal access token](#personal-access-token) - [Your first request and using algorithm](#your-first-request-and-using-algorithm) - [`apiPrefix` config parameter](#apiprefix-config-parameter) - [Decreasing Webpack bundle size](#decreasing-webpack-bundle-size) @@ -32,7 +31,7 @@ Usability, consistency, and performance are key focuses of confluence.js, and it ## Installation -**Node.js 10.0.0 or newer is required.** +**Node.js 20.0.0 or newer is required.** Install with the npm: @@ -46,6 +45,12 @@ Install with the yarn: yarn add confluence.js ``` +Install with the pnpm + +```bash +pnpm add confluence.js +``` + ## Usage #### Authentication @@ -54,25 +59,9 @@ There are several types of authentication to gain access to the Confluence API. ##### [Basic authentication](https://developer.atlassian.com/cloud/confluence/basic-auth-for-rest-apis/) -Basic authentication allows you to log in with credentials. You can use username and password, but this login method is not supported in the online version, and most standalone versions, so it's better to release API Token, read how to do it [here](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/), and use it together with email. - -Username and password example: - -```typescript -import { ConfluenceClient } from 'confluence.js'; - -const client = new ConfluenceClient({ - host: 'https://your-domain.atlassian.net', - authentication: { - basic: { - username: 'YOUR_USERNAME', - password: 'YOUR_PASSWORD', - }, - }, -}); -``` - -Email and API Token example: +// TODO refine +Basic authentication allows you to log in with credentials. +How to release API Token, read how to do it [here](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/), and use it together with email. ```typescript import { ConfluenceClient } from 'confluence.js'; @@ -124,19 +113,6 @@ const client = new ConfluenceClient({ }); ``` -##### [Personal access token](https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html) - -```typescript -import { ConfluenceClient } from 'confluence.js'; - -const client = new ConfluenceClient({ - host: 'https://your-domain.atlassian.net', - authentication: { - personalAccessToken: 'secrectPAT', - }, -}); -``` - #### Your first request and using algorithm ```typescript @@ -293,11 +269,12 @@ If you use Webpack and need to reduce the size of the assembly, you can create y ```typescript import { BaseClient } from 'confluence.js'; -import { Api } from 'confluence.js'; +import { Content } from 'confluence.js/api/content'; +import { Space } from 'confluence.js/api/space'; export class CustomConfluenceClient extends BaseClient { - content = new Api.Content(this); - space = new Api.Space(this); + content = new Content(this); + space = new Space(this); } ``` diff --git a/assets/logo.svg b/assets/logo.svg deleted file mode 100644 index b2f6904c..00000000 --- a/assets/logo.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 00000000..2954ddc6 --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,62 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; +import { defineConfig } from 'eslint/config'; +import stylisticJs from '@stylistic/eslint-plugin-js'; +import stylisticTs from '@stylistic/eslint-plugin-ts'; + +export default defineConfig([ + { files: ['**/*.{js,mjs,cjs,ts}'], plugins: { js }, extends: ['js/recommended'] }, + { files: ['**/*.{js,mjs,cjs,ts}'], languageOptions: { globals: { ...globals.browser, ...globals.node } } }, + tseslint.configs.recommended, + { + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + plugins: { + '@stylistic/js': stylisticJs, + '@stylistic/ts': stylisticTs, + }, + rules: { + '@stylistic/js/no-trailing-spaces': 'error', + '@stylistic/ts/indent': ['error', 2], + '@stylistic/ts/lines-between-class-members': [ + 'error', + 'always', + { + exceptAfterOverload: true, + exceptAfterSingleLine: true, + }, + ], + '@stylistic/ts/padding-line-between-statements': [ + 'error', + // Return statements + { blankLine: 'always', prev: '*', next: 'return' }, + // Import statements + { blankLine: 'always', prev: 'import', next: '*' }, + { blankLine: 'any', prev: 'import', next: 'import' }, + ], + '@stylistic/ts/quotes': ['error', 'single'], + '@stylistic/ts/semi': ['error', 'always'], + '@typescript-eslint/consistent-type-imports': [ + 'error', + { + prefer: 'type-imports', + fixStyle: 'separate-type-imports', + }, + ], + '@typescript-eslint/no-empty-object-type': 'off', + '@typescript-eslint/no-redundant-type-constituents': 'off', // todo fix it + '@typescript-eslint/no-unnecessary-condition': 'error', // todo fix it + '@typescript-eslint/no-unsafe-argument': 'off', // todo fix it + '@typescript-eslint/no-unsafe-assignment': 'off', // todo fix it + '@typescript-eslint/no-unsafe-call': 'off', // todo fix it + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/prefer-optional-chain': 'error', + '@stylistic/ts/object-curly-spacing': ["error", "always"] + }, + }, +]); diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 00000000..08be5dab --- /dev/null +++ b/favicon.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index bbb90ed2..00000000 --- a/package-lock.json +++ /dev/null @@ -1,6295 +0,0 @@ -{ - "name": "confluence.js", - "version": "1.7.4", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "confluence.js", - "version": "1.7.4", - "license": "MIT", - "dependencies": { - "atlassian-jwt": "^2.0.3", - "axios": "^1.6.8", - "form-data": "^4.0.0", - "oauth": "^0.10.0", - "tslib": "^2.6.2" - }, - "devDependencies": { - "@swc-node/register": "^1.9.0", - "@swc/helpers": "^0.5.8", - "@types/express": "^4.17.21", - "@types/oauth": "^0.9.4", - "@types/sinon": "^17.0.3", - "@typescript-eslint/eslint-plugin": "^7.5.0", - "@typescript-eslint/parser": "^7.5.0", - "ava": "^6.1.2", - "dotenv": "^16.4.5", - "eslint": "^8.57.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "prettier": "^3.2.5", - "prettier-plugin-jsdoc": "^1.3.0", - "sinon": "^17.0.1", - "typedoc": "^0.25.12", - "typedoc-plugin-extras": "^3.0.0", - "typescript": "^5.4.4" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "dev": true, - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dev": true, - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", - "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true - }, - "node_modules/@swc-node/core": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@swc-node/core/-/core-1.13.0.tgz", - "integrity": "sha512-lFPD4nmy4ifAOVMChFjwlpXN5KQXvegqeyuzz1KQz42q1lf+cL3Qux1/GteGuZjh8HC+Rj1RdNrHpE/MCfJSTw==", - "dev": true, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@swc/core": ">= 1.3", - "@swc/types": ">= 0.1" - } - }, - "node_modules/@swc-node/register": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.9.0.tgz", - "integrity": "sha512-i0iYInD4q5v3xQC6bKvs0QtfUxu197CU5qKALmpxEqTYs7sIhQ7KFLe3kP+eAR4gRkJTvAgjQgrokXLN2jZrOw==", - "dev": true, - "dependencies": { - "@swc-node/core": "^1.13.0", - "@swc-node/sourcemap-support": "^0.5.0", - "colorette": "^2.0.20", - "debug": "^4.3.4", - "pirates": "^4.0.6", - "tslib": "^2.6.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@swc/core": ">= 1.3", - "typescript": ">= 4.3" - } - }, - "node_modules/@swc-node/sourcemap-support": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.5.0.tgz", - "integrity": "sha512-fbhjL5G0YvFoWwNhWleuBUfotiX+USiA9oJqu9STFw+Hb0Cgnddn+HVS/K5fI45mn92e8V+cHD2jgFjk4w2T9Q==", - "dev": true, - "dependencies": { - "source-map-support": "^0.5.21", - "tslib": "^2.6.2" - } - }, - "node_modules/@swc/core": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.12.tgz", - "integrity": "sha512-QljRxTaUajSLB9ui93cZ38/lmThwIw/BPxjn+TphrYN6LPU3vu9/ykjgHtlpmaXDDcngL4K5i396E7iwwEUxYg==", - "dev": true, - "hasInstallScript": true, - "peer": true, - "dependencies": { - "@swc/counter": "^0.1.2", - "@swc/types": "^0.1.5" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.4.12", - "@swc/core-darwin-x64": "1.4.12", - "@swc/core-linux-arm-gnueabihf": "1.4.12", - "@swc/core-linux-arm64-gnu": "1.4.12", - "@swc/core-linux-arm64-musl": "1.4.12", - "@swc/core-linux-x64-gnu": "1.4.12", - "@swc/core-linux-x64-musl": "1.4.12", - "@swc/core-win32-arm64-msvc": "1.4.12", - "@swc/core-win32-ia32-msvc": "1.4.12", - "@swc/core-win32-x64-msvc": "1.4.12" - }, - "peerDependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.12.tgz", - "integrity": "sha512-BZUUq91LGJsLI2BQrhYL3yARkcdN4TS3YGNS6aRYUtyeWrGCTKHL90erF2BMU2rEwZLLkOC/U899R4o4oiSHfA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.12.tgz", - "integrity": "sha512-Wkk8rq1RwCOgg5ybTlfVtOYXLZATZ+QjgiBNM7pIn03A5/zZicokNTYd8L26/mifly2e74Dz34tlIZBT4aTGDA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.12.tgz", - "integrity": "sha512-8jb/SN67oTQ5KSThWlKLchhU6xnlAlnmnLCCOKK1xGtFS6vD+By9uL+qeEY2krV98UCRTf68WSmC0SLZhVoz5A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.12.tgz", - "integrity": "sha512-DhW47DQEZKCdSq92v5F03rqdpjRXdDMqxfu4uAlZ9Uo1wJEGvY23e1SNmhji2sVHsZbBjSvoXoBLk0v00nSG8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.12.tgz", - "integrity": "sha512-PR57pT3TssnCRvdsaKNsxZy9N8rFg9AKA1U7W+LxbZ/7Z7PHc5PjxF0GgZpE/aLmU6xOn5VyQTlzjoamVkt05g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.12.tgz", - "integrity": "sha512-HLZIWNHWuFIlH+LEmXr1lBiwGQeCshKOGcqbJyz7xpqTh7m2IPAxPWEhr/qmMTMsjluGxeIsLrcsgreTyXtgNA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.12.tgz", - "integrity": "sha512-M5fBAtoOcpz2YQAFtNemrPod5BqmzAJc8pYtT3dVTn1MJllhmLHlphU8BQytvoGr1PHgJL8ZJBlBGdt70LQ7Mw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.12.tgz", - "integrity": "sha512-K8LjjgZ7VQFtM+eXqjfAJ0z+TKVDng3r59QYn7CL6cyxZI2brLU3lNknZcUFSouZD+gsghZI/Zb8tQjVk7aKDQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.12.tgz", - "integrity": "sha512-hflO5LCxozngoOmiQbDPyvt6ODc5Cu9AwTJP9uH/BSMPdEQ6PCnefuUOJLAKew2q9o+NmDORuJk+vgqQz9Uzpg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.12.tgz", - "integrity": "sha512-3A4qMtddBDbtprV5edTB/SgJn9L+X5TL7RGgS3eWtEgn/NG8gA80X/scjf1v2MMeOsrcxiYhnemI2gXCKuQN2g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true, - "peer": true - }, - "node_modules/@swc/helpers": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.8.tgz", - "integrity": "sha512-lruDGw3pnfM3wmZHeW7JuhkGQaJjPyiKjxeGhdmfoOT53Ic9qb5JLDNaK2HUdl1zLDeX28H221UvKjfdvSLVMg==", - "dev": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@swc/types": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.6.tgz", - "integrity": "sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==", - "dev": true, - "peer": true, - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", - "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/mdast": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", - "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true - }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.12.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.4.tgz", - "integrity": "sha512-E+Fa9z3wSQpzgYQdYmme5X3OTuejnnTx88A6p6vkkJosR3KBz+HpE3kqNm98VE6cfLFcISx7zW7MsJkH6KwbTw==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/oauth": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@types/oauth/-/oauth-0.9.4.tgz", - "integrity": "sha512-qk9orhti499fq5XxKCCEbd0OzdPZuancneyse3KtR+vgMiHRbh+mn8M4G6t64ob/Fg+GZGpa565MF/2dKWY32A==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/qs": { - "version": "6.9.14", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", - "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dev": true, - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/sinon": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", - "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", - "dev": true, - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", - "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", - "dev": true - }, - "node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.5.0.tgz", - "integrity": "sha512-HpqNTH8Du34nLxbKgVMGljZMG0rJd2O9ecvr2QLYp+7512ty1j42KnsFwspPXg1Vh8an9YImf6CokUBltisZFQ==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.5.0", - "@typescript-eslint/type-utils": "7.5.0", - "@typescript-eslint/utils": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.5.0.tgz", - "integrity": "sha512-cj+XGhNujfD2/wzR1tabNsidnYRaFfEkcULdcIyVBYcXjBvBKOes+mpMBP7hMpOyk+gBcfXsrg4NBGAStQyxjQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.5.0", - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/typescript-estree": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.5.0.tgz", - "integrity": "sha512-Z1r7uJY0MDeUlql9XJ6kRVgk/sP11sr3HKXn268HZyqL7i4cEfrdFuSSY/0tUqT37l5zT0tJOsuDP16kio85iA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.5.0.tgz", - "integrity": "sha512-A021Rj33+G8mx2Dqh0nMO9GyjjIBK3MqgVgZ2qlKf6CJy51wY/lkkFqq3TqqnH34XyAHUkq27IjlUkWlQRpLHw==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "7.5.0", - "@typescript-eslint/utils": "7.5.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.5.0.tgz", - "integrity": "sha512-tv5B4IHeAdhR7uS4+bf8Ov3k793VEVHd45viRRkehIUZxm0WF82VPiLgHzA/Xl4TGPg1ZD49vfxBKFPecD5/mg==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.5.0.tgz", - "integrity": "sha512-YklQQfe0Rv2PZEueLTUffiQGKQneiIEKKnfIqPIOxgM9lKSZFCjT5Ad4VqRKj/U4+kQE3fa8YQpskViL7WjdPQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.5.0.tgz", - "integrity": "sha512-3vZl9u0R+/FLQcpy2EHyRGNqAS/ofJ3Ji8aebilfJe+fobK8+LbIFmrHciLVDxjDoONmufDcnVSF38KwMEOjzw==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.5.0", - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/typescript-estree": "7.5.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.5.0.tgz", - "integrity": "sha512-mcuHM/QircmA6O7fy6nn2w/3ditQkj+SgtOc8DW3uQ10Yfj42amm2i+6F2K4YAOPNNTmE6iM1ynM6lrSwdendA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.5.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@vercel/nft": { - "version": "0.26.4", - "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.26.4.tgz", - "integrity": "sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==", - "dev": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.5", - "@rollup/pluginutils": "^4.0.0", - "acorn": "^8.6.0", - "acorn-import-attributes": "^1.9.2", - "async-sema": "^3.1.1", - "bindings": "^1.4.0", - "estree-walker": "2.0.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.2", - "node-gyp-build": "^4.2.2", - "resolve-from": "^5.0.0" - }, - "bin": { - "nft": "out/cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "dev": true - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrgv": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz", - "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/arrify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", - "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/async-sema": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", - "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/atlassian-jwt": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atlassian-jwt/-/atlassian-jwt-2.0.3.tgz", - "integrity": "sha512-G9oO3HHS1UKgsLRXj6nNKv2TY6g3PleBCdzHwbFeVKg+18GBFIMRz+ApxuOuWAgcL7RngNFF5rGNtw1Ss3hvTg==", - "dependencies": { - "jsuri": "^1.3.1", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/ava": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/ava/-/ava-6.1.2.tgz", - "integrity": "sha512-WcpxJ8yZ7mk9ABTinD0IAjcemovSeVGjuuwZx0JS9johREWFeLTl8UP6wd7l6nmnrWqkKZdwaD71a/ocH4qPKw==", - "dev": true, - "dependencies": { - "@vercel/nft": "^0.26.2", - "acorn": "^8.11.3", - "acorn-walk": "^8.3.2", - "ansi-styles": "^6.2.1", - "arrgv": "^1.0.2", - "arrify": "^3.0.0", - "callsites": "^4.1.0", - "cbor": "^9.0.1", - "chalk": "^5.3.0", - "chunkd": "^2.0.1", - "ci-info": "^4.0.0", - "ci-parallel-vars": "^1.0.1", - "cli-truncate": "^4.0.0", - "code-excerpt": "^4.0.0", - "common-path-prefix": "^3.0.0", - "concordance": "^5.0.4", - "currently-unhandled": "^0.4.1", - "debug": "^4.3.4", - "emittery": "^1.0.1", - "figures": "^6.0.1", - "globby": "^14.0.0", - "ignore-by-default": "^2.1.0", - "indent-string": "^5.0.0", - "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "matcher": "^5.0.0", - "memoize": "^10.0.0", - "ms": "^2.1.3", - "p-map": "^7.0.1", - "package-config": "^5.0.0", - "picomatch": "^3.0.1", - "plur": "^5.1.0", - "pretty-ms": "^9.0.0", - "resolve-cwd": "^3.0.0", - "stack-utils": "^2.0.6", - "strip-ansi": "^7.1.0", - "supertap": "^3.0.1", - "temp-dir": "^3.0.0", - "write-file-atomic": "^5.0.1", - "yargs": "^17.7.2" - }, - "bin": { - "ava": "entrypoints/cli.mjs" - }, - "engines": { - "node": "^18.18 || ^20.8 || ^21" - }, - "peerDependencies": { - "@ava/typescript": "*" - }, - "peerDependenciesMeta": { - "@ava/typescript": { - "optional": true - } - } - }, - "node_modules/ava/node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", - "dev": true, - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ava/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ava/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-searching": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/binary-searching/-/binary-searching-2.0.5.tgz", - "integrity": "sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA==", - "dev": true - }, - "node_modules/bindings": { - "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, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.1.0.tgz", - "integrity": "sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cbor": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", - "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", - "dev": true, - "dependencies": { - "nofilter": "^3.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chunkd": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", - "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==", - "dev": true - }, - "node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/ci-parallel-vars": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", - "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", - "dev": true - }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/code-excerpt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", - "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", - "dev": true, - "dependencies": { - "convert-to-spaces": "^2.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "dev": true, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concordance": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", - "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", - "dev": true, - "dependencies": { - "date-time": "^3.1.0", - "esutils": "^2.0.3", - "fast-diff": "^1.2.0", - "js-string-escape": "^1.0.1", - "lodash": "^4.17.15", - "md5-hex": "^3.0.1", - "semver": "^7.3.2", - "well-known-symbols": "^2.0.0" - }, - "engines": { - "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" - } - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "node_modules/convert-to-spaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", - "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", - "dev": true, - "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/date-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", - "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", - "dev": true, - "dependencies": { - "time-zone": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/debug": { - "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" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug/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 - }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dev": true, - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dev": true, - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/emittery": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.0.3.tgz", - "integrity": "sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", - "dev": true - }, - "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", - "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "dev": true, - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-uri-to-path": { - "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 - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up-simple": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", - "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gauge/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", - "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", - "dev": true, - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.1.0.tgz", - "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==", - "dev": true, - "engines": { - "node": ">=10 <11 || >=12 <13 || >=14" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "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" - } - }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "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 - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", - "dev": true - }, - "node_modules/jsuri": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsuri/-/jsuri-1.3.1.tgz", - "integrity": "sha512-LLdAeqOf88/X0hylAI7oSir6QUsz/8kOW0FcJzzu/SJRfORA/oPHycAOthkNp7eLPlTAbqVDFbqNRHkRVzEA3g==", - "engines": { - "node": "*" - } - }, - "node_modules/just-extend": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", - "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/load-json-file": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", - "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lru-cache": { - "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" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/matcher": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-5.0.0.tgz", - "integrity": "sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/matcher/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/md5-hex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", - "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", - "dev": true, - "dependencies": { - "blueimp-md5": "^2.10.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", - "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", - "dev": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dev": true, - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/memoize": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.0.0.tgz", - "integrity": "sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==", - "dev": true, - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/memoize?sponsor=1" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", - "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", - "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/nise": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", - "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/text-encoding": "^0.7.2", - "just-extend": "^6.2.0", - "path-to-regexp": "^6.2.1" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", - "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", - "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true, - "engines": { - "node": ">=12.19" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/oauth": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.10.0.tgz", - "integrity": "sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q==" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "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" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", - "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-config": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/package-config/-/package-config-5.0.0.tgz", - "integrity": "sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==", - "dev": true, - "dependencies": { - "find-up-simple": "^1.0.0", - "load-json-file": "^7.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/plur": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", - "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", - "dev": true, - "dependencies": { - "irregular-plurals": "^3.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-jsdoc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-jsdoc/-/prettier-plugin-jsdoc-1.3.0.tgz", - "integrity": "sha512-cQm8xIa0fN9ieJFMXACQd6JPycl+8ouOijAqUqu44EF/s4fXL3Wi9sKXuEaodsEWgCN42Xby/bNhqgM1iWx4uw==", - "dev": true, - "dependencies": { - "binary-searching": "^2.0.5", - "comment-parser": "^1.4.0", - "mdast-util-from-markdown": "^2.0.0" - }, - "engines": { - "node": ">=14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "prettier": "^3.0.0" - } - }, - "node_modules/pretty-ms": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz", - "integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==", - "dev": true, - "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "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", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shiki": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", - "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", - "dev": true, - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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 - }, - "node_modules/sinon": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", - "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/samsam": "^8.0.0", - "diff": "^5.1.0", - "nise": "^5.1.5", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string_decoder": { - "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, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", - "dev": true, - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supertap": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", - "integrity": "sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==", - "dev": true, - "dependencies": { - "indent-string": "^5.0.0", - "js-yaml": "^3.14.1", - "serialize-error": "^7.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/supertap/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/supertap/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "dev": true, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedoc": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.12.tgz", - "integrity": "sha512-F+qhkK2VoTweDXd1c42GS/By2DvI2uDF4/EpG424dTexSHdtCH52C6IcAvMA6jR3DzAWZjHpUOW+E02kyPNUNw==", - "dev": true, - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.3", - "shiki": "^0.14.7" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 16" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x" - } - }, - "node_modules/typedoc-plugin-extras": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/typedoc-plugin-extras/-/typedoc-plugin-extras-3.0.0.tgz", - "integrity": "sha512-eiAe3qtm2WbV5owdncpt0zHZPqsNZH2mzNGILPd4zqrvEZie3Et9es4cpGZ+8lHO/SI0pVKwsAj7IuMxPNOdYg==", - "dev": true, - "peerDependencies": { - "typedoc": "0.25.x" - } - }, - "node_modules/typescript": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", - "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/well-known-symbols": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", - "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wide-align/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wide-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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 - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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 - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index 6b3c2010..a8a624e9 100644 --- a/package.json +++ b/package.json @@ -1,75 +1,90 @@ { "name": "confluence.js", - "version": "1.7.4", + "version": "2.0.0", "description": "confluence.js is a powerful Node.JS/Browser module that allows you to interact with the Confluence API very easily", - "author": "Vladislav Tupikin ", + "author": "Vladislav Tupikin ", "license": "MIT", "homepage": "https://mrrefactoring.github.io/confluence.js", "repository": { "type": "git", "url": "git+https://github.com/MrRefactoring/confluence.js.git" }, - "main": "out/index.js", - "types": "out/index.d.ts", - "scripts": { - "build": "tsc", - "test": "npm run test:unit && npm run test:integration", - "prettier": "prettier --write src", - "doc": "typedoc --name \"Confluence.js - Cloud and Server API library\" --out docs ./src/index.ts --plugin typedoc-plugin-extras --footerDate --footerTime --footerTypedocVersion --favicon https://svgshare.com/i/bVi.svg", - "lint": "eslint src tests --ext .ts", - "lint:fix": "npm run lint -- --fix", - "test:unit": "ava tests/unit", - "test:integration": "ava --timeout=2m --fail-fast --no-worker-threads -c 1 -s tests/integration/**/*.test.ts", - "code:formatting": "npm run prettier && npm run lint:fix" - }, - "ava": { - "extensions": [ - "ts" - ], - "require": [ - "@swc-node/register", - "dotenv/config" - ], - "environmentVariables": { - "SWC_NODE_PROJECT": "./tsconfig.lint.json" - } + "type": "module", + "types": "./dist/esm/types/index.d.ts", + "module": "./dist/esm/index.mjs", + "main": "./dist/cjs/index.cjs", + "exports": { + ".": { + "types": "./dist/esm/types/index.d.ts", + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.cjs" + }, + "./*": { + "types": "./dist/esm/types/*.d.ts", + "import": "./dist/esm/*.mjs", + "require": "./dist/cjs/*.cjs" + }, + "./package.json": "./package.json" }, "keywords": [ "confluence", - "api", - "wrapper", - "client", - "cloud", - "rest", + "confluence-api", + "confluence-client", + "atlassian-confluence", + "confluence-cloud", + "confluence-server", + "nodejs", + "typescript", "wiki", - "atlassian" + "content-management", + "automation", + "rest-api" ], - "devDependencies": { - "@swc-node/register": "^1.9.0", - "@swc/helpers": "^0.5.8", - "@types/express": "^4.17.21", - "@types/oauth": "^0.9.4", - "@types/sinon": "^17.0.3", - "@typescript-eslint/eslint-plugin": "^7.5.0", - "@typescript-eslint/parser": "^7.5.0", - "ava": "^6.1.2", - "dotenv": "^16.4.5", - "eslint": "^8.57.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "prettier": "^3.2.5", - "prettier-plugin-jsdoc": "^1.3.0", - "sinon": "^17.0.1", - "typedoc": "^0.25.12", - "typedoc-plugin-extras": "^3.0.0", - "typescript": "^5.4.4" + "engines": { + "node": ">=20" + }, + "scripts": { + "build": "rollup -c rollup.config.ts --configPlugin typescript", + "test": "pnpm run test:unit && pnpm run test:integration", + "prettier": "prettier --write src", + "doc": "typedoc --name \"Confluence.js - Cloud and Server API library\" --out docs ./src/index.ts --favicon https://bad37fb3-cb50-4e0b-9035-a3e09e8afb3b.selstorage.ru/confluence.js%2Ffavicon.svg", + "lint": "eslint --ext .ts src tests", + "lint:fix": "pnpm run lint --fix", + "test:unit": "vitest run tests/unit --minWorkers=1 --maxWorkers=8 --sequence.concurrent", + "test:integration": "vitest run tests/integration --bail=1 --no-file-parallelism --max-concurrency 1 -c vitest.config.mts --hookTimeout 100000 --testTimeout 100000", + "code:formatting": "npm run prettier && npm run lint:fix" }, "dependencies": { "atlassian-jwt": "^2.0.3", - "axios": "^1.6.8", - "form-data": "^4.0.0", - "oauth": "^0.10.0", - "tslib": "^2.6.2" + "axios": "^1.9.0", + "form-data": "^4.0.2", + "oauth": "^0.10.2", + "zod": "^3.24.4" + }, + "devDependencies": { + "@eslint/js": "^9.26.0", + "@rollup/plugin-alias": "^5.1.1", + "@rollup/plugin-commonjs": "^28.0.3", + "@rollup/plugin-node-resolve": "^16.0.1", + "@rollup/plugin-typescript": "^12.1.2", + "@stylistic/eslint-plugin-js": "^4.2.0", + "@stylistic/eslint-plugin-ts": "^4.2.0", + "@types/express": "^4.17.21", + "@types/node": "^20.17.46", + "@types/oauth": "^0.9.6", + "dotenv": "^16.5.0", + "eslint": "^9.26.0", + "globals": "^16.1.0", + "jiti": "^2.4.2", + "prettier": "^3.5.3", + "prettier-plugin-jsdoc": "^1.3.2", + "rollup": "^4.40.2", + "rollup-plugin-esnext-to-nodenext": "^1.0.0", + "rollup-plugin-node-externals": "^8.0.0", + "tslib": "^2.8.1", + "typedoc": "^0.28.4", + "typescript": "^5.8.3", + "typescript-eslint": "^8.32.1", + "vitest": "^3.1.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..16782cc3 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3490 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + atlassian-jwt: + specifier: ^2.0.3 + version: 2.0.3 + axios: + specifier: ^1.9.0 + version: 1.9.0 + form-data: + specifier: ^4.0.2 + version: 4.0.2 + oauth: + specifier: ^0.10.2 + version: 0.10.2 + zod: + specifier: ^3.24.4 + version: 3.24.4 + devDependencies: + '@eslint/js': + specifier: ^9.26.0 + version: 9.26.0 + '@rollup/plugin-alias': + specifier: ^5.1.1 + version: 5.1.1(rollup@4.40.2) + '@rollup/plugin-commonjs': + specifier: ^28.0.3 + version: 28.0.3(rollup@4.40.2) + '@rollup/plugin-node-resolve': + specifier: ^16.0.1 + version: 16.0.1(rollup@4.40.2) + '@rollup/plugin-typescript': + specifier: ^12.1.2 + version: 12.1.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.8.3) + '@stylistic/eslint-plugin-js': + specifier: ^4.2.0 + version: 4.2.0(eslint@9.26.0(jiti@2.4.2)) + '@stylistic/eslint-plugin-ts': + specifier: ^4.2.0 + version: 4.2.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@types/express': + specifier: ^4.17.21 + version: 4.17.21 + '@types/node': + specifier: ^20.17.46 + version: 20.17.46 + '@types/oauth': + specifier: ^0.9.6 + version: 0.9.6 + dotenv: + specifier: ^16.5.0 + version: 16.5.0 + eslint: + specifier: ^9.26.0 + version: 9.26.0(jiti@2.4.2) + globals: + specifier: ^16.1.0 + version: 16.1.0 + jiti: + specifier: ^2.4.2 + version: 2.4.2 + prettier: + specifier: ^3.5.3 + version: 3.5.3 + prettier-plugin-jsdoc: + specifier: ^1.3.2 + version: 1.3.2(prettier@3.5.3) + rollup: + specifier: ^4.40.2 + version: 4.40.2 + rollup-plugin-esnext-to-nodenext: + specifier: ^1.0.0 + version: 1.0.0(rollup@4.40.2) + rollup-plugin-node-externals: + specifier: ^8.0.0 + version: 8.0.0(rollup@4.40.2) + tslib: + specifier: ^2.8.1 + version: 2.8.1 + typedoc: + specifier: ^0.28.4 + version: 0.28.4(typescript@5.8.3) + typescript: + specifier: ^5.8.3 + version: 5.8.3 + typescript-eslint: + specifier: ^8.32.1 + version: 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + vitest: + specifier: ^3.1.3 + version: 3.1.3(@types/debug@4.1.12)(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1) + +packages: + + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.2': + resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.26.0': + resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@gerrit0/mini-shiki@3.4.0': + resolution: {integrity: sha512-48lKoQegmfJ0iyR/jRz5OrYOSM3WewG9YWCPqUvYFEC54shQO8RsAaspaK/2PRHVVnjekRqfAFvq8pwCpIo5ig==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@modelcontextprotocol/sdk@1.11.1': + resolution: {integrity: sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==} + engines: {node: '>=18'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rollup/plugin-alias@5.1.1': + resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-commonjs@28.0.3': + resolution: {integrity: sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@16.0.1': + resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-typescript@12.1.2': + resolution: {integrity: sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + cpu: [x64] + os: [win32] + + '@shikijs/engine-oniguruma@3.4.0': + resolution: {integrity: sha512-zwcWlZ4OQuJ/+1t32ClTtyTU1AiDkK1lhtviRWoq/hFqPjCNyLj22bIg9rB7BfoZKOEOfrsGz7No33BPCf+WlQ==} + + '@shikijs/langs@3.4.0': + resolution: {integrity: sha512-bQkR+8LllaM2duU9BBRQU0GqFTx7TuF5kKlw/7uiGKoK140n1xlLAwCgXwSxAjJ7Htk9tXTFwnnsJTCU5nDPXQ==} + + '@shikijs/themes@3.4.0': + resolution: {integrity: sha512-YPP4PKNFcFGLxItpbU0ZW1Osyuk8AyZ24YEFaq04CFsuCbcqydMvMUTi40V2dkc0qs1U2uZFrnU6s5zI6IH+uA==} + + '@shikijs/types@3.4.0': + resolution: {integrity: sha512-EUT/0lGiE//7j5N/yTMNMT3eCWNcHJLrRKxT0NDXWIfdfSmFJKfPX7nMmRBrQnWboAzIsUziCThrYMMhjbMS1A==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@stylistic/eslint-plugin-js@4.2.0': + resolution: {integrity: sha512-MiJr6wvyzMYl/wElmj8Jns8zH7Q1w8XoVtm+WM6yDaTrfxryMyb8n0CMxt82fo42RoLIfxAEtM6tmQVxqhk0/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + + '@stylistic/eslint-plugin-ts@4.2.0': + resolution: {integrity: sha512-j2o2GvOx9v66x8hmp/HJ+0T+nOppiO5ycGsCkifh7JPGgjxEhpkGmIGx3RWsoxpWbad3VCX8e8/T8n3+7ze1Zg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@20.17.46': + resolution: {integrity: sha512-0PQHLhZPWOxGW4auogW0eOQAuNIlCYvibIpG67ja0TOJ6/sehu+1en7sfceUn+QQtx4Rk3GxbLNwPh0Cav7TWw==} + + '@types/oauth@0.9.6': + resolution: {integrity: sha512-H9TRCVKBNOhZZmyHLqFt9drPM9l+ShWiqqJijU1B8P3DX3ub84NjxDuy+Hjrz+fEca5Kwip3qPMKNyiLgNJtIA==} + + '@types/qs@6.9.18': + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@typescript-eslint/eslint-plugin@8.32.1': + resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.32.1': + resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.32.0': + resolution: {integrity: sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/scope-manager@8.32.1': + resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.32.1': + resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.32.0': + resolution: {integrity: sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.32.1': + resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.32.0': + resolution: {integrity: sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/typescript-estree@8.32.1': + resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.32.0': + resolution: {integrity: sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.32.1': + resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.32.0': + resolution: {integrity: sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.32.1': + resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitest/expect@3.1.3': + resolution: {integrity: sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==} + + '@vitest/mocker@3.1.3': + resolution: {integrity: sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.1.3': + resolution: {integrity: sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==} + + '@vitest/runner@3.1.3': + resolution: {integrity: sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==} + + '@vitest/snapshot@3.1.3': + resolution: {integrity: sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==} + + '@vitest/spy@3.1.3': + resolution: {integrity: sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==} + + '@vitest/utils@3.1.3': + resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atlassian-jwt@2.0.3: + resolution: {integrity: sha512-G9oO3HHS1UKgsLRXj6nNKv2TY6g3PleBCdzHwbFeVKg+18GBFIMRz+ApxuOuWAgcL7RngNFF5rGNtw1Ss3hvTg==} + engines: {node: '>= 0.4.0'} + + axios@1.9.0: + resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + binary-searching@2.0.5: + resolution: {integrity: sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA==} + + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.1.0: + resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.26.0: + resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventsource-parser@3.0.1: + resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} + + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.1.0: + resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.4: + resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + jsuri@1.3.1: + resolution: {integrity: sha512-LLdAeqOf88/X0hylAI7oSir6QUsz/8kOW0FcJzzu/SJRfORA/oPHycAOthkNp7eLPlTAbqVDFbqNRHkRVzEA3g==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + oauth@0.10.2: + resolution: {integrity: sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + engines: {node: '>=16.20.0'} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-plugin-jsdoc@1.3.2: + resolution: {integrity: sha512-LNi9eq0TjyZn/PUNf/SYQxxUvGg5FLK4alEbi3i/S+2JbMyTu790c/puFueXzx09KP44oWCJ+TaHRyM/a0rKJQ==} + engines: {node: '>=14.13.1 || >=16.0.0'} + peerDependencies: + prettier: ^3.0.0 + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup-plugin-esnext-to-nodenext@1.0.0: + resolution: {integrity: sha512-3rPZyEspYJMR78W6UB61GQrsO1yYz8P52pZwEJh48Ub4UuQ2bnLYPsOBAUnPDmu7A/AiA3sJmc+d/gWb0LoHoQ==} + engines: {node: '>=20'} + peerDependencies: + rollup: ^4 + + rollup-plugin-node-externals@8.0.0: + resolution: {integrity: sha512-2HIOpWsWn5DqBoYl6iCAmB4kd5GoGbF68PR4xKR1YBPvywiqjtYvDEjHFodyqRL51iAMDITP074Zxs0OKs6F+g==} + engines: {node: '>= 21 || ^20.6.0 || ^18.19.0'} + peerDependencies: + rollup: ^4.0.0 + + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + ts-add-js-extension@1.6.5: + resolution: {integrity: sha512-ijPXEuexDZorzkqBRGwYSS9tyqJYhhCvK92qIRussMnQD7FC4b38aL58XDI5OhLMQUR5fAyA9FCQmV+RCRfukA==} + hasBin: true + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + + typedoc@0.28.4: + resolution: {integrity: sha512-xKvKpIywE1rnqqLgjkoq0F3wOqYaKO9nV6YkkSat6IxOWacUCc/7Es0hR3OPmkIqkPoEn7U3x+sYdG72rstZQA==} + engines: {node: '>= 18', pnpm: '>= 10'} + hasBin: true + peerDependencies: + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x + + typescript-eslint@8.32.1: + resolution: {integrity: sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite-node@3.1.3: + resolution: {integrity: sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.1.3: + resolution: {integrity: sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.1.3 + '@vitest/ui': 3.1.3 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + + zod@3.24.4: + resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} + +snapshots: + + '@esbuild/aix-ppc64@0.25.4': + optional: true + + '@esbuild/android-arm64@0.25.4': + optional: true + + '@esbuild/android-arm@0.25.4': + optional: true + + '@esbuild/android-x64@0.25.4': + optional: true + + '@esbuild/darwin-arm64@0.25.4': + optional: true + + '@esbuild/darwin-x64@0.25.4': + optional: true + + '@esbuild/freebsd-arm64@0.25.4': + optional: true + + '@esbuild/freebsd-x64@0.25.4': + optional: true + + '@esbuild/linux-arm64@0.25.4': + optional: true + + '@esbuild/linux-arm@0.25.4': + optional: true + + '@esbuild/linux-ia32@0.25.4': + optional: true + + '@esbuild/linux-loong64@0.25.4': + optional: true + + '@esbuild/linux-mips64el@0.25.4': + optional: true + + '@esbuild/linux-ppc64@0.25.4': + optional: true + + '@esbuild/linux-riscv64@0.25.4': + optional: true + + '@esbuild/linux-s390x@0.25.4': + optional: true + + '@esbuild/linux-x64@0.25.4': + optional: true + + '@esbuild/netbsd-arm64@0.25.4': + optional: true + + '@esbuild/netbsd-x64@0.25.4': + optional: true + + '@esbuild/openbsd-arm64@0.25.4': + optional: true + + '@esbuild/openbsd-x64@0.25.4': + optional: true + + '@esbuild/sunos-x64@0.25.4': + optional: true + + '@esbuild/win32-arm64@0.25.4': + optional: true + + '@esbuild/win32-ia32@0.25.4': + optional: true + + '@esbuild/win32-x64@0.25.4': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': + dependencies: + eslint: 9.26.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.26.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@gerrit0/mini-shiki@3.4.0': + dependencies: + '@shikijs/engine-oniguruma': 3.4.0 + '@shikijs/langs': 3.4.0 + '@shikijs/themes': 3.4.0 + '@shikijs/types': 3.4.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@modelcontextprotocol/sdk@1.11.1': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.24.4 + zod-to-json-schema: 3.24.5(zod@3.24.4) + transitivePeerDependencies: + - supports-color + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@rollup/plugin-alias@5.1.1(rollup@4.40.2)': + optionalDependencies: + rollup: 4.40.2 + + '@rollup/plugin-commonjs@28.0.3(rollup@4.40.2)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.4.4(picomatch@4.0.2) + is-reference: 1.2.1 + magic-string: 0.30.17 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.40.2 + + '@rollup/plugin-node-resolve@16.0.1(rollup@4.40.2)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.10 + optionalDependencies: + rollup: 4.40.2 + + '@rollup/plugin-typescript@12.1.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.8.3)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) + resolve: 1.22.10 + typescript: 5.8.3 + optionalDependencies: + rollup: 4.40.2 + tslib: 2.8.1 + + '@rollup/pluginutils@5.1.4(rollup@4.40.2)': + dependencies: + '@types/estree': 1.0.7 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.40.2 + + '@rollup/rollup-android-arm-eabi@4.40.2': + optional: true + + '@rollup/rollup-android-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-x64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.2': + optional: true + + '@shikijs/engine-oniguruma@3.4.0': + dependencies: + '@shikijs/types': 3.4.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.4.0': + dependencies: + '@shikijs/types': 3.4.0 + + '@shikijs/themes@3.4.0': + dependencies: + '@shikijs/types': 3.4.0 + + '@shikijs/types@3.4.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@stylistic/eslint-plugin-js@4.2.0(eslint@9.26.0(jiti@2.4.2))': + dependencies: + eslint: 9.26.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + + '@stylistic/eslint-plugin-ts@4.2.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.17.46 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 20.17.46 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree@1.0.7': {} + + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 20.17.46 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.9.18 + '@types/serve-static': 1.15.7 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/http-errors@2.0.4': {} + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mime@1.3.5': {} + + '@types/ms@2.1.0': {} + + '@types/node@20.17.46': + dependencies: + undici-types: 6.19.8 + + '@types/oauth@0.9.6': + dependencies: + '@types/node': 20.17.46 + + '@types/qs@6.9.18': {} + + '@types/range-parser@1.2.7': {} + + '@types/resolve@1.20.2': {} + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.17.46 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 20.17.46 + '@types/send': 0.17.4 + + '@types/unist@3.0.3': {} + + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + eslint: 9.26.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 7.0.4 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.0 + eslint: 9.26.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.32.0': + dependencies: + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/visitor-keys': 8.32.0 + + '@typescript-eslint/scope-manager@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + + '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.0 + eslint: 9.26.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.32.0': {} + + '@typescript-eslint/types@8.32.1': {} + + '@typescript-eslint/typescript-estree@8.32.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/visitor-keys': 8.32.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.32.0 + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.32.0': + dependencies: + '@typescript-eslint/types': 8.32.0 + eslint-visitor-keys: 4.2.0 + + '@typescript-eslint/visitor-keys@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + eslint-visitor-keys: 4.2.0 + + '@vitest/expect@3.1.3': + dependencies: + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1))': + dependencies: + '@vitest/spy': 3.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.3.5(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1) + + '@vitest/pretty-format@3.1.3': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.1.3': + dependencies: + '@vitest/utils': 3.1.3 + pathe: 2.0.3 + + '@vitest/snapshot@3.1.3': + dependencies: + '@vitest/pretty-format': 3.1.3 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.1.3': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.1.3': + dependencies: + '@vitest/pretty-format': 3.1.3 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + assertion-error@2.0.1: {} + + asynckit@0.4.0: {} + + atlassian-jwt@2.0.3: + dependencies: + jsuri: 1.3.1 + lodash: 4.17.21 + + axios@1.9.0: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + binary-searching@2.0.5: {} + + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.0 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bytes@3.1.2: {} + + cac@6.7.14: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + character-entities@2.0.2: {} + + check-error@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comment-parser@1.4.1: {} + + commondir@1.0.1: {} + + concat-map@0.0.1: {} + + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.1.0: + dependencies: + character-entities: 2.0.2 + + deep-eql@5.0.2: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dotenv@16.5.0: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ee-first@1.1.1: {} + + encodeurl@2.0.0: {} + + entities@4.5.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + + escape-html@1.0.3: {} + + escape-string-regexp@4.0.0: {} + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.26.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.2 + '@eslint/core': 0.13.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.26.0 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@modelcontextprotocol/sdk': 1.11.1 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + zod: 3.24.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.7 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventsource-parser@3.0.1: {} + + eventsource@3.0.7: + dependencies: + eventsource-parser: 3.0.1 + + expect-type@1.2.1: {} + + express-rate-limit@7.5.0(express@5.1.0): + dependencies: + express: 5.1.0 + + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@2.1.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + forwarded@0.2.0: {} + + fresh@2.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globals@16.1.0: {} + + gopd@1.2.0: {} + + graphemer@1.4.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + ignore@7.0.4: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inherits@2.0.4: {} + + ipaddr.js@1.9.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-module@1.0.0: {} + + is-number@7.0.0: {} + + is-promise@4.0.0: {} + + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.7 + + isexe@2.0.0: {} + + jiti@2.4.2: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + jsuri@1.3.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash@4.17.21: {} + + loupe@3.1.3: {} + + lunr@2.3.9: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + math-intrinsics@1.1.0: {} + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdurl@2.0.0: {} + + media-typer@1.1.0: {} + + merge-descriptors@2.0.0: {} + + merge2@1.4.1: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + negotiator@1.0.0: {} + + oauth@0.10.2: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-to-regexp@8.2.0: {} + + pathe@2.0.3: {} + + pathval@2.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pkce-challenge@5.0.0: {} + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-plugin-jsdoc@1.3.2(prettier@3.5.3): + dependencies: + binary-searching: 2.0.5 + comment-parser: 1.4.1 + mdast-util-from-markdown: 2.0.2 + prettier: 3.5.3 + transitivePeerDependencies: + - supports-color + + prettier@3.5.3: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@1.1.0: {} + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + range-parser@1.2.1: {} + + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + + resolve-from@4.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + rollup-plugin-esnext-to-nodenext@1.0.0(rollup@4.40.2): + dependencies: + rollup: 4.40.2 + ts-add-js-extension: 1.6.5 + + rollup-plugin-node-externals@8.0.0(rollup@4.40.2): + dependencies: + rollup: 4.40.2 + + rollup@4.40.2: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 + fsevents: 2.3.3 + + router@2.2.0: + dependencies: + debug: 4.4.0 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + semver@7.7.1: {} + + send@1.2.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + statuses@2.0.1: {} + + std-env@3.9.0: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + ts-add-js-extension@1.6.5: + dependencies: + typescript: 5.8.3 + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + + typedoc@0.28.4(typescript@5.8.3): + dependencies: + '@gerrit0/mini-shiki': 3.4.0 + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + typescript: 5.8.3 + yaml: 2.7.1 + + typescript-eslint@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typescript@5.8.3: {} + + uc.micro@2.1.0: {} + + undici-types@6.19.8: {} + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unpipe@1.0.0: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + vary@1.1.2: {} + + vite-node@3.1.3(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.5(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1): + dependencies: + esbuild: 0.25.4 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.2 + tinyglobby: 0.2.13 + optionalDependencies: + '@types/node': 20.17.46 + fsevents: 2.3.3 + jiti: 2.4.2 + yaml: 2.7.1 + + vitest@3.1.3(@types/debug@4.1.12)(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1): + dependencies: + '@vitest/expect': 3.1.3 + '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1)) + '@vitest/pretty-format': 3.1.3 + '@vitest/runner': 3.1.3 + '@vitest/snapshot': 3.1.3 + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.13 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.3.5(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1) + vite-node: 3.1.3(@types/node@20.17.46)(jiti@2.4.2)(yaml@2.7.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 20.17.46 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + wrappy@1.0.2: {} + + yaml@2.7.1: {} + + yocto-queue@0.1.0: {} + + zod-to-json-schema@3.24.5(zod@3.24.4): + dependencies: + zod: 3.24.4 + + zod@3.24.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..efc037aa --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +onlyBuiltDependencies: + - esbuild diff --git a/rollup.config.ts b/rollup.config.ts new file mode 100644 index 00000000..8076618b --- /dev/null +++ b/rollup.config.ts @@ -0,0 +1,72 @@ +import { defineConfig } from 'rollup'; +import typescript from '@rollup/plugin-typescript'; +import resolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import alias from '@rollup/plugin-alias'; +import esnextToNodeNext from 'rollup-plugin-esnext-to-nodenext'; +import nodeExternals from 'rollup-plugin-node-externals'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +export default defineConfig([ + { + input: 'src/index.ts', + output: { + dir: 'dist/esm', + format: 'esm', + preserveModules: true, + preserveModulesRoot: 'src', + sourcemap: true, + entryFileNames: '[name].mjs', + }, + plugins: [ + nodeExternals(), + alias({ + entries: [ + { find: '~', replacement: `${__dirname}/src` } + ] + }), + resolve(), + commonjs(), + typescript({ + outDir: 'dist/esm', + rootDir: 'src', + declaration: true, + declarationDir: 'dist/esm/types', + tsconfig: './tsconfig.json', + }), + esnextToNodeNext() + ] + }, + { + input: 'src/index.ts', + output: { + dir: 'dist/cjs', + format: 'cjs', + preserveModules: true, + preserveModulesRoot: 'src', + sourcemap: true, + exports: 'auto', + entryFileNames: '[name].cjs', + }, + plugins: [ + nodeExternals(), + alias({ + entries: [ + { find: '~', replacement: `${__dirname}/src` } + ] + }), + resolve(), + commonjs(), + typescript({ + outDir: 'dist/cjs', + rootDir: 'src', + declaration: false, + tsconfig: './tsconfig.json', + }), + ] + } +]); diff --git a/src/api/analytics.ts b/src/api/analytics.ts index a8ffed8c..2efe31d6 100644 --- a/src/api/analytics.ts +++ b/src/api/analytics.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Analytics { constructor(private client: Client) {} diff --git a/src/api/audit.ts b/src/api/audit.ts index a82634b3..bd14bc45 100644 --- a/src/api/audit.ts +++ b/src/api/audit.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Audit { constructor(private client: Client) {} diff --git a/src/api/content.ts b/src/api/content.ts index ab89eb86..0c37eaac 100644 --- a/src/api/content.ts +++ b/src/api/content.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Content { constructor(private client: Client) {} diff --git a/src/api/contentAttachments.ts b/src/api/contentAttachments.ts index 9b139617..ac3628f2 100644 --- a/src/api/contentAttachments.ts +++ b/src/api/contentAttachments.ts @@ -1,9 +1,10 @@ -import * as FormData from 'form-data'; -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +/* eslint-disable @typescript-eslint/no-unnecessary-condition */ +import FormData from 'form-data'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentAttachments { constructor(private client: Client) {} @@ -192,7 +193,7 @@ export class ContentAttachments { const config: RequestConfig = { url: `/api/content/${parameters.id}/child/attachment/${parameters.attachmentId}`, method: 'PUT', - data: parameters.update ?? parameters.body, + data: parameters.update, }; return this.client.sendRequest(config, callback); diff --git a/src/api/contentBody.ts b/src/api/contentBody.ts index f2626a6e..b0a598f9 100644 --- a/src/api/contentBody.ts +++ b/src/api/contentBody.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentBody { constructor(private client: Client) {} diff --git a/src/api/contentChildrenAndDescendants.ts b/src/api/contentChildrenAndDescendants.ts index f2ec178e..c7a82a19 100644 --- a/src/api/contentChildrenAndDescendants.ts +++ b/src/api/contentChildrenAndDescendants.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentChildrenAndDescendants { constructor(private client: Client) {} @@ -92,10 +92,8 @@ export class ContentChildrenAndDescendants { */ async movePage(parameters: Parameters.MovePage, callback?: never): Promise; async movePage(parameters: Parameters.MovePage, callback?: Callback): Promise { - const pageId = parameters.pageId || parameters.id; - const config: RequestConfig = { - url: `/api/content/${pageId}/move/${parameters.position}/${parameters.targetId}`, + url: `/api/content/${parameters.pageId}/move/${parameters.position}/${parameters.targetId}`, method: 'PUT', headers: { 'Content-Type': 'application/json', @@ -223,23 +221,6 @@ export class ContentChildrenAndDescendants { return this.client.sendRequest(config, callback); } - /** @deprecated This API will be removed in the next major version. Use `getDescendantsOfType` method instead. */ - async descendantsOfType( - parameters: Parameters.DescendantsOfType, - callback: Callback, - ): Promise; - /** @deprecated This API will be removed in the next major version. Use `getDescendantsOfType` method instead. */ - async descendantsOfType( - parameters: Parameters.DescendantsOfType, - callback?: never, - ): Promise; - async descendantsOfType( - parameters: Parameters.DescendantsOfType, - callback?: Callback, - ): Promise { - return this.getDescendantsOfType(parameters, callback!); - } - /** * Returns all descendants of a given type, for a piece of content. This is similar to [Get content children by * type](#api-content-id-child-type-get), except that this method returns child pages at all levels, rather than just diff --git a/src/api/contentComments.ts b/src/api/contentComments.ts index 787a3cf6..9884e4fa 100644 --- a/src/api/contentComments.ts +++ b/src/api/contentComments.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentComments { constructor(private client: Client) {} diff --git a/src/api/contentContentState.ts b/src/api/contentContentState.ts deleted file mode 100644 index 09842def..00000000 --- a/src/api/contentContentState.ts +++ /dev/null @@ -1,159 +0,0 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; - -/** @deprecated Use {@link ContentStates} instead. */ -export class ContentContentState { - /** @deprecated */ - constructor(private client: Client) {} - - /** - * @deprecated Gets the current page status of the draft or published version of content. To specify the draft - * version, set the parameter status to PUBLISHED, otherwise DRAFT. - */ - async getContentState( - parameters: Parameters.GetContentState, - callback: Callback, - ): Promise; - /** - * @deprecated Gets the current page status of the draft or published version of content. To specify the draft - * version, set the parameter status to PUBLISHED, otherwise DRAFT. - */ - async getContentState( - parameters: Parameters.GetContentState, - callback?: never, - ): Promise; - async getContentState( - parameters: Parameters.GetContentState, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/api/content/${parameters.contentId}/state`, - method: 'GET', - params: { - designation: parameters.designation, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * @deprecated Sets the content state of the content specified and creates a new version (publishes the content - * without changing the body) of the content with the new status. The desired type of status must be allowed. There - * are space suggested statuses and custom statuses. To specify the desired new status, one can use the id of the - * status or the name and color of the status. If contentStateId is defined, then name and color are ignored. If - * contentStateId is not defined, name and color will be used if provided. Firstly, we will determine if a status of - * this name and color exists, and if it does, that this status is used. If it does not exist, and custom statuses - * are allowed, a custom status with this name and color will be created. Color can be specified in traditional - * english colors (teal, magenta, lavender, etc.) or as a hex string ex: #0ff0Fd. - */ - async setContentState( - parameters: Parameters.SetContentState, - callback: Callback, - ): Promise; - /** - * @deprecated Sets the content state of the content specified and creates a new version (publishes the content - * without changing the body) of the content with the new status. The desired type of status must be allowed. There - * are space suggested statuses and custom statuses. To specify the desired new status, one can use the id of the - * status or the name and color of the status. If contentStateId is defined, then name and color are ignored. If - * contentStateId is not defined, name and color will be used if provided. Firstly, we will determine if a status of - * this name and color exists, and if it does, that this status is used. If it does not exist, and custom statuses - * are allowed, a custom status with this name and color will be created. Color can be specified in traditional - * english colors (teal, magenta, lavender, etc.) or as a hex string ex: #0ff0Fd. - */ - async setContentState( - parameters: Parameters.SetContentState, - callback?: never, - ): Promise; - async setContentState( - parameters: Parameters.SetContentState, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/api/content/${parameters.contentId}/state`, - method: 'PUT', - params: { - contentStateId: parameters.contentStateId, - name: parameters.name, - color: parameters.color, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * @deprecated Removes the content state of the content specified and creates a new version (publishes the content - * without changing the body) of the content with the new status. - */ - async removeContentState( - parameters: Parameters.RemoveContentState, - callback: Callback, - ): Promise; - /** - * @deprecated Removes the content state of the content specified and creates a new version (publishes the content - * without changing the body) of the content with the new status. - */ - async removeContentState( - parameters: Parameters.RemoveContentState, - callback?: never, - ): Promise; - async removeContentState( - parameters: Parameters.RemoveContentState, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/api/content/${parameters.contentId}/state`, - method: 'DELETE', - }; - - return this.client.sendRequest(config, callback); - } - - /** @deprecated Gets a Global Timestamp of the last time the content state was updated */ - async getContentStateLastUpdated( - parameters: Parameters.GetContentStateLastUpdated, - callback: Callback, - ): Promise; - /** @deprecated Gets a Global Timestamp of the last time the content state was updated */ - async getContentStateLastUpdated( - parameters: Parameters.GetContentStateLastUpdated, - callback?: never, - ): Promise; - async getContentStateLastUpdated( - parameters: Parameters.GetContentStateLastUpdated, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/api/content/${parameters.contentId}/state/last-updated`, - method: 'GET', - }; - - return this.client.sendRequest(config, callback); - } - - /** @deprecated Gets content states that are available for the content to be set as. */ - async getAvailableContentStates( - parameters: Parameters.GetAvailableContentStates, - callback: Callback, - ): Promise; - /** @deprecated Gets content states that are available for the content to be set as. */ - async getAvailableContentStates( - parameters: Parameters.GetAvailableContentStates, - callback?: never, - ): Promise; - async getAvailableContentStates( - parameters: Parameters.GetAvailableContentStates, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/api/content/${parameters.contentId}/state/available-states`, - method: 'GET', - }; - - return this.client.sendRequest(config, callback); - } -} diff --git a/src/api/contentLabels.ts b/src/api/contentLabels.ts index 03141eed..b56258d1 100644 --- a/src/api/contentLabels.ts +++ b/src/api/contentLabels.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentLabels { constructor(private client: Client) {} diff --git a/src/api/contentMacroBody.ts b/src/api/contentMacroBody.ts index d6905414..660307fa 100644 --- a/src/api/contentMacroBody.ts +++ b/src/api/contentMacroBody.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentMacroBody { constructor(private client: Client) {} diff --git a/src/api/contentPermissions.ts b/src/api/contentPermissions.ts index caa40126..471412bb 100644 --- a/src/api/contentPermissions.ts +++ b/src/api/contentPermissions.ts @@ -1,29 +1,12 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentPermissions { constructor(private client: Client) {} - /** @deprecated Will be removed in the next major version. Use `checkContentPermission` method instead. */ - async permissionCheck( - parameters: Parameters.PermissionCheck, - callback: Callback, - ): Promise; - /** @deprecated Will be removed in the next major version. Use `checkContentPermission` method instead. */ - async permissionCheck( - parameters: Parameters.PermissionCheck, - callback?: never, - ): Promise; - async permissionCheck( - parameters: Parameters.PermissionCheck, - callback?: Callback, - ): Promise { - return this.checkContentPermission(parameters, callback!); - } - /** * Check if a user or a group can perform an operation to the specified content. The `operation` to check must be * provided. The user’s account ID or the ID of the group can be provided in the `subject` to check permissions diff --git a/src/api/contentProperties.ts b/src/api/contentProperties.ts index 45b0fa77..571cf304 100644 --- a/src/api/contentProperties.ts +++ b/src/api/contentProperties.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentProperties { constructor(private client: Client) {} diff --git a/src/api/contentRestrictions.ts b/src/api/contentRestrictions.ts index 80b8b2df..609f302e 100644 --- a/src/api/contentRestrictions.ts +++ b/src/api/contentRestrictions.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentRestrictions { constructor(private client: Client) {} diff --git a/src/api/contentStates.ts b/src/api/contentStates.ts index 49d72bc7..6ded5f6b 100644 --- a/src/api/contentStates.ts +++ b/src/api/contentStates.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentStates { constructor(private client: Client) {} diff --git a/src/api/contentVersions.ts b/src/api/contentVersions.ts index f4d87801..b392bec5 100644 --- a/src/api/contentVersions.ts +++ b/src/api/contentVersions.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentVersions { constructor(private client: Client) {} diff --git a/src/api/contentWatches.ts b/src/api/contentWatches.ts index e2a14f3b..03ab004c 100644 --- a/src/api/contentWatches.ts +++ b/src/api/contentWatches.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class ContentWatches { constructor(private client: Client) {} diff --git a/src/api/dynamicModules.ts b/src/api/dynamicModules.ts index 18669213..ab385fd1 100644 --- a/src/api/dynamicModules.ts +++ b/src/api/dynamicModules.ts @@ -1,7 +1,7 @@ -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class DynamicModules { constructor(private client: Client) {} diff --git a/src/api/experimental.ts b/src/api/experimental.ts index e7122e76..31dd3f9d 100644 --- a/src/api/experimental.ts +++ b/src/api/experimental.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Experimental { constructor(private client: Client) {} @@ -318,23 +318,4 @@ export class Experimental { return this.client.sendRequest(config, callback); } - - /** @deprecated Get the total number of distinct viewers a piece of content has. */ - async getViewers(parameters: Parameters.GetViewers, callback: Callback): Promise; - /** @deprecated Get the total number of distinct viewers a piece of content has. */ - async getViewers(parameters: Parameters.GetViewers, callback?: never): Promise; - async getViewers( - parameters: Parameters.GetViewers, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/api/analytics/content/${parameters.contentId}/viewers`, - method: 'GET', - params: { - fromDate: parameters.fromDate, - }, - }; - - return this.client.sendRequest(config, callback); - } } diff --git a/src/api/group.ts b/src/api/group.ts index f5ec77df..fc32c81a 100644 --- a/src/api/group.ts +++ b/src/api/group.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Group { constructor(private client: Client) {} @@ -183,14 +183,6 @@ export class Group { return this.client.sendRequest(config, callback); } - /** @deprecated Will be removed in the next major version. Use `getGroupByName` instead. */ - async getGroup(parameters: Parameters.GetGroup, callback: Callback): Promise; - /** @deprecated Will be removed in the next major version. Use `getGroupByName` instead. */ - async getGroup(parameters: Parameters.GetGroup, callback?: never): Promise; - async getGroup(parameters: Parameters.GetGroup, callback?: Callback): Promise { - return this.getGroupByName(parameters, callback!); - } - /** * Returns a user group for a given group name. * @@ -296,23 +288,6 @@ export class Group { return this.client.sendRequest(config, callback); } - /** @deprecated Will be removed in the next major version. Use `searchGroups` instead. */ - async getGroupsSearch( - parameters: Parameters.GetGroupsSearch, - callback: Callback, - ): Promise; - /** @deprecated Will be removed in the next major version. Use `searchGroups` instead. */ - async getGroupsSearch( - parameters: Parameters.GetGroupsSearch, - callback?: never, - ): Promise; - async getGroupsSearch( - parameters: Parameters.GetGroupsSearch, - callback?: Callback, - ): Promise { - return this.searchGroups(parameters, callback!); - } - /** Get search results of groups by partial query provided. */ async searchGroups( parameters: Parameters.SearchGroups, diff --git a/src/api/index.ts b/src/api/index.ts index ce0ced36..6dad8436 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -5,7 +5,6 @@ export * from './contentAttachments'; export * from './contentBody'; export * from './contentChildrenAndDescendants'; export * from './contentComments'; -export * from './contentContentState'; export * from './contentLabels'; export * from './contentMacroBody'; export * from './contentPermissions'; diff --git a/src/api/inlineTasks.ts b/src/api/inlineTasks.ts index 9512147e..74c621fb 100644 --- a/src/api/inlineTasks.ts +++ b/src/api/inlineTasks.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class InlineTasks { constructor(private client: Client) {} diff --git a/src/api/labelInfo.ts b/src/api/labelInfo.ts index 4c776963..78a187f8 100644 --- a/src/api/labelInfo.ts +++ b/src/api/labelInfo.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class LabelInfo { constructor(private client: Client) {} diff --git a/src/api/longRunningTask.ts b/src/api/longRunningTask.ts index fc7f4aa1..995c76ef 100644 --- a/src/api/longRunningTask.ts +++ b/src/api/longRunningTask.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class LongRunningTask { constructor(private client: Client) {} diff --git a/src/api/models/accountIdEmailRecordArray.ts b/src/api/models/accountIdEmailRecordArray.ts index 890e89c8..3253ba21 100644 --- a/src/api/models/accountIdEmailRecordArray.ts +++ b/src/api/models/accountIdEmailRecordArray.ts @@ -1,3 +1,3 @@ -import { AccountIdEmailRecord } from './accountIdEmailRecord'; +import type { AccountIdEmailRecord } from './accountIdEmailRecord'; export type AccountIdEmailRecordArray = AccountIdEmailRecord[]; diff --git a/src/api/models/addContentRestrictionUpdateArray.ts b/src/api/models/addContentRestrictionUpdateArray.ts index 96ef8d18..84d54eec 100644 --- a/src/api/models/addContentRestrictionUpdateArray.ts +++ b/src/api/models/addContentRestrictionUpdateArray.ts @@ -1,3 +1,3 @@ -import { AddContentRestriction } from './addContentRestriction'; +import type { AddContentRestriction } from './addContentRestriction'; export type AddContentRestrictionUpdateArray = AddContentRestriction[]; diff --git a/src/api/models/appDescriptor.ts b/src/api/models/appDescriptor.ts index 77d0203e..b673672c 100644 --- a/src/api/models/appDescriptor.ts +++ b/src/api/models/appDescriptor.ts @@ -1,4 +1,5 @@ -import { Lifecycle } from './lifecycle'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { Lifecycle } from './lifecycle'; export interface AppDescriptor { /** Defines the authentication type to use when signing requests between the host application and the connect app. */ diff --git a/src/api/models/asyncContentBody.ts b/src/api/models/asyncContentBody.ts index 55cffc0c..c55b8895 100644 --- a/src/api/models/asyncContentBody.ts +++ b/src/api/models/asyncContentBody.ts @@ -1,6 +1,6 @@ -import { EmbeddedContent } from './embeddedContent'; -import { GenericLinks } from './genericLinks'; -import { WebResourceDependencies } from './webResourceDependencies'; +import type { EmbeddedContent } from './embeddedContent'; +import type { GenericLinks } from './genericLinks'; +import type { WebResourceDependencies } from './webResourceDependencies'; export interface AsyncContentBody { value?: string; diff --git a/src/api/models/attachment.ts b/src/api/models/attachment.ts index f41a023b..fc2ecc6d 100644 --- a/src/api/models/attachment.ts +++ b/src/api/models/attachment.ts @@ -1,5 +1,6 @@ -import { AttachmentMetadata } from './attachmentMetadata'; -import { GenericLinks } from './genericLinks'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { AttachmentMetadata } from './attachmentMetadata'; +import type { GenericLinks } from './genericLinks'; export interface Attachment { id: string; diff --git a/src/api/models/attachmentContainer.ts b/src/api/models/attachmentContainer.ts index 5e33522a..e069208c 100644 --- a/src/api/models/attachmentContainer.ts +++ b/src/api/models/attachmentContainer.ts @@ -1,4 +1,5 @@ -import { GenericLinks } from './genericLinks'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { GenericLinks } from './genericLinks'; export interface AttachmentContainer { id: string; diff --git a/src/api/models/attachmentMetadata.ts b/src/api/models/attachmentMetadata.ts index 3c76f309..b3c20d90 100644 --- a/src/api/models/attachmentMetadata.ts +++ b/src/api/models/attachmentMetadata.ts @@ -1,4 +1,4 @@ -import { GenericLinks } from './genericLinks'; +import type { GenericLinks } from './genericLinks'; export interface AttachmentMetadata { comment: string; diff --git a/src/api/models/attachmentUpdate.ts b/src/api/models/attachmentUpdate.ts deleted file mode 100644 index 1caf6f63..00000000 --- a/src/api/models/attachmentUpdate.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** @deprecated Will be removed in second major version */ -export interface AttachmentUpdate { - /** - * The attachment version. Set this to the current version number of the attachment. Note, the version number only - * needs to be incremented when updating the actual attachment, not its properties. - */ - version: { - /** The version number. */ - number: number; - }; - /** Set this to `attachment`. */ - type: string; - /** The updated name of the attachment. */ - title?: string; - metadata?: { - /** The media type of the attachment, e.g. 'img/jpg'. */ - mediaType?: string; - /** The comment for this update. */ - comment?: string; - }; - /** The new content to attach the attachment to. */ - container?: { - /** The `id` of the parent content. */ - id: string; - /** The content type. You can only attach attachments to content of type: `page`, `blogpost`. */ - type: string; - }; -} diff --git a/src/api/models/auditRecord.ts b/src/api/models/auditRecord.ts index 665317d4..54198231 100644 --- a/src/api/models/auditRecord.ts +++ b/src/api/models/auditRecord.ts @@ -1,15 +1,11 @@ -import { AffectedObject } from './affectedObject'; -import { ChangedValue } from './changedValue'; +import type { AffectedObject } from './affectedObject'; +import type { ChangedValue } from './changedValue'; export interface AuditRecord { author: { type: string; displayName: string; operations: {}; - /** @deprecated This property has been deprecated and will be removed soon. */ - username: string; - /** @deprecated This property has been deprecated and will be removed soon. */ - userKey: string; }; remoteAddress: string; /** The creation date-time of the audit record, as a timestamp. */ diff --git a/src/api/models/auditRecordArray.ts b/src/api/models/auditRecordArray.ts index 71b6609b..758eb1e8 100644 --- a/src/api/models/auditRecordArray.ts +++ b/src/api/models/auditRecordArray.ts @@ -1,5 +1,5 @@ -import { AuditRecord } from './auditRecord'; -import { GenericLinks } from './genericLinks'; +import type { AuditRecord } from './auditRecord'; +import type { GenericLinks } from './genericLinks'; export interface AuditRecordArray { results: AuditRecord[]; diff --git a/src/api/models/auditRecordCreate.ts b/src/api/models/auditRecordCreate.ts index 93f8db50..907c99a0 100644 --- a/src/api/models/auditRecordCreate.ts +++ b/src/api/models/auditRecordCreate.ts @@ -1,5 +1,5 @@ -import { AffectedObject } from './affectedObject'; -import { ChangedValue } from './changedValue'; +import type { AffectedObject } from './affectedObject'; +import type { ChangedValue } from './changedValue'; export interface AuditRecordCreate { /** @@ -13,10 +13,6 @@ export interface AuditRecordCreate { displayName?: string; /** Always defaults to null. */ operations?: {}; - /** @deprecated This property has been deprecated and will be removed soon. */ - username?: string; - /** @deprecated This property has been deprecated and will be removed soon. */ - userKey?: string; }; /** The IP address of the computer where the event was initiated from. */ remoteAddress: string; diff --git a/src/api/models/availableContentStates.ts b/src/api/models/availableContentStates.ts index 38851b1a..c2381296 100644 --- a/src/api/models/availableContentStates.ts +++ b/src/api/models/availableContentStates.ts @@ -1,4 +1,4 @@ -import { ContentState } from './contentState'; +import type { ContentState } from './contentState'; export interface AvailableContentStates { /** Space suggested content states that can be used in the space */ diff --git a/src/api/models/blueprintTemplate.ts b/src/api/models/blueprintTemplate.ts index 443351dd..56617e2a 100644 --- a/src/api/models/blueprintTemplate.ts +++ b/src/api/models/blueprintTemplate.ts @@ -1,6 +1,6 @@ -import { ContentBody } from './contentBody'; -import { GenericLinks } from './genericLinks'; -import { Label } from './label'; +import type { ContentBody } from './contentBody'; +import type { GenericLinks } from './genericLinks'; +import type { Label } from './label'; export interface BlueprintTemplate { templateId: string; diff --git a/src/api/models/blueprintTemplateArray.ts b/src/api/models/blueprintTemplateArray.ts index 12b69d0d..75b32736 100644 --- a/src/api/models/blueprintTemplateArray.ts +++ b/src/api/models/blueprintTemplateArray.ts @@ -1,5 +1,5 @@ -import { BlueprintTemplate } from './blueprintTemplate'; -import { GenericLinks } from './genericLinks'; +import type { BlueprintTemplate } from './blueprintTemplate'; +import type { GenericLinks } from './genericLinks'; export interface BlueprintTemplateArray { results: BlueprintTemplate[]; diff --git a/src/api/models/bulkUserLookup.ts b/src/api/models/bulkUserLookup.ts index d255e4f2..a9eeb534 100644 --- a/src/api/models/bulkUserLookup.ts +++ b/src/api/models/bulkUserLookup.ts @@ -1,8 +1,7 @@ -import { GenericLinks } from './genericLinks'; -import { Icon } from './icon'; -import { OperationCheckResult } from './operationCheckResult'; -import { Space } from './space'; -import { UserDetails } from './userDetails'; +import type { GenericLinks } from './genericLinks'; +import type { Icon } from './icon'; +import type { OperationCheckResult } from './operationCheckResult'; +import type { Space } from './space'; export interface BulkUserLookup { type: string; @@ -31,7 +30,6 @@ export interface BulkUserLookup { /** The display name of the user. Depending on the user's privacy setting, this may be the same as publicName. */ displayName: string; operations?: OperationCheckResult[]; - details?: UserDetails; personalSpace?: Space; _expandable: { operations?: string; diff --git a/src/api/models/bulkUserLookupArray.ts b/src/api/models/bulkUserLookupArray.ts index 501375b6..9f4368b7 100644 --- a/src/api/models/bulkUserLookupArray.ts +++ b/src/api/models/bulkUserLookupArray.ts @@ -1,5 +1,5 @@ -import { BulkUserLookup } from './bulkUserLookup'; -import { GenericLinks } from './genericLinks'; +import type { BulkUserLookup } from './bulkUserLookup'; +import type { GenericLinks } from './genericLinks'; export interface BulkUserLookupArray { results: BulkUserLookup[]; diff --git a/src/api/models/cQLPersonalDataConvertedQueries.ts b/src/api/models/cQLPersonalDataConvertedQueries.ts deleted file mode 100644 index 5724850e..00000000 --- a/src/api/models/cQLPersonalDataConvertedQueries.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** The converted CQL queries. */ -export interface CQLPersonalDataConvertedQueries { - /** The list of converted CQL query strings with account IDs in place of user identifiers. */ - queryStrings: string[]; -} diff --git a/src/api/models/cQLPersonalDataMigrationRequest.ts b/src/api/models/cQLPersonalDataMigrationRequest.ts deleted file mode 100644 index 8503528d..00000000 --- a/src/api/models/cQLPersonalDataMigrationRequest.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** The CQL queries to be converted. */ -export interface CQLPersonalDataMigrationRequest { - /** A list of queries with user identifiers. Maximum of 100 queries. */ - queryStrings: string[]; -} diff --git a/src/api/models/connectModule.ts b/src/api/models/connectModule.ts deleted file mode 100644 index 71bac799..00000000 --- a/src/api/models/connectModule.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * A [Connect module](https://developer.atlassian.com/cloud/confluence/modules/admin-page/) in the same format as in - * the* [app descriptor](https://developer.atlassian.com/cloud/confluence/app-descriptor/). - */ -export interface ConnectModule {} diff --git a/src/api/models/connectModules.ts b/src/api/models/connectModules.ts index 63b7d431..15bf47d1 100644 --- a/src/api/models/connectModules.ts +++ b/src/api/models/connectModules.ts @@ -1,4 +1,4 @@ -import { AppDescriptor } from './appDescriptor'; +import type { AppDescriptor } from './appDescriptor'; /** * A list of app modules in the same format as the `modules` property in the [app diff --git a/src/api/models/container.ts b/src/api/models/container.ts index bd5c5b5e..67a886ad 100644 --- a/src/api/models/container.ts +++ b/src/api/models/container.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ /** * Container for content. This can be either a space (containing a page or blogpost)* or a page/blog post (containing an * attachment or comment) diff --git a/src/api/models/content.ts b/src/api/models/content.ts index 02438a2e..e8968524 100644 --- a/src/api/models/content.ts +++ b/src/api/models/content.ts @@ -1,13 +1,13 @@ -import { Container } from './container'; -import { ContentBody } from './contentBody'; -import { ContentChildren } from './contentChildren'; -import { ContentChildType } from './contentChildType'; -import { ContentHistory } from './contentHistory'; -import { ContentRestriction } from './contentRestriction'; -import { GenericLinks } from './genericLinks'; -import { OperationCheckResult } from './operationCheckResult'; -import { Space } from './space'; -import { Version } from './version'; +import type { Container } from './container'; +import type { ContentBody } from './contentBody'; +import type { ContentChildren } from './contentChildren'; +import type { ContentChildType } from './contentChildType'; +import type { ContentHistory } from './contentHistory'; +import type { ContentRestriction } from './contentRestriction'; +import type { GenericLinks } from './genericLinks'; +import type { OperationCheckResult } from './operationCheckResult'; +import type { Space } from './space'; +import type { Version } from './version'; /** Base object for all content types. */ export interface Content { diff --git a/src/api/models/contentArray.ts b/src/api/models/contentArray.ts index 79a36ad8..65f21f54 100644 --- a/src/api/models/contentArray.ts +++ b/src/api/models/contentArray.ts @@ -1,5 +1,5 @@ -import { Content } from './content'; -import { GenericLinks } from './genericLinks'; +import type { Content } from './content'; +import type { GenericLinks } from './genericLinks'; export interface ContentArray { results: T[]; diff --git a/src/api/models/contentAttachment.ts b/src/api/models/contentAttachment.ts deleted file mode 100644 index 887c8272..00000000 --- a/src/api/models/contentAttachment.ts +++ /dev/null @@ -1,2 +0,0 @@ -/** Representation of an attachment (content) */ -export interface ContentAttachment {} diff --git a/src/api/models/contentBlogpost.ts b/src/api/models/contentBlogpost.ts deleted file mode 100644 index b2eb219c..00000000 --- a/src/api/models/contentBlogpost.ts +++ /dev/null @@ -1,2 +0,0 @@ -/** Representation of a blogpost (content) */ -export interface ContentBlogpost {} diff --git a/src/api/models/contentBody.ts b/src/api/models/contentBody.ts index 55ab6f22..017fbafc 100644 --- a/src/api/models/contentBody.ts +++ b/src/api/models/contentBody.ts @@ -1,5 +1,5 @@ -import { EmbeddedContent } from './embeddedContent'; -import { WebResourceDependencies } from './webResourceDependencies'; +import type { EmbeddedContent } from './embeddedContent'; +import type { WebResourceDependencies } from './webResourceDependencies'; export interface ContentBody { value: string; diff --git a/src/api/models/contentBodyCreate.ts b/src/api/models/contentBodyCreate.ts index d8ee0a7d..c89f2667 100644 --- a/src/api/models/contentBodyCreate.ts +++ b/src/api/models/contentBodyCreate.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ /** This object is used when creating or updating content. */ export interface ContentBodyCreate { /** The body of the content in the relevant format. */ diff --git a/src/api/models/contentChildType.ts b/src/api/models/contentChildType.ts index 0fc40146..2d4a7d9f 100644 --- a/src/api/models/contentChildType.ts +++ b/src/api/models/contentChildType.ts @@ -1,4 +1,4 @@ -import { GenericLinks } from './genericLinks'; +import type { GenericLinks } from './genericLinks'; /** * Shows whether a piece of content has attachments, comments, or child pages.* Note, this doesn't actually contain the diff --git a/src/api/models/contentChildren.ts b/src/api/models/contentChildren.ts index 608eee7f..c69e9d46 100644 --- a/src/api/models/contentChildren.ts +++ b/src/api/models/contentChildren.ts @@ -1,5 +1,5 @@ -import { ContentArray } from './contentArray'; -import { GenericLinks } from './genericLinks'; +import type { ContentArray } from './contentArray'; +import type { GenericLinks } from './genericLinks'; export interface ContentChildren { attachment?: ContentArray; diff --git a/src/api/models/contentComment.ts b/src/api/models/contentComment.ts deleted file mode 100644 index ccfddded..00000000 --- a/src/api/models/contentComment.ts +++ /dev/null @@ -1,2 +0,0 @@ -/** Representation of a comment (content) */ -export interface ContentComment {} diff --git a/src/api/models/contentCreate.ts b/src/api/models/contentCreate.ts index a41a76ba..643764e0 100644 --- a/src/api/models/contentCreate.ts +++ b/src/api/models/contentCreate.ts @@ -1,4 +1,4 @@ -import { ContentBodyCreate } from './contentBodyCreate'; +import type { ContentBodyCreate } from './contentBodyCreate'; export interface ContentCreate { /** The ID of the draft content. Required when publishing a draft. */ diff --git a/src/api/models/contentHistory.ts b/src/api/models/contentHistory.ts index ebb94648..bdb79d23 100644 --- a/src/api/models/contentHistory.ts +++ b/src/api/models/contentHistory.ts @@ -1,7 +1,7 @@ -import { GenericLinks } from './genericLinks'; -import { User } from './user'; -import { UsersUserKeys } from './usersUserKeys'; -import { Version } from './version'; +import type { GenericLinks } from './genericLinks'; +import type { User } from './user'; +import type { UsersUserKeys } from './usersUserKeys'; +import type { Version } from './version'; export interface ContentHistory { latest: boolean; diff --git a/src/api/models/contentId.ts b/src/api/models/contentId.ts deleted file mode 100644 index 43b0b381..00000000 --- a/src/api/models/contentId.ts +++ /dev/null @@ -1 +0,0 @@ -export interface ContentId {} diff --git a/src/api/models/contentLookAndFeel.ts b/src/api/models/contentLookAndFeel.ts index a8c2016b..27240ec7 100644 --- a/src/api/models/contentLookAndFeel.ts +++ b/src/api/models/contentLookAndFeel.ts @@ -1,5 +1,5 @@ -import { ContainerLookAndFeel } from './containerLookAndFeel'; -import { ScreenLookAndFeel } from './screenLookAndFeel'; +import type { ContainerLookAndFeel } from './containerLookAndFeel'; +import type { ScreenLookAndFeel } from './screenLookAndFeel'; export interface ContentLookAndFeel { screen: ScreenLookAndFeel; diff --git a/src/api/models/contentMetadata.ts b/src/api/models/contentMetadata.ts deleted file mode 100644 index 2157d8c1..00000000 --- a/src/api/models/contentMetadata.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { GenericLinks } from './genericLinks'; -import { LabelArray } from './labelArray'; -import { Version } from './version'; - -/** Metadata object for page, blogpost, comment content */ -export interface ContentMetadata { - currentuser?: { - favourited?: { - isFavourite?: boolean; - favouritedDate?: string; - }; - lastmodified?: { - version?: Version; - friendlyLastModified?: string; - }; - lastcontributed?: { - status?: string; - when?: string; - }; - viewed?: { - lastSeen?: string; - friendlyLastSeen?: string; - }; - }; - properties?: GenericLinks; - frontend?: {}; - labels?: LabelArray; -} diff --git a/src/api/models/contentPage.ts b/src/api/models/contentPage.ts deleted file mode 100644 index fc39f897..00000000 --- a/src/api/models/contentPage.ts +++ /dev/null @@ -1,2 +0,0 @@ -/** Representation of a page (content) */ -export interface ContentPage {} diff --git a/src/api/models/contentPermissionRequest.ts b/src/api/models/contentPermissionRequest.ts index 5f0aea06..2534cb17 100644 --- a/src/api/models/contentPermissionRequest.ts +++ b/src/api/models/contentPermissionRequest.ts @@ -1,4 +1,4 @@ -import { PermissionSubjectWithGroupId } from './permissionSubjectWithGroupId'; +import type { PermissionSubjectWithGroupId } from './permissionSubjectWithGroupId'; /** This object represents the request for the content permission check API. */ export interface ContentPermissionRequest { diff --git a/src/api/models/contentProperty.ts b/src/api/models/contentProperty.ts index aa7fa545..a7db4388 100644 --- a/src/api/models/contentProperty.ts +++ b/src/api/models/contentProperty.ts @@ -1,5 +1,5 @@ -import { Content } from './content'; -import { GenericLinks } from './genericLinks'; +import type { Content } from './content'; +import type { GenericLinks } from './genericLinks'; export interface ContentProperty { id: number; diff --git a/src/api/models/contentPropertyArray.ts b/src/api/models/contentPropertyArray.ts index e2a87bc2..49a3f369 100644 --- a/src/api/models/contentPropertyArray.ts +++ b/src/api/models/contentPropertyArray.ts @@ -1,5 +1,5 @@ -import { ContentProperty } from './contentProperty'; -import { GenericLinks } from './genericLinks'; +import type { ContentProperty } from './contentProperty'; +import type { GenericLinks } from './genericLinks'; export interface ContentPropertyArray { results: ContentProperty[]; diff --git a/src/api/models/contentPropertyCreate.ts b/src/api/models/contentPropertyCreate.ts index 3dfacee4..6789b66c 100644 --- a/src/api/models/contentPropertyCreate.ts +++ b/src/api/models/contentPropertyCreate.ts @@ -1,4 +1,4 @@ -import { PropertyValue } from './propertyValue'; +import type { PropertyValue } from './propertyValue'; export interface ContentPropertyCreate { /** The key of the new property. */ diff --git a/src/api/models/contentPropertyCreateNoKey.ts b/src/api/models/contentPropertyCreateNoKey.ts index 83f5205f..94f04579 100644 --- a/src/api/models/contentPropertyCreateNoKey.ts +++ b/src/api/models/contentPropertyCreateNoKey.ts @@ -1,4 +1,4 @@ -import { PropertyValue } from './propertyValue'; +import type { PropertyValue } from './propertyValue'; export interface ContentPropertyCreateNoKey { value: PropertyValue; diff --git a/src/api/models/contentRestriction.ts b/src/api/models/contentRestriction.ts index 51093127..fc5d1bfa 100644 --- a/src/api/models/contentRestriction.ts +++ b/src/api/models/contentRestriction.ts @@ -1,7 +1,7 @@ -import { Content } from './content'; -import { GenericLinks } from './genericLinks'; -import { GroupArray } from './groupArray'; -import { UserArray } from './userArray'; +import type { Content } from './content'; +import type { GenericLinks } from './genericLinks'; +import type { GroupArray } from './groupArray'; +import type { UserArray } from './userArray'; export interface ContentRestriction { operation: string; diff --git a/src/api/models/contentRestrictionArray.ts b/src/api/models/contentRestrictionArray.ts index 38b96670..9398e92a 100644 --- a/src/api/models/contentRestrictionArray.ts +++ b/src/api/models/contentRestrictionArray.ts @@ -1,5 +1,5 @@ -import { ContentRestriction } from './contentRestriction'; -import { GenericLinks } from './genericLinks'; +import type { ContentRestriction } from './contentRestriction'; +import type { GenericLinks } from './genericLinks'; export interface ContentRestrictionArray { results: ContentRestriction[]; diff --git a/src/api/models/contentRestrictionUpdateArray.ts b/src/api/models/contentRestrictionUpdateArray.ts index 628b4556..c69f4fc2 100644 --- a/src/api/models/contentRestrictionUpdateArray.ts +++ b/src/api/models/contentRestrictionUpdateArray.ts @@ -1,3 +1,3 @@ -import { ContentRestrictionUpdate } from './contentRestrictionUpdate'; +import type { ContentRestrictionUpdate } from './contentRestrictionUpdate'; export type ContentRestrictionUpdateArray = ContentRestrictionUpdate[]; diff --git a/src/api/models/contentStateContainer.ts b/src/api/models/contentStateContainer.ts deleted file mode 100644 index b1b34798..00000000 --- a/src/api/models/contentStateContainer.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ContentState } from './contentState'; - -export interface ContentStateContainer { - /** Null or Content State */ - target?: ContentState; -} diff --git a/src/api/models/contentStateResponse.ts b/src/api/models/contentStateResponse.ts index a4e3dff4..71a52000 100644 --- a/src/api/models/contentStateResponse.ts +++ b/src/api/models/contentStateResponse.ts @@ -1,4 +1,4 @@ -import { ContentState } from './contentState'; +import type { ContentState } from './contentState'; export interface ContentStateResponse { /** Null or content state */ diff --git a/src/api/models/contentStateSettings.ts b/src/api/models/contentStateSettings.ts index dbaed327..64089036 100644 --- a/src/api/models/contentStateSettings.ts +++ b/src/api/models/contentStateSettings.ts @@ -1,4 +1,4 @@ -import { ContentState } from './contentState'; +import type { ContentState } from './contentState'; export interface ContentStateSettings { /** Whether users can place content states on any pages and blog posts in the space */ diff --git a/src/api/models/contentTemplate.ts b/src/api/models/contentTemplate.ts index 26c4432e..d450a6d4 100644 --- a/src/api/models/contentTemplate.ts +++ b/src/api/models/contentTemplate.ts @@ -1,6 +1,6 @@ -import { ContentBody } from './contentBody'; -import { GenericLinks } from './genericLinks'; -import { Label } from './label'; +import type { ContentBody } from './contentBody'; +import type { GenericLinks } from './genericLinks'; +import type { Label } from './label'; export interface ContentTemplate { templateId: string; diff --git a/src/api/models/contentTemplateArray.ts b/src/api/models/contentTemplateArray.ts index 535848a9..2cf836b7 100644 --- a/src/api/models/contentTemplateArray.ts +++ b/src/api/models/contentTemplateArray.ts @@ -1,5 +1,5 @@ -import { ContentTemplate } from './contentTemplate'; -import { GenericLinks } from './genericLinks'; +import type { ContentTemplate } from './contentTemplate'; +import type { GenericLinks } from './genericLinks'; export interface ContentTemplateArray { results: ContentTemplate[]; diff --git a/src/api/models/contentTemplateBodyCreate.ts b/src/api/models/contentTemplateBodyCreate.ts index 81a3df3b..74b06cda 100644 --- a/src/api/models/contentTemplateBodyCreate.ts +++ b/src/api/models/contentTemplateBodyCreate.ts @@ -1,4 +1,4 @@ -import { ContentBodyCreate } from './contentBodyCreate'; +import type { ContentBodyCreate } from './contentBodyCreate'; /** This object is used when creating or updating content. */ export interface ContentTemplateBodyCreate { diff --git a/src/api/models/contentTemplateCreate.ts b/src/api/models/contentTemplateCreate.ts index 3d3f67ba..9d598cad 100644 --- a/src/api/models/contentTemplateCreate.ts +++ b/src/api/models/contentTemplateCreate.ts @@ -1,5 +1,5 @@ -import { ContentTemplateBodyCreate } from './contentTemplateBodyCreate'; -import { Label } from './label'; +import type { ContentTemplateBodyCreate } from './contentTemplateBodyCreate'; +import type { Label } from './label'; /** This object is used to create content templates. */ export interface ContentTemplateCreate { diff --git a/src/api/models/contentTemplateUpdate.ts b/src/api/models/contentTemplateUpdate.ts index 230bc24f..9e03a268 100644 --- a/src/api/models/contentTemplateUpdate.ts +++ b/src/api/models/contentTemplateUpdate.ts @@ -1,5 +1,5 @@ -import { ContentBodyCreate } from './contentBodyCreate'; -import { Label } from './label'; +import type { ContentBodyCreate } from './contentBodyCreate'; +import type { Label } from './label'; /** This object is used to update content templates. */ export interface ContentTemplateUpdate { diff --git a/src/api/models/contentUpdate.ts b/src/api/models/contentUpdate.ts index 10ee9be6..aba00a6a 100644 --- a/src/api/models/contentUpdate.ts +++ b/src/api/models/contentUpdate.ts @@ -1,5 +1,5 @@ -import { ContentBodyCreate } from './contentBodyCreate'; -import { ContentBodyCreateStorage } from './contentBodyCreateStorage'; +import type { ContentBodyCreate } from './contentBodyCreate'; +import type { ContentBodyCreateStorage } from './contentBodyCreateStorage'; export interface ContentUpdate { /** diff --git a/src/api/models/copyPageHierarchyRequest.ts b/src/api/models/copyPageHierarchyRequest.ts index 17ef8647..dfd46f89 100644 --- a/src/api/models/copyPageHierarchyRequest.ts +++ b/src/api/models/copyPageHierarchyRequest.ts @@ -1,4 +1,4 @@ -import { CopyPageHierarchyTitleOptions } from './copyPageHierarchyTitleOptions'; +import type { CopyPageHierarchyTitleOptions } from './copyPageHierarchyTitleOptions'; export interface CopyPageHierarchyRequest { /** If set to `true`, attachments are copied to the destination page. */ diff --git a/src/api/models/copyPageRequest.ts b/src/api/models/copyPageRequest.ts index 98ee1e85..21a034ff 100644 --- a/src/api/models/copyPageRequest.ts +++ b/src/api/models/copyPageRequest.ts @@ -1,5 +1,5 @@ -import { ContentBodyCreate } from './contentBodyCreate'; -import { CopyPageRequestDestination } from './copyPageRequestDestination'; +import type { ContentBodyCreate } from './contentBodyCreate'; +import type { CopyPageRequestDestination } from './copyPageRequestDestination'; export interface CopyPageRequest { /** If set to `true`, attachments are copied to the destination page. */ diff --git a/src/api/models/createdAttachment.ts b/src/api/models/createdAttachment.ts index d4c29a8b..38f42a8c 100644 --- a/src/api/models/createdAttachment.ts +++ b/src/api/models/createdAttachment.ts @@ -1,6 +1,6 @@ -import { Attachment } from './attachment'; -import { AttachmentContainer } from './attachmentContainer'; -import { Version } from './version'; +import type { Attachment } from './attachment'; +import type { AttachmentContainer } from './attachmentContainer'; +import type { Version } from './version'; export interface CreatedAttachment extends Attachment { version: Version; diff --git a/src/api/models/deletedSpace.ts b/src/api/models/deletedSpace.ts deleted file mode 100644 index ee86d525..00000000 --- a/src/api/models/deletedSpace.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface DeletedSpace { - id: string; - links: { - status: string; - }; -} diff --git a/src/api/models/dynamicModulesErrorMessage.ts b/src/api/models/dynamicModulesErrorMessage.ts deleted file mode 100644 index aa48e603..00000000 --- a/src/api/models/dynamicModulesErrorMessage.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DynamicModulesErrorMessage { - /** The error message. */ - message: string; -} diff --git a/src/api/models/embeddable.ts b/src/api/models/embeddable.ts index 9c81770b..4ee777de 100644 --- a/src/api/models/embeddable.ts +++ b/src/api/models/embeddable.ts @@ -1 +1,2 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ export type Embeddable = Record; diff --git a/src/api/models/embeddedContent.ts b/src/api/models/embeddedContent.ts index edab678f..e21b8345 100644 --- a/src/api/models/embeddedContent.ts +++ b/src/api/models/embeddedContent.ts @@ -1,4 +1,4 @@ -import { Embeddable } from './embeddable'; +import type { Embeddable } from './embeddable'; export interface EmbeddedContent { entityId?: number; diff --git a/src/api/models/genericLinks.ts b/src/api/models/genericLinks.ts index bddff584..f1045253 100644 --- a/src/api/models/genericLinks.ts +++ b/src/api/models/genericLinks.ts @@ -1,6 +1,5 @@ -export type GenericLinks = { - [key: string]: any; - +/* eslint-disable @typescript-eslint/no-explicit-any */ +export type GenericLinks = Record & { self: string; next?: string; tinyui?: string; diff --git a/src/api/models/getRestrictionsByOperation.ts b/src/api/models/getRestrictionsByOperation.ts index 2eaf17db..41237170 100644 --- a/src/api/models/getRestrictionsByOperation.ts +++ b/src/api/models/getRestrictionsByOperation.ts @@ -1,4 +1,4 @@ -import { GenericLinks } from './genericLinks'; +import type { GenericLinks } from './genericLinks'; export interface GetRestrictionsByOperation { _links: GenericLinks; diff --git a/src/api/models/group.ts b/src/api/models/group.ts index b63749a9..5c62b209 100644 --- a/src/api/models/group.ts +++ b/src/api/models/group.ts @@ -1,4 +1,4 @@ -import { GenericLinks } from './genericLinks'; +import type { GenericLinks } from './genericLinks'; export interface Group { type: string; diff --git a/src/api/models/groupArray.ts b/src/api/models/groupArray.ts index 642b5109..d77106a2 100644 --- a/src/api/models/groupArray.ts +++ b/src/api/models/groupArray.ts @@ -1,4 +1,4 @@ -import { Group } from './group'; +import type { Group } from './group'; export interface GroupArray { results: Group[]; diff --git a/src/api/models/groupArrayWithLinks.ts b/src/api/models/groupArrayWithLinks.ts index 24536f72..c7c944a3 100644 --- a/src/api/models/groupArrayWithLinks.ts +++ b/src/api/models/groupArrayWithLinks.ts @@ -1,4 +1,5 @@ -import { GroupArray } from './groupArray'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { GroupArray } from './groupArray'; /** Same as GroupArray but with `_links` property. */ export interface GroupArrayWithLinks extends GroupArray { diff --git a/src/api/models/headerLookAndFeel.ts b/src/api/models/headerLookAndFeel.ts index 4a23ec0d..eabf286f 100644 --- a/src/api/models/headerLookAndFeel.ts +++ b/src/api/models/headerLookAndFeel.ts @@ -1,6 +1,6 @@ -import { ButtonLookAndFeel } from './buttonLookAndFeel'; -import { NavigationLookAndFeel } from './navigationLookAndFeel'; -import { SearchFieldLookAndFeel } from './searchFieldLookAndFeel'; +import type { ButtonLookAndFeel } from './buttonLookAndFeel'; +import type { NavigationLookAndFeel } from './navigationLookAndFeel'; +import type { SearchFieldLookAndFeel } from './searchFieldLookAndFeel'; export interface HeaderLookAndFeel { backgroundColor: string; diff --git a/src/api/models/horizontalHeaderLookAndFeel.ts b/src/api/models/horizontalHeaderLookAndFeel.ts index c2422422..4fc6c7b1 100644 --- a/src/api/models/horizontalHeaderLookAndFeel.ts +++ b/src/api/models/horizontalHeaderLookAndFeel.ts @@ -1,7 +1,7 @@ -import { ButtonLookAndFeel } from './buttonLookAndFeel'; -import { NavigationLookAndFeel } from './navigationLookAndFeel'; -import { SearchFieldLookAndFeel } from './searchFieldLookAndFeel'; -import { TopNavigationLookAndFeel } from './topNavigationLookAndFeel'; +import type { ButtonLookAndFeel } from './buttonLookAndFeel'; +import type { NavigationLookAndFeel } from './navigationLookAndFeel'; +import type { SearchFieldLookAndFeel } from './searchFieldLookAndFeel'; +import type { TopNavigationLookAndFeel } from './topNavigationLookAndFeel'; export interface HorizontalHeaderLookAndFeel { backgroundColor: string; diff --git a/src/api/models/index.ts b/src/api/models/index.ts index 12dd60b5..9cac4f8a 100644 --- a/src/api/models/index.ts +++ b/src/api/models/index.ts @@ -10,7 +10,6 @@ export * from './asyncId'; export * from './attachment'; export * from './attachmentContainer'; export * from './attachmentMetadata'; -export * from './attachmentUpdate'; export * from './auditRecord'; export * from './auditRecordArray'; export * from './auditRecordCreate'; @@ -22,28 +21,21 @@ export * from './bulkUserLookup'; export * from './bulkUserLookupArray'; export * from './buttonLookAndFeel'; export * from './changedValue'; -export * from './connectModule'; export * from './connectModules'; export * from './container'; export * from './containerLookAndFeel'; export * from './containerSummary'; export * from './content'; export * from './contentArray'; -export * from './contentAttachment'; -export * from './contentBlogpost'; export * from './contentBlueprintDraft'; export * from './contentBody'; export * from './contentBodyCreate'; export * from './contentBodyCreateStorage'; export * from './contentChildren'; export * from './contentChildType'; -export * from './contentComment'; export * from './contentCreate'; export * from './contentHistory'; -export * from './contentId'; export * from './contentLookAndFeel'; -export * from './contentMetadata'; -export * from './contentPage'; export * from './contentPermissionRequest'; export * from './contentProperty'; export * from './contentPropertyArray'; @@ -55,7 +47,6 @@ export * from './contentRestrictionArray'; export * from './contentRestrictionUpdate'; export * from './contentRestrictionUpdateArray'; export * from './contentState'; -export * from './contentStateContainer'; export * from './contentStateResponse'; export * from './contentStateRestInput'; export * from './contentStateSettings'; @@ -69,11 +60,7 @@ export * from './copyPageHierarchyRequest'; export * from './copyPageHierarchyTitleOptions'; export * from './copyPageRequest'; export * from './copyPageRequestDestination'; -export * from './cQLPersonalDataConvertedQueries'; -export * from './cQLPersonalDataMigrationRequest'; export * from './createdAttachment'; -export * from './deletedSpace'; -export * from './dynamicModulesErrorMessage'; export * from './embeddable'; export * from './embeddedContent'; export * from './genericLinks'; @@ -104,7 +91,6 @@ export * from './longTaskStatusWithLinks'; export * from './lookAndFeel'; export * from './lookAndFeelSelection'; export * from './lookAndFeelSettings'; -export * from './lookAndFeelUpdated'; export * from './macroInstance'; export * from './menusLookAndFeel'; export * from './message'; @@ -160,8 +146,6 @@ export * from './topNavigationLookAndFeel'; export * from './user'; export * from './userAnonymous'; export * from './userArray'; -export * from './userArrayWithLinks'; -export * from './userDetails'; export * from './userProperty'; export * from './userPropertyCreate'; export * from './userPropertyKeyArray'; diff --git a/src/api/models/labelArray.ts b/src/api/models/labelArray.ts index 25dba002..75283389 100644 --- a/src/api/models/labelArray.ts +++ b/src/api/models/labelArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { Label } from './label'; +import type { GenericLinks } from './genericLinks'; +import type { Label } from './label'; export interface LabelArray { results: Label[]; diff --git a/src/api/models/labelCreateArray.ts b/src/api/models/labelCreateArray.ts index f6759849..06821fa7 100644 --- a/src/api/models/labelCreateArray.ts +++ b/src/api/models/labelCreateArray.ts @@ -1,3 +1,3 @@ -import { LabelCreate } from './labelCreate'; +import type { LabelCreate } from './labelCreate'; export type LabelCreateArray = LabelCreate[]; diff --git a/src/api/models/labelDetails.ts b/src/api/models/labelDetails.ts index 9c412f6e..ea09975a 100644 --- a/src/api/models/labelDetails.ts +++ b/src/api/models/labelDetails.ts @@ -1,5 +1,5 @@ -import { Label } from './label'; -import { LabeledContentPageResponse } from './labeledContentPageResponse'; +import type { Label } from './label'; +import type { LabeledContentPageResponse } from './labeledContentPageResponse'; export interface LabelDetails { label: Label; diff --git a/src/api/models/labeledContent.ts b/src/api/models/labeledContent.ts index 6df148c5..66345b72 100644 --- a/src/api/models/labeledContent.ts +++ b/src/api/models/labeledContent.ts @@ -1,4 +1,4 @@ -import { LabeledContentType } from './labeledContentType'; +import type { LabeledContentType } from './labeledContentType'; export interface LabeledContent { contentType: LabeledContentType; diff --git a/src/api/models/labeledContentPageResponse.ts b/src/api/models/labeledContentPageResponse.ts index ef7d7ff9..d80bc8af 100644 --- a/src/api/models/labeledContentPageResponse.ts +++ b/src/api/models/labeledContentPageResponse.ts @@ -1,4 +1,4 @@ -import { LabeledContent } from './labeledContent'; +import type { LabeledContent } from './labeledContent'; export interface LabeledContentPageResponse { results: LabeledContent[]; diff --git a/src/api/models/lifecycle.ts b/src/api/models/lifecycle.ts index 2225c0b7..7eb3df11 100644 --- a/src/api/models/lifecycle.ts +++ b/src/api/models/lifecycle.ts @@ -20,12 +20,6 @@ export interface Lifecycle { */ clientKey?: string; - /** - * @deprecated This is the public key for this Atlassian product instance. This field is deprecated and should not be - * used. - */ - publicKey?: string; - /** * The account ID for identifying users in the `sub` claim sent in JWT during calls. This is the user associated with * the relevant action, and may not be present if there is no logged in user. @@ -39,15 +33,6 @@ export interface Lifecycle { */ sharedSecret?: string; - /** @deprecated This is a string representation of the host product's version. Generally you should not need it. */ - serverVersion?: string; - - /** - * @deprecated This is a [SemVer-compliant](https://semver.org/) version of Atlassian Connect which is running on the - * host server, for example: `1.1.15`. - */ - pluginsVersion?: string; - /** URL prefix for this Atlassian product instance. All of its REST endpoints begin with this `baseUrl`. */ baseUrl: string; diff --git a/src/api/models/longTaskStatus.ts b/src/api/models/longTaskStatus.ts index d4c9caf3..8df79a17 100644 --- a/src/api/models/longTaskStatus.ts +++ b/src/api/models/longTaskStatus.ts @@ -1,4 +1,4 @@ -import { Message } from './message'; +import type { Message } from './message'; /** * Current status of a long running task* diff --git a/src/api/models/longTaskStatusArray.ts b/src/api/models/longTaskStatusArray.ts index e6a4a073..5092f161 100644 --- a/src/api/models/longTaskStatusArray.ts +++ b/src/api/models/longTaskStatusArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { LongTaskStatus } from './longTaskStatus'; +import type { GenericLinks } from './genericLinks'; +import type { LongTaskStatus } from './longTaskStatus'; export interface LongTaskStatusArray { results: LongTaskStatus[]; diff --git a/src/api/models/longTaskStatusWithLinks.ts b/src/api/models/longTaskStatusWithLinks.ts index 57e40972..5b7caf61 100644 --- a/src/api/models/longTaskStatusWithLinks.ts +++ b/src/api/models/longTaskStatusWithLinks.ts @@ -1,4 +1,5 @@ -import { LongTaskStatus } from './longTaskStatus'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { LongTaskStatus } from './longTaskStatus'; /** Same as LongTaskStatus but with `_links` property. */ export interface LongTaskStatusWithLinks extends LongTaskStatus { diff --git a/src/api/models/lookAndFeel.ts b/src/api/models/lookAndFeel.ts index e1a5b6ef..39db065b 100644 --- a/src/api/models/lookAndFeel.ts +++ b/src/api/models/lookAndFeel.ts @@ -1,7 +1,7 @@ -import { ContentLookAndFeel } from './contentLookAndFeel'; -import { HeaderLookAndFeel } from './headerLookAndFeel'; -import { HorizontalHeaderLookAndFeel } from './horizontalHeaderLookAndFeel'; -import { MenusLookAndFeel } from './menusLookAndFeel'; +import type { ContentLookAndFeel } from './contentLookAndFeel'; +import type { HeaderLookAndFeel } from './headerLookAndFeel'; +import type { HorizontalHeaderLookAndFeel } from './horizontalHeaderLookAndFeel'; +import type { MenusLookAndFeel } from './menusLookAndFeel'; export interface LookAndFeel { headings: { diff --git a/src/api/models/lookAndFeelSettings.ts b/src/api/models/lookAndFeelSettings.ts index e1f6cdd8..f67895c0 100644 --- a/src/api/models/lookAndFeelSettings.ts +++ b/src/api/models/lookAndFeelSettings.ts @@ -1,4 +1,4 @@ -import { LookAndFeel } from './lookAndFeel'; +import type { LookAndFeel } from './lookAndFeel'; export interface LookAndFeelSettings { selected: string; diff --git a/src/api/models/lookAndFeelUpdated.ts b/src/api/models/lookAndFeelUpdated.ts deleted file mode 100644 index 67a280fd..00000000 --- a/src/api/models/lookAndFeelUpdated.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { LookAndFeel } from './lookAndFeel'; - -/** Look and feel settings returned after an update. */ -export interface LookAndFeelUpdated extends LookAndFeel { - _links: Record; -} diff --git a/src/api/models/macroInstance.ts b/src/api/models/macroInstance.ts index 297129e5..171f0230 100644 --- a/src/api/models/macroInstance.ts +++ b/src/api/models/macroInstance.ts @@ -1,4 +1,4 @@ -import { GenericLinks } from './genericLinks'; +import type { GenericLinks } from './genericLinks'; export interface MacroInstance { name?: string; diff --git a/src/api/models/message.ts b/src/api/models/message.ts index cfc62500..92e67eb3 100644 --- a/src/api/models/message.ts +++ b/src/api/models/message.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ export interface Message { translation: string; args: Record[]; diff --git a/src/api/models/migratedUserArray.ts b/src/api/models/migratedUserArray.ts index 4bf7d0b1..02747c6e 100644 --- a/src/api/models/migratedUserArray.ts +++ b/src/api/models/migratedUserArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { MigratedUser } from './migratedUser'; +import type { GenericLinks } from './genericLinks'; +import type { MigratedUser } from './migratedUser'; export interface MigratedUserArray { results: MigratedUser[]; diff --git a/src/api/models/permissionCheckResponse.ts b/src/api/models/permissionCheckResponse.ts index ecb6bace..39563c64 100644 --- a/src/api/models/permissionCheckResponse.ts +++ b/src/api/models/permissionCheckResponse.ts @@ -1,4 +1,4 @@ -import { Message } from './message'; +import type { Message } from './message'; /** * This object represents the response for the content permission check API. If the user or group does not have* diff --git a/src/api/models/propertyValue.ts b/src/api/models/propertyValue.ts index 15988e3a..5bfd6144 100644 --- a/src/api/models/propertyValue.ts +++ b/src/api/models/propertyValue.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ /** * The value of the property. This can be empty or a complex object.* For example, * diff --git a/src/api/models/relation.ts b/src/api/models/relation.ts index 9a9e544b..a90de33c 100644 --- a/src/api/models/relation.ts +++ b/src/api/models/relation.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { RelationData } from './relationData'; +import type { GenericLinks } from './genericLinks'; +import type { RelationData } from './relationData'; export interface Relation { name: string; diff --git a/src/api/models/relationArray.ts b/src/api/models/relationArray.ts index 16c6d94f..b29d540a 100644 --- a/src/api/models/relationArray.ts +++ b/src/api/models/relationArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { Relation } from './relation'; +import type { GenericLinks } from './genericLinks'; +import type { Relation } from './relation'; export interface RelationArray { results: Relation[]; diff --git a/src/api/models/relationData.ts b/src/api/models/relationData.ts index ede97154..a6a7ea61 100644 --- a/src/api/models/relationData.ts +++ b/src/api/models/relationData.ts @@ -1,4 +1,4 @@ -import { User } from './user'; +import type { User } from './user'; export interface RelationData { createdBy?: User; diff --git a/src/api/models/searchPageResponseSearchResult.ts b/src/api/models/searchPageResponseSearchResult.ts index 042ad1ba..e50bacb1 100644 --- a/src/api/models/searchPageResponseSearchResult.ts +++ b/src/api/models/searchPageResponseSearchResult.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { SearchResult } from './searchResult'; +import type { GenericLinks } from './genericLinks'; +import type { SearchResult } from './searchResult'; export interface SearchPageResponseSearchResult { results: SearchResult[]; diff --git a/src/api/models/searchResult.ts b/src/api/models/searchResult.ts index b8645e92..fc4dea9f 100644 --- a/src/api/models/searchResult.ts +++ b/src/api/models/searchResult.ts @@ -1,6 +1,6 @@ -import { Breadcrumb } from './breadcrumb'; -import { ContainerSummary } from './containerSummary'; -import { Content } from './content'; +import type { Breadcrumb } from './breadcrumb'; +import type { ContainerSummary } from './containerSummary'; +import type { Content } from './content'; export interface SearchResult { content: Content; diff --git a/src/api/models/space.ts b/src/api/models/space.ts index a9815896..7b375aec 100644 --- a/src/api/models/space.ts +++ b/src/api/models/space.ts @@ -1,13 +1,13 @@ -import { Content } from './content'; -import { GenericLinks } from './genericLinks'; -import { Icon } from './icon'; -import { LabelArray } from './labelArray'; -import { LookAndFeel } from './lookAndFeel'; -import { OperationCheckResult } from './operationCheckResult'; -import { SpaceDescription } from './spaceDescription'; -import { SpacePermission } from './spacePermission'; -import { SpaceSettings } from './spaceSettings'; -import { Theme } from './theme'; +import type { Content } from './content'; +import type { GenericLinks } from './genericLinks'; +import type { Icon } from './icon'; +import type { LabelArray } from './labelArray'; +import type { LookAndFeel } from './lookAndFeel'; +import type { OperationCheckResult } from './operationCheckResult'; +import type { SpaceDescription } from './spaceDescription'; +import type { SpacePermission } from './spacePermission'; +import type { SpaceSettings } from './spaceSettings'; +import type { Theme } from './theme'; export interface Space { id: number; diff --git a/src/api/models/spaceArray.ts b/src/api/models/spaceArray.ts index 5dcec348..de011c88 100644 --- a/src/api/models/spaceArray.ts +++ b/src/api/models/spaceArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { Space } from './space'; +import type { GenericLinks } from './genericLinks'; +import type { Space } from './space'; export interface SpaceArray { results: Space[]; diff --git a/src/api/models/spaceCreate.ts b/src/api/models/spaceCreate.ts index ee7f62cd..50ae88e1 100644 --- a/src/api/models/spaceCreate.ts +++ b/src/api/models/spaceCreate.ts @@ -1,5 +1,5 @@ -import { SpaceDescriptionCreate } from './spaceDescriptionCreate'; -import { SpacePermission } from './spacePermission'; +import type { SpaceDescriptionCreate } from './spaceDescriptionCreate'; +import type { SpacePermission } from './spacePermission'; /** This is the request object used when creating a new space. */ export interface SpaceCreate { diff --git a/src/api/models/spacePermission.ts b/src/api/models/spacePermission.ts index f719b1d3..58e85f35 100644 --- a/src/api/models/spacePermission.ts +++ b/src/api/models/spacePermission.ts @@ -1,6 +1,6 @@ -import { Group } from './group'; -import { OperationCheckResult } from './operationCheckResult'; -import { User } from './user'; +import type { Group } from './group'; +import type { OperationCheckResult } from './operationCheckResult'; +import type { User } from './user'; /** * This object represents a permission for given space. Permissions consist of* at least one operation object with an diff --git a/src/api/models/spacePermissionCreate.ts b/src/api/models/spacePermissionCreate.ts index efa48b59..c94d8591 100644 --- a/src/api/models/spacePermissionCreate.ts +++ b/src/api/models/spacePermissionCreate.ts @@ -1,6 +1,6 @@ -import { GroupCreate } from './groupCreate'; -import { OperationCheckResult } from './operationCheckResult'; -import { User } from './user'; +import type { GroupCreate } from './groupCreate'; +import type { OperationCheckResult } from './operationCheckResult'; +import type { User } from './user'; /** * This object represents a permission for given space. Permissions consist of* at least one operation object with an diff --git a/src/api/models/spacePermissionCustomContent.ts b/src/api/models/spacePermissionCustomContent.ts index 99dbff84..60835ae1 100644 --- a/src/api/models/spacePermissionCustomContent.ts +++ b/src/api/models/spacePermissionCustomContent.ts @@ -1,4 +1,4 @@ -import { PermissionSubject } from './permissionSubject'; +import type { PermissionSubject } from './permissionSubject'; /** * This object represents a list of space permissions for custom content type for an individual user. Permissions diff --git a/src/api/models/spacePermissionRequest.ts b/src/api/models/spacePermissionRequest.ts index d3626026..a2a7e3e2 100644 --- a/src/api/models/spacePermissionRequest.ts +++ b/src/api/models/spacePermissionRequest.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { PermissionSubject } from './permissionSubject'; +import type { GenericLinks } from './genericLinks'; +import type { PermissionSubject } from './permissionSubject'; /** * This object represents the request for the single space permission. Permissions consist of* at least one operation diff --git a/src/api/models/spacePermissionV2.ts b/src/api/models/spacePermissionV2.ts index e909cc65..a822197a 100644 --- a/src/api/models/spacePermissionV2.ts +++ b/src/api/models/spacePermissionV2.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { PermissionSubject } from './permissionSubject'; +import type { GenericLinks } from './genericLinks'; +import type { PermissionSubject } from './permissionSubject'; /** * This object represents a single space permission. Permissions consist of* at least one operation object with an diff --git a/src/api/models/spacePrivateCreate.ts b/src/api/models/spacePrivateCreate.ts index 62fa976b..ff1e3df5 100644 --- a/src/api/models/spacePrivateCreate.ts +++ b/src/api/models/spacePrivateCreate.ts @@ -1,5 +1,5 @@ -import { SpaceDescriptionCreate } from './spaceDescriptionCreate'; -import { SpacePermissionCreate } from './spacePermissionCreate'; +import type { SpaceDescriptionCreate } from './spaceDescriptionCreate'; +import type { SpacePermissionCreate } from './spacePermissionCreate'; /** This is the request object used when creating a new private space. */ export interface SpacePrivateCreate { diff --git a/src/api/models/spaceProperty.ts b/src/api/models/spaceProperty.ts index d07411bf..02da40ae 100644 --- a/src/api/models/spaceProperty.ts +++ b/src/api/models/spaceProperty.ts @@ -1,4 +1,4 @@ -import { Space } from './space'; +import type { Space } from './space'; export interface SpaceProperty { id: number; diff --git a/src/api/models/spacePropertyArray.ts b/src/api/models/spacePropertyArray.ts index 441a23dc..5a9a1986 100644 --- a/src/api/models/spacePropertyArray.ts +++ b/src/api/models/spacePropertyArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { SpaceProperty } from './spaceProperty'; +import type { GenericLinks } from './genericLinks'; +import type { SpaceProperty } from './spaceProperty'; export interface SpacePropertyArray { results: SpaceProperty[]; diff --git a/src/api/models/spacePropertyCreate.ts b/src/api/models/spacePropertyCreate.ts index e31764f9..c2a78732 100644 --- a/src/api/models/spacePropertyCreate.ts +++ b/src/api/models/spacePropertyCreate.ts @@ -1,4 +1,4 @@ -import { PropertyValue } from './propertyValue'; +import type { PropertyValue } from './propertyValue'; export interface SpacePropertyCreate { /** The key of the new property. */ diff --git a/src/api/models/spacePropertyCreateNoKey.ts b/src/api/models/spacePropertyCreateNoKey.ts index 7f783efa..27cace92 100644 --- a/src/api/models/spacePropertyCreateNoKey.ts +++ b/src/api/models/spacePropertyCreateNoKey.ts @@ -1,4 +1,4 @@ -import { PropertyValue } from './propertyValue'; +import type { PropertyValue } from './propertyValue'; export interface SpacePropertyCreateNoKey { value: PropertyValue; diff --git a/src/api/models/spacePropertyUpdate.ts b/src/api/models/spacePropertyUpdate.ts index da3447c4..76be6128 100644 --- a/src/api/models/spacePropertyUpdate.ts +++ b/src/api/models/spacePropertyUpdate.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ export interface SpacePropertyUpdate { /** The value of the property. */ value: Record; diff --git a/src/api/models/spaceSettings.ts b/src/api/models/spaceSettings.ts index e4985460..9171385f 100644 --- a/src/api/models/spaceSettings.ts +++ b/src/api/models/spaceSettings.ts @@ -1,4 +1,4 @@ -import { GenericLinks } from './genericLinks'; +import type { GenericLinks } from './genericLinks'; export interface SpaceSettings { /** diff --git a/src/api/models/spaceUpdate.ts b/src/api/models/spaceUpdate.ts index 1177903d..5149077b 100644 --- a/src/api/models/spaceUpdate.ts +++ b/src/api/models/spaceUpdate.ts @@ -1,4 +1,4 @@ -import { SpaceDescriptionCreate } from './spaceDescriptionCreate'; +import type { SpaceDescriptionCreate } from './spaceDescriptionCreate'; export interface SpaceUpdate { /** The name of the space. */ diff --git a/src/api/models/spaceWatch.ts b/src/api/models/spaceWatch.ts index 77515a12..b86fb418 100644 --- a/src/api/models/spaceWatch.ts +++ b/src/api/models/spaceWatch.ts @@ -1,4 +1,4 @@ -import { SpaceWatchUser } from './spaceWatchUser'; +import type { SpaceWatchUser } from './spaceWatchUser'; export interface SpaceWatch { type: string; diff --git a/src/api/models/spaceWatchArray.ts b/src/api/models/spaceWatchArray.ts index dce15192..264dd7c0 100644 --- a/src/api/models/spaceWatchArray.ts +++ b/src/api/models/spaceWatchArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { SpaceWatch } from './spaceWatch'; +import type { GenericLinks } from './genericLinks'; +import type { SpaceWatch } from './spaceWatch'; export interface SpaceWatchArray { results: SpaceWatch[]; diff --git a/src/api/models/spaceWatchUser.ts b/src/api/models/spaceWatchUser.ts index dc2a37d0..d8a624ca 100644 --- a/src/api/models/spaceWatchUser.ts +++ b/src/api/models/spaceWatchUser.ts @@ -1,6 +1,5 @@ -import { Icon } from './icon'; -import { OperationCheckResult } from './operationCheckResult'; -import { UserDetails } from './userDetails'; +import type { Icon } from './icon'; +import type { OperationCheckResult } from './operationCheckResult'; /** * This essentially the same as the `User` object, but no `_links` property and* no `_expandable` property (therefore, @@ -26,7 +25,6 @@ export interface SpaceWatchUser { profilePicture: Icon; displayName: string; operations?: OperationCheckResult[]; - details?: UserDetails; accountType: string; email: string; publicName: string; diff --git a/src/api/models/taskPageResponse.ts b/src/api/models/taskPageResponse.ts index e90c2f12..66cdf250 100644 --- a/src/api/models/taskPageResponse.ts +++ b/src/api/models/taskPageResponse.ts @@ -1,4 +1,4 @@ -import { Task } from './task'; +import type { Task } from './task'; export interface TaskPageResponse { results: Task[]; diff --git a/src/api/models/theme.ts b/src/api/models/theme.ts index b2f213bd..fdefc1cb 100644 --- a/src/api/models/theme.ts +++ b/src/api/models/theme.ts @@ -1,4 +1,5 @@ -import { ThemeNoLinks } from './themeNoLinks'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { ThemeNoLinks } from './themeNoLinks'; export interface Theme extends ThemeNoLinks { _links: Record; diff --git a/src/api/models/themeArray.ts b/src/api/models/themeArray.ts index 28b99ed6..b1c141e3 100644 --- a/src/api/models/themeArray.ts +++ b/src/api/models/themeArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { ThemeNoLinks } from './themeNoLinks'; +import type { GenericLinks } from './genericLinks'; +import type { ThemeNoLinks } from './themeNoLinks'; export interface ThemeArray { results: ThemeNoLinks[]; diff --git a/src/api/models/themeNoLinks.ts b/src/api/models/themeNoLinks.ts index 8e82c9eb..fdd2bd8c 100644 --- a/src/api/models/themeNoLinks.ts +++ b/src/api/models/themeNoLinks.ts @@ -1,4 +1,4 @@ -import { Icon } from './icon'; +import type { Icon } from './icon'; /** Theme object without links. Used in ThemeArray. */ export interface ThemeNoLinks { diff --git a/src/api/models/user.ts b/src/api/models/user.ts index 217c196c..27fbef11 100644 --- a/src/api/models/user.ts +++ b/src/api/models/user.ts @@ -1,8 +1,7 @@ -import { GenericLinks } from './genericLinks'; -import { Icon } from './icon'; -import { OperationCheckResult } from './operationCheckResult'; -import { Space } from './space'; -import { UserDetails } from './userDetails'; +import type { GenericLinks } from './genericLinks'; +import type { Icon } from './icon'; +import type { OperationCheckResult } from './operationCheckResult'; +import type { Space } from './space'; export interface User { type: string; @@ -31,7 +30,6 @@ export interface User { /** The display name of the user. Depending on the user's privacy setting, this may be the same as publicName. */ displayName: string; operations?: OperationCheckResult[]; - details?: UserDetails; personalSpace?: Space; _expandable: { operations?: string; diff --git a/src/api/models/userAnonymous.ts b/src/api/models/userAnonymous.ts index d1605235..5422f99e 100644 --- a/src/api/models/userAnonymous.ts +++ b/src/api/models/userAnonymous.ts @@ -1,6 +1,6 @@ -import { GenericLinks } from './genericLinks'; -import { Icon } from './icon'; -import { OperationCheckResult } from './operationCheckResult'; +import type { GenericLinks } from './genericLinks'; +import type { Icon } from './icon'; +import type { OperationCheckResult } from './operationCheckResult'; export interface UserAnonymous { type: string; diff --git a/src/api/models/userArray.ts b/src/api/models/userArray.ts index 9ead9f46..ba056309 100644 --- a/src/api/models/userArray.ts +++ b/src/api/models/userArray.ts @@ -1,4 +1,4 @@ -import { User } from './user'; +import type { User } from './user'; export interface UserArray { results: User[]; diff --git a/src/api/models/userArrayWithLinks.ts b/src/api/models/userArrayWithLinks.ts deleted file mode 100644 index 1a2bd750..00000000 --- a/src/api/models/userArrayWithLinks.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { UserArray } from './userArray'; - -/** Same as UserArray but with `_links` property. */ -export interface UserArrayWithLinks extends UserArray { - _links: Record; -} diff --git a/src/api/models/userDetails.ts b/src/api/models/userDetails.ts deleted file mode 100644 index fa94dad1..00000000 --- a/src/api/models/userDetails.ts +++ /dev/null @@ -1,49 +0,0 @@ -export interface UserDetails { - business?: { - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - position?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - department?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - location?: string; - }; - personal?: { - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - phone?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - im?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - website?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. Use the `User.email` property instead. See - * the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - email?: string; - }; -} diff --git a/src/api/models/userProperty.ts b/src/api/models/userProperty.ts index 3ded4e66..c941e5c4 100644 --- a/src/api/models/userProperty.ts +++ b/src/api/models/userProperty.ts @@ -1,4 +1,4 @@ -import { GenericLinks } from './genericLinks'; +import type { GenericLinks } from './genericLinks'; export interface UserProperty { key: string; diff --git a/src/api/models/userPropertyKeyArray.ts b/src/api/models/userPropertyKeyArray.ts index 337cb210..0e4d2322 100644 --- a/src/api/models/userPropertyKeyArray.ts +++ b/src/api/models/userPropertyKeyArray.ts @@ -1,4 +1,4 @@ -import { GenericLinks } from './genericLinks'; +import type { GenericLinks } from './genericLinks'; export interface UserPropertyKeyArray { results: { diff --git a/src/api/models/usersUserKeys.ts b/src/api/models/usersUserKeys.ts index 0dadfb5c..889458df 100644 --- a/src/api/models/usersUserKeys.ts +++ b/src/api/models/usersUserKeys.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { User } from './user'; +import type { GenericLinks } from './genericLinks'; +import type { User } from './user'; export interface UsersUserKeys { users: User[]; diff --git a/src/api/models/version.ts b/src/api/models/version.ts index 0d8b74e7..012cbad3 100644 --- a/src/api/models/version.ts +++ b/src/api/models/version.ts @@ -1,7 +1,7 @@ -import { Content } from './content'; -import { GenericLinks } from './genericLinks'; -import { User } from './user'; -import { UsersUserKeys } from './usersUserKeys'; +import type { Content } from './content'; +import type { GenericLinks } from './genericLinks'; +import type { User } from './user'; +import type { UsersUserKeys } from './usersUserKeys'; export interface Version { by: User; diff --git a/src/api/models/versionArray.ts b/src/api/models/versionArray.ts index fd3aa149..744c19a6 100644 --- a/src/api/models/versionArray.ts +++ b/src/api/models/versionArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { Version } from './version'; +import type { GenericLinks } from './genericLinks'; +import type { Version } from './version'; export interface VersionArray { results: Version[]; diff --git a/src/api/models/watch.ts b/src/api/models/watch.ts index 3bd04851..e7152f31 100644 --- a/src/api/models/watch.ts +++ b/src/api/models/watch.ts @@ -1,4 +1,4 @@ -import { WatchUser } from './watchUser'; +import type { WatchUser } from './watchUser'; export interface Watch { type: string; diff --git a/src/api/models/watchArray.ts b/src/api/models/watchArray.ts index a52ba1d0..e126202f 100644 --- a/src/api/models/watchArray.ts +++ b/src/api/models/watchArray.ts @@ -1,5 +1,5 @@ -import { GenericLinks } from './genericLinks'; -import { Watch } from './watch'; +import type { GenericLinks } from './genericLinks'; +import type { Watch } from './watch'; export interface WatchArray { results: Watch[]; diff --git a/src/api/models/watchUser.ts b/src/api/models/watchUser.ts index b6c21744..e24bd04f 100644 --- a/src/api/models/watchUser.ts +++ b/src/api/models/watchUser.ts @@ -1,6 +1,5 @@ -import { Icon } from './icon'; -import { OperationCheckResult } from './operationCheckResult'; -import { UserDetails } from './userDetails'; +import type { Icon } from './icon'; +import type { OperationCheckResult } from './operationCheckResult'; /** * This essentially the same as the `User` object, but no `_links` property and* no `_expandable` property (therefore, @@ -26,5 +25,4 @@ export interface WatchUser { profilePicture: Icon; displayName: string; operations: OperationCheckResult[]; - details: UserDetails; } diff --git a/src/api/models/webResourceDependencies.ts b/src/api/models/webResourceDependencies.ts index 4c5727f1..1002c4e1 100644 --- a/src/api/models/webResourceDependencies.ts +++ b/src/api/models/webResourceDependencies.ts @@ -1,4 +1,4 @@ -import { SuperBatchWebResources } from './superBatchWebResources'; +import type { SuperBatchWebResources } from './superBatchWebResources'; export interface WebResourceDependencies { keys?: string[]; diff --git a/src/api/parameters/addCustomContentPermissions.ts b/src/api/parameters/addCustomContentPermissions.ts index 3c1e2157..ef8ad8c7 100644 --- a/src/api/parameters/addCustomContentPermissions.ts +++ b/src/api/parameters/addCustomContentPermissions.ts @@ -1,4 +1,4 @@ -import { SpacePermissionCustomContent } from '../models'; +import type { SpacePermissionCustomContent } from '../models'; export interface AddCustomContentPermissions extends SpacePermissionCustomContent { /** The key of the space to be queried for its content. */ diff --git a/src/api/parameters/addLabelsToContent.ts b/src/api/parameters/addLabelsToContent.ts index c71ee34a..a801831a 100644 --- a/src/api/parameters/addLabelsToContent.ts +++ b/src/api/parameters/addLabelsToContent.ts @@ -1,4 +1,4 @@ -import { LabelCreateArray } from '../models'; +import type { LabelCreateArray } from '../models'; export interface AddLabelsToContent { /** The ID of the content that will have labels added to it. */ diff --git a/src/api/parameters/addPermission.ts b/src/api/parameters/addPermission.ts deleted file mode 100644 index 9ef1ead4..00000000 --- a/src/api/parameters/addPermission.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { SpacePermissionV2 } from '../models'; - -export interface AddPermission extends SpacePermissionV2 { - /** The key of the space to be queried for its content. */ - spaceKey: string; -} diff --git a/src/api/parameters/addPermissionToSpace.ts b/src/api/parameters/addPermissionToSpace.ts index 825a05a3..f28b7c13 100644 --- a/src/api/parameters/addPermissionToSpace.ts +++ b/src/api/parameters/addPermissionToSpace.ts @@ -1,4 +1,4 @@ -import { SpacePermissionRequest } from '../models'; +import type { SpacePermissionRequest } from '../models'; export interface AddPermissionToSpace extends SpacePermissionRequest { /** The key of the space to be queried for its content. */ diff --git a/src/api/parameters/addRestrictions.ts b/src/api/parameters/addRestrictions.ts index 0dbd258a..a651b0a5 100644 --- a/src/api/parameters/addRestrictions.ts +++ b/src/api/parameters/addRestrictions.ts @@ -1,4 +1,4 @@ -import { AddContentRestrictionUpdateArray } from '../models'; +import type { AddContentRestrictionUpdateArray } from '../models'; export interface AddRestrictions { /** The ID of the content to add restrictions to. */ diff --git a/src/api/parameters/addUserToGroup.ts b/src/api/parameters/addUserToGroup.ts index 472be16a..6d5652a3 100644 --- a/src/api/parameters/addUserToGroup.ts +++ b/src/api/parameters/addUserToGroup.ts @@ -1,4 +1,4 @@ -import { AccountId } from '../models'; +import type { AccountId } from '../models'; export interface AddUserToGroup extends AccountId { /** Name of the group whose membership is updated */ diff --git a/src/api/parameters/addUserToGroupByGroupId.ts b/src/api/parameters/addUserToGroupByGroupId.ts index 86a4a3cd..6e1b761e 100644 --- a/src/api/parameters/addUserToGroupByGroupId.ts +++ b/src/api/parameters/addUserToGroupByGroupId.ts @@ -1,4 +1,4 @@ -import { AccountId } from '../models'; +import type { AccountId } from '../models'; export interface AddUserToGroupByGroupId extends AccountId { /** GroupId of the group whose membership is updated */ diff --git a/src/api/parameters/asyncConvertContentBodyRequest.ts b/src/api/parameters/asyncConvertContentBodyRequest.ts index 70da8de1..97d6e4db 100644 --- a/src/api/parameters/asyncConvertContentBodyRequest.ts +++ b/src/api/parameters/asyncConvertContentBodyRequest.ts @@ -1,4 +1,4 @@ -import { ContentBodyCreate } from '../models'; +import type { ContentBodyCreate } from '../models'; export interface AsyncConvertContentBodyRequest extends ContentBodyCreate { /** The name of the target format for the content body. */ @@ -75,7 +75,7 @@ export interface AsyncConvertContentBodyRequest extends ContentBodyCreate { | 'webresource.uris.css' | 'webresource.uris.data' | 'webresource.uris.js' - )[] + )[] | string | string[]; } diff --git a/src/api/parameters/checkContentPermission.ts b/src/api/parameters/checkContentPermission.ts index 0cd99970..57e1f179 100644 --- a/src/api/parameters/checkContentPermission.ts +++ b/src/api/parameters/checkContentPermission.ts @@ -1,4 +1,4 @@ -import { ContentPermissionRequest } from '../models'; +import type { ContentPermissionRequest } from '../models'; export interface CheckContentPermission extends ContentPermissionRequest { /** The ID of the content to check permissions against. */ diff --git a/src/api/parameters/convertContentBody.ts b/src/api/parameters/convertContentBody.ts index c2871db8..3e83135e 100644 --- a/src/api/parameters/convertContentBody.ts +++ b/src/api/parameters/convertContentBody.ts @@ -1,4 +1,6 @@ -import { ContentBodyCreate } from '../models'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { ContentBodyCreate } from '../models'; +import type { OneOrMany } from '~/interfaces'; export interface ConvertContentBody extends ContentBodyCreate { /** The name of the target format for the content body. */ @@ -18,7 +20,7 @@ export interface ConvertContentBody extends ContentBodyCreate { * - `mediaToken` returns JWT token for retrieving attachment data from Media API * - `macroRenderedOutput` additionally converts body to view format */ - expand?: + expand?: OneOrMany< | 'webresource' | 'webresource.superbatch.uris.js' | 'webresource.superbatch.uris.css' @@ -27,18 +29,8 @@ export interface ConvertContentBody extends ContentBodyCreate { | 'embeddedContent' | 'mediaToken' | 'macroRenderedOutput' - | ( - | 'webresource' - | 'webresource.superbatch.uris.js' - | 'webresource.superbatch.uris.css' - | 'webresource.uris.js' - | 'webresource.uris.css' - | 'embeddedContent' - | 'mediaToken' - | 'macroRenderedOutput' - )[] | string - | string[]; + >; /** * The space key used for resolving embedded content (page includes, files, and links) in the content body. For diff --git a/src/api/parameters/copyPage.ts b/src/api/parameters/copyPage.ts index b6d57d7d..99781486 100644 --- a/src/api/parameters/copyPage.ts +++ b/src/api/parameters/copyPage.ts @@ -1,4 +1,4 @@ -import { CopyPageRequest } from '../models'; +import type { CopyPageRequest } from '../models'; export interface CopyPage { id: string; diff --git a/src/api/parameters/copyPageHierarchy.ts b/src/api/parameters/copyPageHierarchy.ts index 43742fff..02047791 100644 --- a/src/api/parameters/copyPageHierarchy.ts +++ b/src/api/parameters/copyPageHierarchy.ts @@ -1,4 +1,4 @@ -import { CopyPageHierarchyRequest } from '../models'; +import type { CopyPageHierarchyRequest } from '../models'; export interface CopyPageHierarchy extends CopyPageHierarchyRequest { id: string; diff --git a/src/api/parameters/createAttachments.ts b/src/api/parameters/createAttachments.ts index b9135555..fd3fe464 100644 --- a/src/api/parameters/createAttachments.ts +++ b/src/api/parameters/createAttachments.ts @@ -1,18 +1,16 @@ +import type { OneOrMany } from '~/interfaces'; + export interface CreateAttachments { /** The ID of the content to add the attachment to. */ id: string; /** The status of the content that the attachment is being added to. */ status?: 'current' | 'draft' | string; /** The attachments to be created. */ - attachments: CreateAttachments.Attachment | CreateAttachments.Attachment[]; -} - -export namespace CreateAttachments { - export interface Attachment { - file: Buffer | ReadableStream | string | Blob | File | any; + attachments: OneOrMany<{ + file: Buffer | ReadableStream | string | Blob | File; filename: string; minorEdit: boolean; contentType?: string; comment?: string; - } + }>; } diff --git a/src/api/parameters/createAuditRecord.ts b/src/api/parameters/createAuditRecord.ts index 97dfa55d..3014d116 100644 --- a/src/api/parameters/createAuditRecord.ts +++ b/src/api/parameters/createAuditRecord.ts @@ -1,3 +1,3 @@ -import { AuditRecordCreate } from '../models'; +import type { AuditRecordCreate } from '../models'; export interface CreateAuditRecord extends AuditRecordCreate {} diff --git a/src/api/parameters/createContent.ts b/src/api/parameters/createContent.ts index 0155ab06..cc5754ec 100644 --- a/src/api/parameters/createContent.ts +++ b/src/api/parameters/createContent.ts @@ -1,102 +1,42 @@ -import { ContentCreate } from '../models'; +import type { ContentCreate } from '../models'; +import type { OneOrMany } from '~/interfaces'; export interface CreateContent extends ContentCreate { /** Filter the returned content by status. */ status?: string; /** A multi-value parameter indicating which properties of the content to expand. */ - expand?: string | string[] | CreateContent.Expand | CreateContent.Expand[]; -} - -export namespace CreateContent { - export enum Expand { - /** - * Returns whether the content has attachments, comments, or child pages. Use this if you only need to check whether - * the content has children of a particular type. - */ - AllChildTypes = 'childTypes.all', - /** Returns whether the content has attachments. */ - AttachmentChildType = 'childTypes.attachment', - /** Returns whether the content has comments. */ - CommentChildType = 'childTypes.comment', - /** Returns whether the content has child pages. */ - PageChildType = 'childTypes.page', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Container = 'container', - /** - * Returns information about the current user in relation to the content, including when they last viewed it, - * modified it, contributed to it, or added it as a favorite. - */ - CurrentUserMetadata = 'metadata.currentuser', - /** Returns content properties that have been set via the Confluence REST API. */ - PropertiesMetadata = 'metadata.properties', - /** Returns the labels that have been added to the content. */ - LabelsMetadata = 'metadata.labels', - /** This property is only used by Atlassian. */ - FrontendMetadata = 'metadata.frontend', - /** Returns the operations for the content, which are used when setting permissions. */ - Operations = 'operations', - /** Returns pages that are descendants at the level immediately below the content. */ - PageChildren = 'children.page', - /** Returns all attachments for the content. */ - AttachmentChildren = 'children.attachment', - /** Returns all comments on the content. */ - CommentChildren = 'children.comment', - /** Returns the users that have permission to read the content. */ - ReadUserRestriction = 'restrictions.read.restrictions.user', - /** - * Returns the groups that have permission to read the content. Note that this may return deleted groups, because - * deleting a group doesn't remove associated restrictions. - */ - ReadGroupRestriction = 'restrictions.read.restrictions.group', - /** Returns the users that have permission to update the content. */ - UpdateUserRestriction = 'restrictions.update.restrictions.user', - /** - * Returns the groups that have permission to update the content. Note that this may return deleted groups because - * deleting a group doesn't remove associated restrictions. - */ - UpdateGroupRestriction = 'restrictions.update.restrictions.group', - /** Returns the history of the content, including the date it was created. */ - History = 'history', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - LastUpdated = 'history.lastUpdated', - /** Returns information about the update prior to the current content update. */ - PreviousVersion = 'history.previousVersion', - /** Returns all of the users who have contributed to the content. */ - Contributors = 'history.contributors', - /** Returns information about the update after to the current content update. */ - NextVersion = 'history.nextVersion', - /** Returns the parent page, if the content is a page. */ - Ancestors = 'ancestors', - /** - * Returns the body of the content in different formats, including the editor format, view format, and export - * format. - */ - Body = 'body', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - Version = 'version', - /** Returns pages that are descendants at any level below the content. */ - PageDescendant = 'descendants.page', - /** Returns all attachments for the content, same as `children.attachment`. */ - AttachmentDescendant = 'descendants.attachment', - /** Returns all comments on the content, same as `children.comment`. */ - CommentDescendant = 'descendants.comment', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Space = 'space', - /** Returns inline comment-specific properties. */ - InlineProperties = 'extensions.inlineProperties', - /** Returns the resolution status of each comment. */ - Resolution = 'extensions.resolution', - } + expand?: OneOrMany< + | 'childTypes.all' + | 'childTypes.attachment' + | 'childTypes.comment' + | 'childTypes.page' + | 'container' + | 'metadata.currentuser' + | 'metadata.properties' + | 'metadata.labels' + | 'metadata.frontend' + | 'operations' + | 'children.page' + | 'children.attachment' + | 'children.comment' + | 'restrictions.read.restrictions.user' + | 'restrictions.read.restrictions.group' + | 'restrictions.update.restrictions.user' + | 'restrictions.update.restrictions.group' + | 'history' + | 'history.lastUpdated' + | 'history.previousVersion' + | 'history.contributors' + | 'history.nextVersion' + | 'ancestors' + | 'body' + | 'version' + | 'descendants.page' + | 'descendants.attachment' + | 'descendants.comment' + | 'space' + | 'extensions.inlineProperties' + | 'extensions.resolution' + | string + >; } diff --git a/src/api/parameters/createContentProperty.ts b/src/api/parameters/createContentProperty.ts index 50df5abb..855798ca 100644 --- a/src/api/parameters/createContentProperty.ts +++ b/src/api/parameters/createContentProperty.ts @@ -1,4 +1,4 @@ -import { ContentPropertyCreate } from '../models'; +import type { ContentPropertyCreate } from '../models'; export interface CreateContentProperty extends ContentPropertyCreate { /** The ID of the content to add the property to. */ diff --git a/src/api/parameters/createContentPropertyForKey.ts b/src/api/parameters/createContentPropertyForKey.ts index 1fcad6ec..f7661e14 100644 --- a/src/api/parameters/createContentPropertyForKey.ts +++ b/src/api/parameters/createContentPropertyForKey.ts @@ -1,4 +1,4 @@ -import { ContentPropertyCreateNoKey } from '../models'; +import type { ContentPropertyCreateNoKey } from '../models'; export interface CreateContentPropertyForKey extends ContentPropertyCreateNoKey { /** The ID of the content to add the property to. */ diff --git a/src/api/parameters/createContentTemplate.ts b/src/api/parameters/createContentTemplate.ts index c8aa119e..5af8c3c1 100644 --- a/src/api/parameters/createContentTemplate.ts +++ b/src/api/parameters/createContentTemplate.ts @@ -1,3 +1,3 @@ -import { ContentTemplateCreate } from '../models'; +import type { ContentTemplateCreate } from '../models'; export interface CreateContentTemplate extends ContentTemplateCreate {} diff --git a/src/api/parameters/createGroup.ts b/src/api/parameters/createGroup.ts index d5ca8ff0..b0c7933e 100644 --- a/src/api/parameters/createGroup.ts +++ b/src/api/parameters/createGroup.ts @@ -1,3 +1,3 @@ -import { GroupName } from '../models'; +import type { GroupName } from '../models'; export interface CreateGroup extends GroupName {} diff --git a/src/api/parameters/createOrUpdateAttachments.ts b/src/api/parameters/createOrUpdateAttachments.ts index e975ca72..8f73b80f 100644 --- a/src/api/parameters/createOrUpdateAttachments.ts +++ b/src/api/parameters/createOrUpdateAttachments.ts @@ -1,4 +1,4 @@ -import { CreateAttachments } from './createAttachments'; +import type { CreateAttachments } from './createAttachments'; export interface CreateOrUpdateAttachments { /** The ID of the content to add the attachment to. */ @@ -7,5 +7,5 @@ export interface CreateOrUpdateAttachments { status?: 'current' | 'draft' | string; /** The attachments to be created or updated. */ - attachments: CreateAttachments.Attachment | CreateAttachments.Attachment[]; + attachments: CreateAttachments['attachments']; } diff --git a/src/api/parameters/createPrivateSpace.ts b/src/api/parameters/createPrivateSpace.ts index 88a63dda..981fbfcc 100644 --- a/src/api/parameters/createPrivateSpace.ts +++ b/src/api/parameters/createPrivateSpace.ts @@ -1,3 +1,3 @@ -import { SpacePrivateCreate } from '../models'; +import type { SpacePrivateCreate } from '../models'; export interface CreatePrivateSpace extends SpacePrivateCreate {} diff --git a/src/api/parameters/createSpace.ts b/src/api/parameters/createSpace.ts index 2044dba8..71a63ecc 100644 --- a/src/api/parameters/createSpace.ts +++ b/src/api/parameters/createSpace.ts @@ -1,3 +1,3 @@ -import { SpaceCreate } from '../models'; +import type { SpaceCreate } from '../models'; export interface CreateSpace extends SpaceCreate {} diff --git a/src/api/parameters/createSpaceProperty.ts b/src/api/parameters/createSpaceProperty.ts index 917d50ce..12d1e355 100644 --- a/src/api/parameters/createSpaceProperty.ts +++ b/src/api/parameters/createSpaceProperty.ts @@ -1,4 +1,4 @@ -import { SpacePropertyCreate } from '../models'; +import type { SpacePropertyCreate } from '../models'; export interface CreateSpaceProperty extends SpacePropertyCreate { /** The key of the space that the property will be created in. */ diff --git a/src/api/parameters/createSpacePropertyForKey.ts b/src/api/parameters/createSpacePropertyForKey.ts index 7a8f615e..90795fa2 100644 --- a/src/api/parameters/createSpacePropertyForKey.ts +++ b/src/api/parameters/createSpacePropertyForKey.ts @@ -1,4 +1,4 @@ -import { SpacePropertyCreateNoKey } from '../models'; +import type { SpacePropertyCreateNoKey } from '../models'; export interface CreateSpacePropertyForKey extends SpacePropertyCreateNoKey { /** The key of the space that the property will be created in. */ diff --git a/src/api/parameters/createUserProperty.ts b/src/api/parameters/createUserProperty.ts index a3a71464..6fc772b7 100644 --- a/src/api/parameters/createUserProperty.ts +++ b/src/api/parameters/createUserProperty.ts @@ -1,4 +1,4 @@ -import { UserPropertyCreate } from '../models'; +import type { UserPropertyCreate } from '../models'; export interface CreateUserProperty extends UserPropertyCreate { /** diff --git a/src/api/parameters/delete.ts b/src/api/parameters/delete.ts deleted file mode 100644 index 7ee71fa6..00000000 --- a/src/api/parameters/delete.ts +++ /dev/null @@ -1,41 +0,0 @@ -export interface Delete { - /** The name of the relationship. */ - relationName: string; - /** The source entity type of the relationship. This must be 'user', if the `relationName` is 'favourite'. */ - sourceType: string; - /** - * - The identifier for the source entity: - * - * - If `sourceType` is 'user', then specify either 'current' (logged-in user) or the user key. - * - If `sourceType` is 'content', then specify the content ID. - * - If `sourceType` is 'space', then specify the space key. - */ - sourceKey: string; - /** - * The target entity type of the relationship. This must be 'space' or 'content', if the `relationName` is - * 'favourite'. - */ - targetType: string; - /** - * - The identifier for the target entity: - * - * - If `sourceType` is 'user', then specify either 'current' (logged-in user) or the user key. - * - If `sourceType` is 'content', then specify the content ID. - * - If `sourceType` is 'space', then specify the space key. - */ - targetKey: string; - /** The status of the source. This parameter is only used when the `sourceType` is 'content'. */ - sourceStatus?: string; - /** The status of the target. This parameter is only used when the `targetType` is 'content'. */ - targetStatus?: string; - /** - * The version of the source. This parameter is only used when the `sourceType` is 'content' and the `sourceStatus` is - * 'historical'. - */ - sourceVersion?: number; - /** - * The version of the target. This parameter is only used when the `targetType` is 'content' and the `targetStatus` is - * 'historical'. - */ - targetVersion?: number; -} diff --git a/src/api/parameters/descendantsOfType.ts b/src/api/parameters/descendantsOfType.ts deleted file mode 100644 index ff0c6eea..00000000 --- a/src/api/parameters/descendantsOfType.ts +++ /dev/null @@ -1,18 +0,0 @@ -export interface DescendantsOfType { - /** The ID of the content to be queried for its descendants. */ - id: string; - /** The type of descendants to return. */ - type: string; - /** A multi-value parameter indicating which properties of the content to expand. */ - expand?: string[]; - /** - * Filter the results to descendants upto a desired level of the content. Note, the maximum value supported is 100. - * root level of the content means immediate (level 1) descendants of the type requested. all represents returning all - * descendants of the type requested. - */ - depth?: string; - /** The starting index of the returned content. */ - start?: number; - /** The maximum number of content to return per page. Note, this may be restricted by fixed system limits. */ - limit?: number; -} diff --git a/src/api/parameters/getAndAsyncConvertMacroBodyByMacroId.ts b/src/api/parameters/getAndAsyncConvertMacroBodyByMacroId.ts index c2df089e..7ef69efd 100644 --- a/src/api/parameters/getAndAsyncConvertMacroBodyByMacroId.ts +++ b/src/api/parameters/getAndAsyncConvertMacroBodyByMacroId.ts @@ -82,7 +82,7 @@ export interface GetAndAsyncConvertMacroBodyByMacroId { | 'webresource.uris.css' | 'webresource.uris.data' | 'webresource.uris.js' - )[] + )[] | string | string[]; } diff --git a/src/api/parameters/getAndConvertMacroBodyByMacroId.ts b/src/api/parameters/getAndConvertMacroBodyByMacroId.ts index 23e315d3..5f1e06c4 100644 --- a/src/api/parameters/getAndConvertMacroBodyByMacroId.ts +++ b/src/api/parameters/getAndConvertMacroBodyByMacroId.ts @@ -98,7 +98,7 @@ export interface GetAndConvertMacroBodyByMacroId { | 'space' | 'extensions.inlineProperties' | 'extensions.resolution' - )[] + )[] | string | string[]; } diff --git a/src/api/parameters/getAttachments.ts b/src/api/parameters/getAttachments.ts index 3e8e8f13..3e161677 100644 --- a/src/api/parameters/getAttachments.ts +++ b/src/api/parameters/getAttachments.ts @@ -1,8 +1,10 @@ +import type { OneOrMany } from '~/interfaces'; + export interface GetAttachments { /** The ID of the content to be queried for its attachments. */ id: string; /** A multi-value parameter indicating which properties of the content to expand. */ - expand?: + expand?: OneOrMany< | 'childTypes.all' | 'childTypes.attachment' | 'childTypes.comment' @@ -35,44 +37,8 @@ export interface GetAttachments { | 'space' | 'extensions.inlineProperties' | 'extensions.resolution' - | ( - | 'childTypes.all' - | 'childTypes.attachment' - | 'childTypes.comment' - | 'childTypes.page' - | 'container' - | 'metadata' - | 'metadata.currentuser' - | 'metadata.properties' - | 'metadata.labels' - | 'metadata.frontend' - | 'operations' - | 'children.page' - | 'children.attachment' - | 'children.comment' - | 'restrictions.read.restrictions.user' - | 'restrictions.read.restrictions.group' - | 'restrictions.update.restrictions.user' - | 'restrictions.update.restrictions.group' - | 'history' - | 'history.lastUpdated' - | 'history.previousVersion' - | 'history.contributors' - | 'history.nextVersion' - | 'ancestors' - | 'body' - | 'version' - | 'descendants.page' - | 'descendants.attachment' - | 'descendants.comment' - | 'space' - | 'extensions.inlineProperties' - | 'extensions.resolution' - )[] | string - | string[] - | GetAttachments.Expand - | GetAttachments.Expand[]; + >; /** The starting index of the returned attachments. */ start?: number; /** The maximum number of attachments to return per page. Note, this may be restricted by fixed system limits. */ @@ -82,97 +48,3 @@ export interface GetAttachments { /** Filter the results to attachments that match the media type. */ mediaType?: string; } - -export namespace GetAttachments { - export enum Expand { - /** - * Returns whether the content has attachments, comments, or child pages. Use this if you only need to check whether - * the content has children of a particular type. - */ - AllChildTypes = 'childTypes.all', - /** Returns whether the content has attachments. */ - AttachmentChildType = 'childTypes.attachment', - /** Returns whether the content has comments. */ - CommentChildType = 'childTypes.comment', - /** Returns whether the content has child pages. */ - PageChildType = 'childTypes.page', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Container = 'container', - /** - * Returns information about the current user in relation to the content, including when they last viewed it, - * modified it, contributed to it, or added it as a favorite. - */ - CurrentUserMetadata = 'metadata.currentuser', - /** Returns content properties that have been set via the Confluence REST API. */ - PropertiesMetadata = 'metadata.properties', - /** Returns the labels that have been added to the content. */ - LabelsMetadata = 'metadata.labels', - /** This property is only used by Atlassian. */ - FrontendMetadata = 'metadata.frontend', - /** Returns the operations for the content, which are used when setting permissions. */ - Operations = 'operations', - /** Returns pages that are descendants at the level immediately below the content. */ - PageChildren = 'children.page', - /** Returns all attachments for the content. */ - AttachmentChildren = 'children.attachment', - /** Returns all comments on the content. */ - CommentChildren = 'children.comment', - /** Returns the users that have permission to read the content. */ - ReadUserRestriction = 'restrictions.read.restrictions.user', - /** - * Returns the groups that have permission to read the content. Note that this may return deleted groups, because - * deleting a group doesn't remove associated restrictions. - */ - ReadGroupRestriction = 'restrictions.read.restrictions.group', - /** Returns the users that have permission to update the content. */ - UpdateUserRestriction = 'restrictions.update.restrictions.user', - /** - * Returns the groups that have permission to update the content. Note that this may return deleted groups because - * deleting a group doesn't remove associated restrictions. - */ - UpdateGroupRestriction = 'restrictions.update.restrictions.group', - /** Returns the history of the content, including the date it was created. */ - History = 'history', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - LastUpdated = 'history.lastUpdated', - /** Returns information about the update prior to the current content update. */ - PreviousVersion = 'history.previousVersion', - /** Returns all of the users who have contributed to the content. */ - Contributors = 'history.contributors', - /** Returns information about the update after to the current content update. */ - NextVersion = 'history.nextVersion', - /** Returns the parent page, if the content is a page. */ - Ancestors = 'ancestors', - /** - * Returns the body of the content in different formats, including the editor format, view format, and export - * format. - */ - Body = 'body', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - Version = 'version', - /** Returns pages that are descendants at any level below the content. */ - PageDescendant = 'descendants.page', - /** Returns all attachments for the content, same as `children.attachment`. */ - AttachmentDescendant = 'descendants.attachment', - /** Returns all comments on the content, same as `children.comment`. */ - CommentDescendant = 'descendants.comment', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Space = 'space', - /** Returns inline comment-specific properties. */ - InlineProperties = 'extensions.inlineProperties', - /** Returns the resolution status of each comment. */ - Resolution = 'extensions.resolution', - } -} diff --git a/src/api/parameters/getAvailableContentStates.ts b/src/api/parameters/getAvailableContentStates.ts index 5880700e..352464c1 100644 --- a/src/api/parameters/getAvailableContentStates.ts +++ b/src/api/parameters/getAvailableContentStates.ts @@ -1,7 +1,4 @@ export interface GetAvailableContentStates { /** Id of content to get available states for */ id?: string; - - /** @deprecated Id of content to get available states for */ - contentId?: string; } diff --git a/src/api/parameters/getContent.ts b/src/api/parameters/getContent.ts index 03561db9..bdeed6ab 100644 --- a/src/api/parameters/getContent.ts +++ b/src/api/parameters/getContent.ts @@ -1,3 +1,5 @@ +import type { OneOrMany } from '~/interfaces'; + export interface GetContent { /** The type of content to return. */ type?: string; @@ -16,7 +18,40 @@ export interface GetContent { */ postingDay?: string; /** A multi-value parameter indicating which properties of the content to expand. */ - expand?: string | string[] | GetContent.Expand | GetContent.Expand[]; + expand?: OneOrMany< + | 'childTypes.all' + | 'childTypes.attachment' + | 'childTypes.comment' + | 'childTypes.page' + | 'container' + | 'metadata.currentuser' + | 'metadata.properties' + | 'metadata.labels' + | 'metadata.frontend' + | 'operations' + | 'children.page' + | 'children.attachment' + | 'children.comment' + | 'restrictions.read.restrictions.user' + | 'restrictions.read.restrictions.group' + | 'restrictions.update.restrictions.user' + | 'restrictions.update.restrictions.group' + | 'history' + | 'history.lastUpdated' + | 'history.previousVersion' + | 'history.contributors' + | 'history.nextVersion' + | 'ancestors' + | 'body' + | 'version' + | 'descendants.page' + | 'descendants.attachment' + | 'descendants.comment' + | 'space' + | 'extensions.inlineProperties' + | 'extensions.resolution' + | string + >; /** * If set to `viewed`, the request will trigger a 'viewed' event for the content. When this event is triggered, the * page/blogpost will appear on the 'Recently visited' tab of the user's Confluence dashboard. @@ -32,97 +67,3 @@ export interface GetContent { /** The maximum number of content objects to return per page. Note, this may be restricted by fixed system limits. */ limit?: number; } - -export namespace GetContent { - export enum Expand { - /** - * Returns whether the content has attachments, comments, or child pages. Use this if you only need to check whether - * the content has children of a particular type. - */ - AllChildTypes = 'childTypes.all', - /** Returns whether the content has attachments. */ - AttachmentChildType = 'childTypes.attachment', - /** Returns whether the content has comments. */ - CommentChildType = 'childTypes.comment', - /** Returns whether the content has child pages. */ - PageChildType = 'childTypes.page', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Container = 'container', - /** - * Returns information about the current user in relation to the content, including when they last viewed it, - * modified it, contributed to it, or added it as a favorite. - */ - CurrentUserMetadata = 'metadata.currentuser', - /** Returns content properties that have been set via the Confluence REST API. */ - PropertiesMetadata = 'metadata.properties', - /** Returns the labels that have been added to the content. */ - LabelsMetadata = 'metadata.labels', - /** This property is only used by Atlassian. */ - FrontendMetadata = 'metadata.frontend', - /** Returns the operations for the content, which are used when setting permissions. */ - Operations = 'operations', - /** Returns pages that are descendants at the level immediately below the content. */ - PageChildren = 'children.page', - /** Returns all attachments for the content. */ - AttachmentChildren = 'children.attachment', - /** Returns all comments on the content. */ - CommentChildren = 'children.comment', - /** Returns the users that have permission to read the content. */ - ReadUserRestriction = 'restrictions.read.restrictions.user', - /** - * Returns the groups that have permission to read the content. Note that this may return deleted groups, because - * deleting a group doesn't remove associated restrictions. - */ - ReadGroupRestriction = 'restrictions.read.restrictions.group', - /** Returns the users that have permission to update the content. */ - UpdateUserRestriction = 'restrictions.update.restrictions.user', - /** - * Returns the groups that have permission to update the content. Note that this may return deleted groups because - * deleting a group doesn't remove associated restrictions. - */ - UpdateGroupRestriction = 'restrictions.update.restrictions.group', - /** Returns the history of the content, including the date it was created. */ - History = 'history', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - LastUpdated = 'history.lastUpdated', - /** Returns information about the update prior to the current content update. */ - PreviousVersion = 'history.previousVersion', - /** Returns all of the users who have contributed to the content. */ - Contributors = 'history.contributors', - /** Returns information about the update after to the current content update. */ - NextVersion = 'history.nextVersion', - /** Returns the parent page, if the content is a page. */ - Ancestors = 'ancestors', - /** - * Returns the body of the content in different formats, including the editor format, view format, and export - * format. - */ - Body = 'body', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - Version = 'version', - /** Returns pages that are descendants at any level below the content. */ - PageDescendant = 'descendants.page', - /** Returns all attachments for the content, same as `children.attachment`. */ - AttachmentDescendant = 'descendants.attachment', - /** Returns all comments on the content, same as `children.comment`. */ - CommentDescendant = 'descendants.comment', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Space = 'space', - /** Returns inline comment-specific properties. */ - InlineProperties = 'extensions.inlineProperties', - /** Returns the resolution status of each comment. */ - Resolution = 'extensions.resolution', - } -} diff --git a/src/api/parameters/getContentById.ts b/src/api/parameters/getContentById.ts index dccbb293..2462202a 100644 --- a/src/api/parameters/getContentById.ts +++ b/src/api/parameters/getContentById.ts @@ -1,3 +1,5 @@ +import type { OneOrMany } from '~/interfaces'; + export interface GetContentById { /** * The ID of the content to be returned. If you don't know the content ID, use [Get content](#api-content-get) and @@ -19,104 +21,43 @@ export interface GetContentById { */ embeddedContentRender?: string; /** A multi-value parameter indicating which properties of the content to expand. */ - expand?: string | string[] | GetContentById.Expand | GetContentById.Expand[]; + expand?: OneOrMany< + | 'childTypes.all' + | 'childTypes.attachment' + | 'childTypes.comment' + | 'childTypes.page' + | 'container' + | 'metadata.currentuser' + | 'metadata.properties' + | 'metadata.labels' + | 'metadata.frontend' + | 'operations' + | 'children.page' + | 'children.attachment' + | 'children.comment' + | 'restrictions.read.restrictions.user' + | 'restrictions.read.restrictions.group' + | 'restrictions.update.restrictions.user' + | 'restrictions.update.restrictions.group' + | 'history' + | 'history.lastUpdated' + | 'history.previousVersion' + | 'history.contributors' + | 'history.nextVersion' + | 'ancestors' + | 'body' + | 'version' + | 'descendants.page' + | 'descendants.attachment' + | 'descendants.comment' + | 'space' + | 'extensions.inlineProperties' + | 'extensions.resolution' + | string + >; /** * If set to `viewed`, the request will trigger a 'viewed' event for the content. When this event is triggered, the * page/blogpost will appear on the 'Recently visited' tab of the user's Confluence dashboard. */ trigger?: string; } - -export namespace GetContentById { - export enum Expand { - /** - * Returns whether the content has attachments, comments, or child pages. Use this if you only need to check whether - * the content has children of a particular type. - */ - AllChildTypes = 'childTypes.all', - /** Returns whether the content has attachments. */ - AttachmentChildType = 'childTypes.attachment', - /** Returns whether the content has comments. */ - CommentChildType = 'childTypes.comment', - /** Returns whether the content has child pages. */ - PageChildType = 'childTypes.page', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Container = 'container', - /** - * Returns information about the current user in relation to the content, including when they last viewed it, - * modified it, contributed to it, or added it as a favorite. - */ - CurrentUserMetadata = 'metadata.currentuser', - /** Returns content properties that have been set via the Confluence REST API. */ - PropertiesMetadata = 'metadata.properties', - /** Returns the labels that have been added to the content. */ - LabelsMetadata = 'metadata.labels', - /** This property is only used by Atlassian. */ - FrontendMetadata = 'metadata.frontend', - /** Returns the operations for the content, which are used when setting permissions. */ - Operations = 'operations', - /** Returns pages that are descendants at the level immediately below the content. */ - PageChildren = 'children.page', - /** Returns all attachments for the content. */ - AttachmentChildren = 'children.attachment', - /** Returns all comments on the content. */ - CommentChildren = 'children.comment', - /** Returns the users that have permission to read the content. */ - ReadUserRestriction = 'restrictions.read.restrictions.user', - /** - * Returns the groups that have permission to read the content. Note that this may return deleted groups, because - * deleting a group doesn't remove associated restrictions. - */ - ReadGroupRestriction = 'restrictions.read.restrictions.group', - /** Returns the users that have permission to update the content. */ - UpdateUserRestriction = 'restrictions.update.restrictions.user', - /** - * Returns the groups that have permission to update the content. Note that this may return deleted groups because - * deleting a group doesn't remove associated restrictions. - */ - UpdateGroupRestriction = 'restrictions.update.restrictions.group', - /** Returns the history of the content, including the date it was created. */ - History = 'history', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - LastUpdated = 'history.lastUpdated', - /** Returns information about the update prior to the current content update. */ - PreviousVersion = 'history.previousVersion', - /** Returns all of the users who have contributed to the content. */ - Contributors = 'history.contributors', - /** Returns information about the update after to the current content update. */ - NextVersion = 'history.nextVersion', - /** Returns the parent page, if the content is a page. */ - Ancestors = 'ancestors', - /** - * Returns the body of the content in different formats, including the editor format, view format, and export - * format. - */ - Body = 'body', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - Version = 'version', - /** Returns pages that are descendants at any level below the content. */ - PageDescendant = 'descendants.page', - /** Returns all attachments for the content, same as `children.attachment`. */ - AttachmentDescendant = 'descendants.attachment', - /** Returns all comments on the content, same as `children.comment`. */ - CommentDescendant = 'descendants.comment', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Space = 'space', - /** Returns inline comment-specific properties. */ - InlineProperties = 'extensions.inlineProperties', - /** Returns the resolution status of each comment. */ - Resolution = 'extensions.resolution', - } -} diff --git a/src/api/parameters/getContentState.ts b/src/api/parameters/getContentState.ts index 344b4606..f45338b7 100644 --- a/src/api/parameters/getContentState.ts +++ b/src/api/parameters/getContentState.ts @@ -3,9 +3,4 @@ export interface GetContentState { id?: string; /** Set status to one of [current,draft,archived]. */ status?: 'current' | 'draft' | 'archived' | string; - - /** @deprecated The Id of the page whose content state is of interest. */ - contentId?: string; - /** @deprecated Set designation=DRAFT or designation=PUBLISHED. */ - designation?: 'DRAFT' | 'PUBLISHED' | string; } diff --git a/src/api/parameters/getContentStateLastUpdated.ts b/src/api/parameters/getContentStateLastUpdated.ts deleted file mode 100644 index 07af02bb..00000000 --- a/src/api/parameters/getContentStateLastUpdated.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface GetContentStateLastUpdated { - /** Id of Content to get information for */ - contentId: string; -} diff --git a/src/api/parameters/getDescendantsOfType.ts b/src/api/parameters/getDescendantsOfType.ts index 3d3baadc..3368c78f 100644 --- a/src/api/parameters/getDescendantsOfType.ts +++ b/src/api/parameters/getDescendantsOfType.ts @@ -1,3 +1,5 @@ +import type { OneOrMany } from '~/interfaces'; + export interface GetDescendantsOfType { /** The ID of the content to be queried for its descendants. */ id: string; @@ -13,99 +15,38 @@ export interface GetDescendantsOfType { start?: number; /** The maximum number of content to return per page. Note, this may be restricted by fixed system limits. */ limit?: number; - expand?: string | string[] | GetDescendantsOfType.Expand | GetDescendantsOfType.Expand[]; -} - -export namespace GetDescendantsOfType { - export enum Expand { - /** - * Returns whether the content has attachments, comments, or child pages. Use this if you only need to check whether - * the content has children of a particular type. - */ - AllChildTypes = 'childTypes.all', - /** Returns whether the content has attachments. */ - AttachmentChildType = 'childTypes.attachment', - /** Returns whether the content has comments. */ - CommentChildType = 'childTypes.comment', - /** Returns whether the content has child pages. */ - PageChildType = 'childTypes.page', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Container = 'container', - /** - * Returns information about the current user in relation to the content, including when they last viewed it, - * modified it, contributed to it, or added it as a favorite. - */ - CurrentUserMetadata = 'metadata.currentuser', - /** Returns content properties that have been set via the Confluence REST API. */ - PropertiesMetadata = 'metadata.properties', - /** Returns the labels that have been added to the content. */ - LabelsMetadata = 'metadata.labels', - /** This property is only used by Atlassian. */ - FrontendMetadata = 'metadata.frontend', - /** Returns the operations for the content, which are used when setting permissions. */ - Operations = 'operations', - /** Returns pages that are descendants at the level immediately below the content. */ - PageChildren = 'children.page', - /** Returns all attachments for the content. */ - AttachmentChildren = 'children.attachment', - /** Returns all comments on the content. */ - CommentChildren = 'children.comment', - /** Returns the users that have permission to read the content. */ - ReadUserRestriction = 'restrictions.read.restrictions.user', - /** - * Returns the groups that have permission to read the content. Note that this may return deleted groups, because - * deleting a group doesn't remove associated restrictions. - */ - ReadGroupRestriction = 'restrictions.read.restrictions.group', - /** Returns the users that have permission to update the content. */ - UpdateUserRestriction = 'restrictions.update.restrictions.user', - /** - * Returns the groups that have permission to update the content. Note that this may return deleted groups because - * deleting a group doesn't remove associated restrictions. - */ - UpdateGroupRestriction = 'restrictions.update.restrictions.group', - /** Returns the history of the content, including the date it was created. */ - History = 'history', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - LastUpdated = 'history.lastUpdated', - /** Returns information about the update prior to the current content update. */ - PreviousVersion = 'history.previousVersion', - /** Returns all of the users who have contributed to the content. */ - Contributors = 'history.contributors', - /** Returns information about the update after to the current content update. */ - NextVersion = 'history.nextVersion', - /** Returns the parent page, if the content is a page. */ - Ancestors = 'ancestors', - /** - * Returns the body of the content in different formats, including the editor format, view format, and export - * format. - */ - Body = 'body', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - Version = 'version', - /** Returns pages that are descendants at any level below the content. */ - PageDescendant = 'descendants.page', - /** Returns all attachments for the content, same as `children.attachment`. */ - AttachmentDescendant = 'descendants.attachment', - /** Returns all comments on the content, same as `children.comment`. */ - CommentDescendant = 'descendants.comment', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Space = 'space', - /** Returns inline comment-specific properties. */ - InlineProperties = 'extensions.inlineProperties', - /** Returns the resolution status of each comment. */ - Resolution = 'extensions.resolution', - } + expand?: OneOrMany< + | 'childTypes.all' + | 'childTypes.attachment' + | 'childTypes.comment' + | 'childTypes.page' + | 'container' + | 'metadata.currentuser' + | 'metadata.properties' + | 'metadata.labels' + | 'metadata.frontend' + | 'operations' + | 'children.page' + | 'children.attachment' + | 'children.comment' + | 'restrictions.read.restrictions.user' + | 'restrictions.read.restrictions.group' + | 'restrictions.update.restrictions.user' + | 'restrictions.update.restrictions.group' + | 'history' + | 'history.lastUpdated' + | 'history.previousVersion' + | 'history.contributors' + | 'history.nextVersion' + | 'ancestors' + | 'body' + | 'version' + | 'descendants.page' + | 'descendants.attachment' + | 'descendants.comment' + | 'space' + | 'extensions.inlineProperties' + | 'extensions.resolution' + | string + >; } diff --git a/src/api/parameters/getGroup.ts b/src/api/parameters/getGroup.ts deleted file mode 100644 index cba9021f..00000000 --- a/src/api/parameters/getGroup.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface GetGroup { - /** The name of the group. This is the same as the group name shown in the Confluence administration console. */ - groupName: string; -} diff --git a/src/api/parameters/getGroupsSearch.ts b/src/api/parameters/getGroupsSearch.ts deleted file mode 100644 index a5168f53..00000000 --- a/src/api/parameters/getGroupsSearch.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface GetGroupsSearch { - /** The search term used to query results. */ - query: string; - /** The starting index of the returned groups. */ - start?: number; - /** The maximum number of groups to return per page. Note, this is restricted to a maximum limit of 200 groups. */ - limit?: number; -} diff --git a/src/api/parameters/getSpaces.ts b/src/api/parameters/getSpaces.ts index bcf4033d..3d4f3f9d 100644 --- a/src/api/parameters/getSpaces.ts +++ b/src/api/parameters/getSpaces.ts @@ -56,7 +56,7 @@ export interface GetSpaces { | 'theme' | 'homepage' | 'history' - )[] + )[] | string | string[]; /** The starting index of the returned spaces. */ diff --git a/src/api/parameters/index.ts b/src/api/parameters/index.ts index 45ea1567..384f8814 100644 --- a/src/api/parameters/index.ts +++ b/src/api/parameters/index.ts @@ -5,7 +5,6 @@ export * from './addGroupToContentRestrictionByGroupId'; export * from './addLabelsToContent'; export * from './addLabelsToSpace'; export * from './addLabelWatcher'; -export * from './addPermission'; export * from './addPermissionToSpace'; export * from './addRestrictions'; export * from './addSpaceWatcher'; @@ -33,7 +32,6 @@ export * from './createSpace'; export * from './createSpaceProperty'; export * from './createSpacePropertyForKey'; export * from './createUserProperty'; -export * from './delete'; export * from './deleteContent'; export * from './deleteContentProperty'; export * from './deleteContentVersion'; @@ -44,7 +42,6 @@ export * from './deleteRestrictions'; export * from './deleteSpace'; export * from './deleteSpaceProperty'; export * from './deleteUserProperty'; -export * from './descendantsOfType'; export * from './downloadAttachment'; export * from './exportAuditRecords'; export * from './findSourcesForTarget'; @@ -73,7 +70,6 @@ export * from './getContentProperty'; export * from './getContentRestrictionStatusForGroup'; export * from './getContentRestrictionStatusForUser'; export * from './getContentState'; -export * from './getContentStateLastUpdated'; export * from './getContentStateSettings'; export * from './getContentTemplate'; export * from './getContentTemplates'; @@ -82,7 +78,6 @@ export * from './getContentVersions'; export * from './getContentWatchStatus'; export * from './getCurrentUser'; export * from './getDescendantsOfType'; -export * from './getGroup'; export * from './getGroupByGroupId'; export * from './getGroupByName'; export * from './getGroupByQueryParam'; @@ -90,7 +85,6 @@ export * from './getGroupMembers'; export * from './getGroupMembersByGroupId'; export * from './getGroupMembershipsForUser'; export * from './getGroups'; -export * from './getGroupsSearch'; export * from './getHistoryForContent'; export * from './getIndividualGroupRestrictionStatusByGroupId'; export * from './getLabelsForContent'; @@ -127,7 +121,6 @@ export * from './getWatchesForSpace'; export * from './isWatchingLabel'; export * from './isWatchingSpace'; export * from './movePage'; -export * from './permissionCheck'; export * from './publishLegacyDraft'; export * from './publishSharedDraft'; export * from './registerModules'; @@ -149,7 +142,6 @@ export * from './removeUserFromContentRestriction'; export * from './resetLookAndFeelSettings'; export * from './resetSpaceTheme'; export * from './restoreContentVersion'; -export * from './search'; export * from './searchByCQL'; export * from './searchContentByCQL'; export * from './searchGroups'; @@ -172,4 +164,3 @@ export * from './updateSpaceProperty'; export * from './updateSpaceSettings'; export * from './updateTaskById'; export * from './updateUserProperty'; -export * from './userSearch'; diff --git a/src/api/parameters/movePage.ts b/src/api/parameters/movePage.ts index 7c3a6592..49f3efb6 100644 --- a/src/api/parameters/movePage.ts +++ b/src/api/parameters/movePage.ts @@ -1,8 +1,6 @@ export interface MovePage { /** The ID of the page to be moved */ pageId?: string; - /** @deprecated The ID of the page to be moved */ - id?: string; /** * The position to move the page to relative to the target page: * diff --git a/src/api/parameters/permissionCheck.ts b/src/api/parameters/permissionCheck.ts deleted file mode 100644 index e22b0bc2..00000000 --- a/src/api/parameters/permissionCheck.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ContentPermissionRequest } from '../models'; - -export interface PermissionCheck extends ContentPermissionRequest { - /** The ID of the content to check permissions against. */ - id: string; -} diff --git a/src/api/parameters/publishLegacyDraft.ts b/src/api/parameters/publishLegacyDraft.ts index e394cd8e..81363275 100644 --- a/src/api/parameters/publishLegacyDraft.ts +++ b/src/api/parameters/publishLegacyDraft.ts @@ -1,4 +1,4 @@ -import { ContentBlueprintDraft } from '../models'; +import type { ContentBlueprintDraft } from '../models'; export interface PublishLegacyDraft extends ContentBlueprintDraft { /** diff --git a/src/api/parameters/publishSharedDraft.ts b/src/api/parameters/publishSharedDraft.ts index 2cf03444..d49acbf9 100644 --- a/src/api/parameters/publishSharedDraft.ts +++ b/src/api/parameters/publishSharedDraft.ts @@ -1,4 +1,4 @@ -import { ContentBlueprintDraft } from '../models'; +import type { ContentBlueprintDraft } from '../models'; export interface PublishSharedDraft extends ContentBlueprintDraft { /** diff --git a/src/api/parameters/registerModules.ts b/src/api/parameters/registerModules.ts index 047c6961..eab884dc 100644 --- a/src/api/parameters/registerModules.ts +++ b/src/api/parameters/registerModules.ts @@ -1,3 +1,3 @@ -import { ConnectModules } from '../models'; +import type { ConnectModules } from '../models'; export type RegisterModules = ConnectModules; diff --git a/src/api/parameters/removeContentState.ts b/src/api/parameters/removeContentState.ts index db861fae..002037bf 100644 --- a/src/api/parameters/removeContentState.ts +++ b/src/api/parameters/removeContentState.ts @@ -3,7 +3,4 @@ export interface RemoveContentState { id?: string; /** Status of content state from which to delete state. Can be draft or archived */ status?: string; - - /** @deprecated The Id of the content whose content state is to be set. */ - contentId?: string; } diff --git a/src/api/parameters/restoreContentVersion.ts b/src/api/parameters/restoreContentVersion.ts index 8e68c18b..5ba0e064 100644 --- a/src/api/parameters/restoreContentVersion.ts +++ b/src/api/parameters/restoreContentVersion.ts @@ -1,4 +1,4 @@ -import { VersionRestore } from '../models'; +import type { VersionRestore } from '../models'; export interface RestoreContentVersion extends VersionRestore { /** The ID of the content for which the history will be restored. */ diff --git a/src/api/parameters/search.ts b/src/api/parameters/search.ts deleted file mode 100644 index 02d77d8b..00000000 --- a/src/api/parameters/search.ts +++ /dev/null @@ -1,48 +0,0 @@ -export interface Search { - /** - * The CQL query to be used for the search. See [Advanced Searching using - * CQL](https://developer.atlassian.com/cloud/confluence/advanced-searching-using-cql/) for instructions on how to - * build a CQL query. - * - * @example - * Example queries: - * - * cql=type=user // will return all users - * cql=user="1234" // will return user with accountId β€œ1234” - * - * // You can also use IN, NOT IN, != operators - * - * cql=user IN ("12", "34") // will return users with accountids β€œ12” and β€œ34” - * cql=user.fullname~jo // will return users with nickname/full name starting with β€œjo” - * cql=user.accountid="123" // will return user with accountId β€œ123” - */ - cql: string; - /** The starting index of the returned users. */ - start?: number; - /** - * The maximum number of content objects to return per page. Note, this may be restricted by fixed system limits. - * - * @default 25 - * @Minimum 0 - */ - limit?: number; - /** - * The space, content, and content status to execute the search against. - * - * - SpaceKey Key of the space to search against. Optional. - * - ContentId ID of the content to search against. Optional. Must be in the space specified by spaceKey. - * - ContentStatuses Content statuses to search against. Optional. Specify these values in an object. - * - * @example - * 'cqlcontext={%22spaceKey%22:%22TEST%22, %22contentId%22:%22123%22}'; - */ - cqlcontext?: string; - /** Pointer to a set of search results, returned as part of the _next_ or _prev_ URL from the previous search call. */ - cursor?: string; - /** - * Include content from archived spaces in the results. - * - * @default false - */ - includeArchivedSpaces?: boolean; -} diff --git a/src/api/parameters/setContentState.ts b/src/api/parameters/setContentState.ts index 20d2ac57..b690926a 100644 --- a/src/api/parameters/setContentState.ts +++ b/src/api/parameters/setContentState.ts @@ -1,4 +1,4 @@ -import { ContentStateRestInput } from '../models'; +import type { ContentStateRestInput } from '../models'; export interface SetContentState extends ContentStateRestInput { /** The Id of the content whose content state is to be set. */ @@ -8,9 +8,4 @@ export interface SetContentState extends ContentStateRestInput { * be placed onto a new version of the content with same body as previous version. */ status?: 'current' | 'draft' | string; - - /** @deprecated The Id of the content whose content state is to be set. */ - contentId?: string; - /** @deprecated The Id of the content */ - contentStateId?: number; } diff --git a/src/api/parameters/setRetentionPeriod.ts b/src/api/parameters/setRetentionPeriod.ts index 84ac0dbf..63017408 100644 --- a/src/api/parameters/setRetentionPeriod.ts +++ b/src/api/parameters/setRetentionPeriod.ts @@ -1,3 +1,3 @@ -import { RetentionPeriod } from '../models'; +import type { RetentionPeriod } from '../models'; export interface SetRetentionPeriod extends RetentionPeriod {} diff --git a/src/api/parameters/setSpaceTheme.ts b/src/api/parameters/setSpaceTheme.ts index a1b14612..5dbe0346 100644 --- a/src/api/parameters/setSpaceTheme.ts +++ b/src/api/parameters/setSpaceTheme.ts @@ -1,4 +1,4 @@ -import { ThemeUpdate } from '../models'; +import type { ThemeUpdate } from '../models'; export interface SetSpaceTheme extends ThemeUpdate { /** The key of the space to set the theme for. */ diff --git a/src/api/parameters/updateAttachmentData.ts b/src/api/parameters/updateAttachmentData.ts index 207f1b84..8c71db1a 100644 --- a/src/api/parameters/updateAttachmentData.ts +++ b/src/api/parameters/updateAttachmentData.ts @@ -1,4 +1,5 @@ -import { CreateAttachments } from './createAttachments'; +import type { CreateAttachments } from './createAttachments'; +import type { ExtractBaseType } from '~/interfaces'; export interface UpdateAttachmentData { /** The ID of the content that the attachment is attached to. */ @@ -7,5 +8,5 @@ export interface UpdateAttachmentData { attachmentId: string; /** Attachment data to update. */ - attachment: CreateAttachments.Attachment; + attachment: ExtractBaseType; } diff --git a/src/api/parameters/updateAttachmentProperties.ts b/src/api/parameters/updateAttachmentProperties.ts index c31a66d5..571666a6 100644 --- a/src/api/parameters/updateAttachmentProperties.ts +++ b/src/api/parameters/updateAttachmentProperties.ts @@ -1,4 +1,5 @@ -import { +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { AttachmentMetadata, Container, Content, @@ -16,17 +17,7 @@ export interface UpdateAttachmentProperties { id: string; /** The ID of the attachment to update. */ attachmentId: string; - - /** @deprecated Use `update` property instead. */ - body?: UpdateAttachmentProperties.Properties; - - update?: UpdateAttachmentProperties.Properties; -} - -export namespace UpdateAttachmentProperties { - export interface Properties { - [key: string]: any; - + update: Record & { id: string; type: 'page' | 'blogpost' | 'attachment' | 'content' | string; status: 'current' | 'draft' | string; @@ -63,5 +54,5 @@ export namespace UpdateAttachmentProperties { macroRenderedOutput: string; }; _links?: GenericLinks; - } + }; } diff --git a/src/api/parameters/updateContent.ts b/src/api/parameters/updateContent.ts index c82dbedd..a5b2ed89 100644 --- a/src/api/parameters/updateContent.ts +++ b/src/api/parameters/updateContent.ts @@ -1,4 +1,4 @@ -import { ContentUpdate } from '../models'; +import type { ContentUpdate } from '../models'; export interface UpdateContent extends ContentUpdate { /** The ID of the content to be updated. */ diff --git a/src/api/parameters/updateContentProperty.ts b/src/api/parameters/updateContentProperty.ts index 900af812..a9248224 100644 --- a/src/api/parameters/updateContentProperty.ts +++ b/src/api/parameters/updateContentProperty.ts @@ -1,4 +1,4 @@ -import { ContentPropertyUpdate } from '../models'; +import type { ContentPropertyUpdate } from '../models'; export interface UpdateContentProperty extends ContentPropertyUpdate { /** The ID of the content that the property belongs to. */ diff --git a/src/api/parameters/updateContentTemplate.ts b/src/api/parameters/updateContentTemplate.ts index 688b78c3..71f92c63 100644 --- a/src/api/parameters/updateContentTemplate.ts +++ b/src/api/parameters/updateContentTemplate.ts @@ -1,4 +1,4 @@ -import { ContentTemplateUpdate } from '../models'; +import type { ContentTemplateUpdate } from '../models'; /** This object is used to update content templates. */ export interface UpdateContentTemplate extends ContentTemplateUpdate {} diff --git a/src/api/parameters/updateLookAndFeel.ts b/src/api/parameters/updateLookAndFeel.ts index ce8678ef..8116112c 100644 --- a/src/api/parameters/updateLookAndFeel.ts +++ b/src/api/parameters/updateLookAndFeel.ts @@ -1,3 +1,3 @@ -import { LookAndFeelSelection } from '../models'; +import type { LookAndFeelSelection } from '../models'; export interface UpdateLookAndFeel extends LookAndFeelSelection {} diff --git a/src/api/parameters/updateLookAndFeelSettings.ts b/src/api/parameters/updateLookAndFeelSettings.ts index 0955777b..0bef68af 100644 --- a/src/api/parameters/updateLookAndFeelSettings.ts +++ b/src/api/parameters/updateLookAndFeelSettings.ts @@ -1,4 +1,4 @@ -import { LookAndFeel } from '../models'; +import type { LookAndFeel } from '../models'; export interface UpdateLookAndFeelSettings extends LookAndFeel { /** diff --git a/src/api/parameters/updateRestrictions.ts b/src/api/parameters/updateRestrictions.ts index bbdafb9d..9e9c907e 100644 --- a/src/api/parameters/updateRestrictions.ts +++ b/src/api/parameters/updateRestrictions.ts @@ -1,4 +1,4 @@ -import { ContentRestrictionUpdateArray } from '../models'; +import type { ContentRestrictionUpdateArray } from '../models'; export interface UpdateRestrictions { /** The ID of the content to update restrictions for. */ diff --git a/src/api/parameters/updateSpace.ts b/src/api/parameters/updateSpace.ts index 32f18cec..02926e8e 100644 --- a/src/api/parameters/updateSpace.ts +++ b/src/api/parameters/updateSpace.ts @@ -1,4 +1,4 @@ -import { SpaceUpdate } from '../models'; +import type { SpaceUpdate } from '../models'; export interface UpdateSpace extends SpaceUpdate { /** The key of the space to update. */ diff --git a/src/api/parameters/updateSpaceProperty.ts b/src/api/parameters/updateSpaceProperty.ts index 9ab41272..4c4e095f 100644 --- a/src/api/parameters/updateSpaceProperty.ts +++ b/src/api/parameters/updateSpaceProperty.ts @@ -1,4 +1,4 @@ -import { SpacePropertyUpdate } from '../models'; +import type { SpacePropertyUpdate } from '../models'; export interface UpdateSpaceProperty extends SpacePropertyUpdate { /** The key of the space that the property is in. */ diff --git a/src/api/parameters/updateSpaceSettings.ts b/src/api/parameters/updateSpaceSettings.ts index 84bf95b2..c835d3f8 100644 --- a/src/api/parameters/updateSpaceSettings.ts +++ b/src/api/parameters/updateSpaceSettings.ts @@ -1,4 +1,4 @@ -import { SpaceSettingsUpdate } from '../models'; +import type { SpaceSettingsUpdate } from '../models'; export interface UpdateSpaceSettings extends SpaceSettingsUpdate { /** The key of the space whose settings will be updated. */ diff --git a/src/api/parameters/updateTaskById.ts b/src/api/parameters/updateTaskById.ts index 6b6906e0..7de7f4fe 100644 --- a/src/api/parameters/updateTaskById.ts +++ b/src/api/parameters/updateTaskById.ts @@ -1,4 +1,4 @@ -import { TaskStatusUpdate } from '../models'; +import type { TaskStatusUpdate } from '../models'; export interface UpdateTaskById extends TaskStatusUpdate { /** Global ID of the inline task to update */ diff --git a/src/api/parameters/updateUserProperty.ts b/src/api/parameters/updateUserProperty.ts index d2515369..7968204d 100644 --- a/src/api/parameters/updateUserProperty.ts +++ b/src/api/parameters/updateUserProperty.ts @@ -1,4 +1,4 @@ -import { UserPropertyUpdate } from '../models'; +import type { UserPropertyUpdate } from '../models'; export interface UpdateUserProperty extends UserPropertyUpdate { /** diff --git a/src/api/parameters/userSearch.ts b/src/api/parameters/userSearch.ts deleted file mode 100644 index 91c2c242..00000000 --- a/src/api/parameters/userSearch.ts +++ /dev/null @@ -1,34 +0,0 @@ -export interface UserSearch { - /** - * The CQL query to be used for the search. See [Advanced Searching using - * CQL](https://developer.atlassian.com/cloud/confluence/advanced-searching-using-cql/) for instructions on how to - * build a CQL query. - * - * @example - * Example queries: - * - * cql=type=user // will return all users - * cql=user="1234" // will return user with accountId β€œ1234” - * - * // You can also use IN, NOT IN, != operators - * - * cql=user IN ("12", "34") // will return users with accountids β€œ12” and β€œ34” - * cql=user.fullname~jo // will return users with nickname/full name starting with β€œjo” - * cql=user.accountid="123" // will return user with accountId β€œ123” - */ - cql: string; - /** - * The starting index of the returned users. - * - * @default 0 - * @Minimum 0 - */ - start?: number; - /** - * The maximum number of user objects to return per page. Note, this may be restricted by fixed system limits. - * - * @default 25 - * @Minimum 0 - */ - limit?: number; -} diff --git a/src/api/relation.ts b/src/api/relation.ts index 5f55637f..4d6c0ef4 100644 --- a/src/api/relation.ts +++ b/src/api/relation.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Relation { constructor(private client: Client) {} @@ -58,20 +58,6 @@ export class Relation { return this.client.sendRequest(config, callback); } - /** @deprecated Will be removed in the next major version. Use `getRelationship` instead. */ - async GetRelationship( - parameters: Parameters.GetRelationship, - callback: Callback, - ): Promise; - /** @deprecated Will be removed in the next major version. Use `getRelationship` instead. */ - async GetRelationship(parameters: Parameters.GetRelationship, callback?: never): Promise; - async GetRelationship( - parameters: Parameters.GetRelationship, - callback?: Callback, - ): Promise { - return this.getRelationship(parameters, callback!); - } - /** * Find whether a particular type of relationship exists from a source entity to a target entity. Note, relationships * are one way. @@ -164,14 +150,6 @@ export class Relation { return this.client.sendRequest(config, callback); } - /** @deprecated Will be removed in the next major version. Use `deleteRelationship` instead. */ - async delete(parameters: Parameters.Delete, callback: Callback): Promise; - /** @deprecated Will be removed in the next major version. Use `deleteRelationship` instead. */ - async delete(parameters: Parameters.Delete, callback?: never): Promise; - async delete(parameters: Parameters.Delete, callback?: Callback): Promise { - return this.deleteRelationship(parameters, callback!); - } - /** * Deletes a relationship between two entities (user, space, content). * diff --git a/src/api/search.ts b/src/api/search.ts index 1098f4d4..64f581bf 100644 --- a/src/api/search.ts +++ b/src/api/search.ts @@ -1,26 +1,12 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Search { constructor(private client: Client) {} - /** @deprecated Will be removed in the next major version. Use `searchByCQL` instead. */ - async search( - parameters: Parameters.Search, - callback: Callback, - ): Promise; - /** @deprecated Will be removed in the next major version. Use `searchByCQL` instead. */ - async search(parameters: Parameters.Search, callback?: never): Promise; - async search( - parameters: Parameters.Search, - callback?: Callback, - ): Promise { - return this.searchByCQL(parameters, callback!); - } - /** * Searches for content using the [Confluence Query Language * (CQL)](https://developer.atlassian.com/cloud/confluence/advanced-searching-using-cql/) @@ -77,23 +63,6 @@ export class Search { return this.client.sendRequest(config, callback); } - /** @deprecated Will be removed in the next major version. Use `searchUser` instead. */ - async userSearch( - parameters: Parameters.UserSearch, - callback: Callback, - ): Promise; - /** @deprecated Will be removed in the next major version. Use `searchUser` instead. */ - async userSearch( - parameters: Parameters.UserSearch, - callback?: never, - ): Promise; - async userSearch( - parameters: Parameters.UserSearch, - callback?: Callback, - ): Promise { - return this.searchUser(parameters, callback!); - } - /** * Searches for users using user-specific queries from the [Confluence Query Language * (CQL)](https://developer.atlassian.com/cloud/confluence/advanced-searching-using-cql/). diff --git a/src/api/settings.ts b/src/api/settings.ts index 0325a1a9..5807fded 100644 --- a/src/api/settings.ts +++ b/src/api/settings.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Settings { constructor(private client: Client) {} @@ -232,26 +232,4 @@ export class Settings { return this.client.sendRequest(config, callback); } - - /** @deprecated Gets Content State settings for a space */ - async getContentStateSettings( - parameters: Parameters.GetContentStateSettings, - callback: Callback, - ): Promise; - /** @deprecated Gets Content State settings for a space */ - async getContentStateSettings( - parameters: Parameters.GetContentStateSettings, - callback?: never, - ): Promise; - async getContentStateSettings( - parameters: Parameters.GetContentStateSettings, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/api/space/${parameters.spaceKey}/state/settings`, - method: 'GET', - }; - - return this.client.sendRequest(config, callback); - } } diff --git a/src/api/space.ts b/src/api/space.ts index 65794dcd..37c81a5d 100644 --- a/src/api/space.ts +++ b/src/api/space.ts @@ -1,9 +1,9 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; import { paramSerializer } from '../paramSerializer'; -import { RequestConfig } from '../requestConfig'; +import type { RequestConfig } from '../requestConfig'; export class Space { constructor(private client: Client) {} diff --git a/src/api/spacePermissions.ts b/src/api/spacePermissions.ts index 3e05c155..b78b6d31 100644 --- a/src/api/spacePermissions.ts +++ b/src/api/spacePermissions.ts @@ -1,26 +1,12 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class SpacePermissions { constructor(private client: Client) {} - /** @deprecated Will be removed in the next major version. Use `addPermissionToSpace` instead. */ - async addPermission( - parameters: Parameters.AddPermission, - callback: Callback, - ): Promise; - /** @deprecated Will be removed in the next major version. Use `addPermissionToSpace` instead. */ - async addPermission(parameters: Parameters.AddPermission, callback?: never): Promise; - async addPermission( - parameters: Parameters.AddPermission, - callback?: Callback, - ): Promise { - return this.addPermissionToSpace(parameters, callback!); - } - /** * Adds new permission to space. * diff --git a/src/api/spaceProperties.ts b/src/api/spaceProperties.ts index a287f4e9..c127fabe 100644 --- a/src/api/spaceProperties.ts +++ b/src/api/spaceProperties.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class SpaceProperties { constructor(private client: Client) {} diff --git a/src/api/spaceSettings.ts b/src/api/spaceSettings.ts index b593cfa7..5fa4218e 100644 --- a/src/api/spaceSettings.ts +++ b/src/api/spaceSettings.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class SpaceSettings { constructor(private client: Client) {} diff --git a/src/api/template.ts b/src/api/template.ts index 08b18511..e635e220 100644 --- a/src/api/template.ts +++ b/src/api/template.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Template { constructor(private client: Client) {} diff --git a/src/api/themes.ts b/src/api/themes.ts index 58f15dbb..1bbc4f42 100644 --- a/src/api/themes.ts +++ b/src/api/themes.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Themes { constructor(private client: Client) {} diff --git a/src/api/users.ts b/src/api/users.ts index 722e83ac..9d869f4d 100644 --- a/src/api/users.ts +++ b/src/api/users.ts @@ -1,8 +1,8 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; +import type * as Models from './models'; +import type * as Parameters from './parameters'; +import type { Callback } from '../callback'; +import type { Client } from '../clients'; +import type { RequestConfig } from '../requestConfig'; export class Users { constructor(private client: Client) {} diff --git a/src/callback.ts b/src/callback.ts index 68b0e116..6d1aedd4 100644 --- a/src/callback.ts +++ b/src/callback.ts @@ -1,3 +1,3 @@ -import { AxiosError } from 'axios'; +import type { AxiosError } from 'axios'; export type Callback = (err: AxiosError | null, data?: T) => void; diff --git a/src/clients/baseClient.ts b/src/clients/baseClient.ts index 2511c22f..d831dd5d 100644 --- a/src/clients/baseClient.ts +++ b/src/clients/baseClient.ts @@ -1,9 +1,16 @@ -import axios, { AxiosInstance } from 'axios'; -import { AuthenticationService } from '../services/authenticationService'; -import type { Callback } from '../callback'; +/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unnecessary-condition */ +import type { AxiosInstance } from 'axios'; +import axios from 'axios'; +import { getAuthenticationToken } from '~/services'; +import type { Callback } from '~/callback'; import type { Client } from './client'; -import type { Config } from '../config'; -import type { RequestConfig } from '../requestConfig'; +import { + ConfigSchema, + type Config, + type Error as ConfluenceError, +} from '~/config'; +import type { RequestConfig } from '~/requestConfig'; +import { ZodError } from 'zod'; const ATLASSIAN_TOKEN_CHECK_FLAG = 'X-Atlassian-Token'; const ATLASSIAN_TOKEN_CHECK_NOCHECK_VALUE = 'no-check'; @@ -13,6 +20,16 @@ export class BaseClient implements Client { constructor(protected readonly config: Config) { this.config.apiPrefix = this.config.apiPrefix || '/wiki/rest/'; + + try { + this.config = ConfigSchema.parse(this.config); + } catch (e) { + if (e instanceof ZodError && e.errors[0].code === 'invalid_string') { + throw new Error(e.errors[0].message); + } + + throw e; + } } protected paramSerializer(parameters: Record): string { @@ -24,20 +41,16 @@ export class BaseClient implements Client { } if (Array.isArray(value)) { - // eslint-disable-next-line no-param-reassign value = value.join(','); } if (value instanceof Date) { - // eslint-disable-next-line no-param-reassign value = value.toISOString(); } else if (value !== null && typeof value === 'object') { - // eslint-disable-next-line no-param-reassign value = JSON.stringify(value); } else if (value instanceof Function) { const part = value(); - // eslint-disable-next-line consistent-return return part && parts.push(part); } @@ -83,14 +96,14 @@ export class BaseClient implements Client { return this.#instance; } - async sendRequest(requestConfig: RequestConfig, callback: never, telemetryData?: any): Promise; - async sendRequest(requestConfig: RequestConfig, callback: Callback, telemetryData?: any): Promise; + async sendRequest(requestConfig: RequestConfig, callback: never): Promise; + async sendRequest(requestConfig: RequestConfig, callback: Callback): Promise; async sendRequest(requestConfig: RequestConfig, callback: Callback | never): Promise { try { const modifiedRequestConfig = { ...requestConfig, headers: this.removeUndefinedProperties({ - Authorization: await AuthenticationService.getAuthenticationToken(this.config.authentication, { + Authorization: await getAuthenticationToken(this.config.authentication, { baseURL: this.config.host, url: this.instance.getUri(requestConfig), method: requestConfig.method!, @@ -110,9 +123,9 @@ export class BaseClient implements Client { return responseHandler(response.data); } catch (e: any) { - const err = this.config.newErrorHandling && e.isAxiosError ? e.response.data : e; + const err = e.isAxiosError ? e.response.data : e; - const callbackErrorHandler = callback && ((error: Config.Error) => callback(error)); + const callbackErrorHandler = callback && ((error: ConfluenceError) => callback(error)); const defaultErrorHandler = (error: Error) => { throw error; }; diff --git a/src/clients/client.ts b/src/clients/client.ts index dd2d9ee3..1a7b0b37 100644 --- a/src/clients/client.ts +++ b/src/clients/client.ts @@ -2,6 +2,6 @@ import type { Callback } from '../callback'; import type { RequestConfig } from '../requestConfig'; export interface Client { - sendRequest(requestConfig: RequestConfig, callback?: never, telemetryData?: any): Promise; - sendRequest(requestConfig: RequestConfig, callback?: Callback, telemetryData?: any): Promise; + sendRequest(requestConfig: RequestConfig, callback?: never): Promise; + sendRequest(requestConfig: RequestConfig, callback?: Callback): Promise; } diff --git a/src/clients/confluenceClient.ts b/src/clients/confluenceClient.ts index 00893961..6d87723b 100644 --- a/src/clients/confluenceClient.ts +++ b/src/clients/confluenceClient.ts @@ -1,5 +1,5 @@ import { BaseClient } from './baseClient'; -import { Config } from '../config'; +import type { Config } from '../config'; import { Analytics, Audit, @@ -8,7 +8,6 @@ import { ContentBody, ContentChildrenAndDescendants, ContentComments, - ContentContentState, ContentLabels, ContentMacroBody, ContentPermissions, @@ -50,7 +49,6 @@ export class ConfluenceClient extends BaseClient { contentBody = new ContentBody(this); contentChildrenAndDescendants = new ContentChildrenAndDescendants(this); contentComments = new ContentComments(this); - contentContentState = new ContentContentState(this); contentLabels = new ContentLabels(this); contentMacroBody = new ContentMacroBody(this); contentPermissions = new ContentPermissions(this); diff --git a/src/clients/index.ts b/src/clients/index.ts index 631fe11e..c538c529 100644 --- a/src/clients/index.ts +++ b/src/clients/index.ts @@ -1,4 +1,3 @@ export * from './baseClient'; export * from './client'; export * from './confluenceClient'; -export * from './serverClient'; diff --git a/src/clients/serverClient.ts b/src/clients/serverClient.ts deleted file mode 100644 index 12fa1b12..00000000 --- a/src/clients/serverClient.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { BaseClient } from './baseClient'; -import { Config } from '../config'; -import { - Audit, Content, ContentBody, Group, LongTask, Search, Space, User, -} from '../server'; - -export class ServerClient extends BaseClient { - constructor(config: Config) { - super({ - ...config, - apiPrefix: config.apiPrefix ?? '/', - }); - } - - audit = new Audit(this); - content = new Content(this); - contentBody = new ContentBody(this); - group = new Group(this); - longTask = new LongTask(this); - search = new Search(this); - space = new Space(this); - user = new User(this); -} diff --git a/src/config.ts b/src/config.ts index 6a1cd11b..1fbd828e 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,78 +1,72 @@ -import { AxiosError } from 'axios'; -import type { RequestConfig } from './requestConfig'; -import type { UtilityTypes } from './utilityTypes'; +import { z } from 'zod'; +import type { AxiosError } from 'axios'; -export interface Config { - host: string; - baseRequestConfig?: Config.BaseRequestConfig; - authentication?: Config.Authentication; - middlewares?: Config.Middlewares; - /** @deprecated Disabled. Will be removed in the next major version. */ - telemetry?: Config.Telemetry; - /** Adds `'X-Atlassian-Token': 'no-check'` to each request header */ - noCheckAtlassianToken?: boolean; - /** Enable new API error handling. `false` by default. */ - newErrorHandling?: boolean; - /** Prefix for all API routes. */ - apiPrefix?: string; -} - -export namespace Config { - export type BaseRequestConfig = RequestConfig; - export type Error = AxiosError; - /** @deprecated Disabled. Will be removed in the next major version. */ - export type Telemetry = boolean | any; +/** + * Basic authentication configuration using email and API token + * + * @see {@link https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/} for how to create API tokens + */ +export const BasicSchema = z.strictObject({ + basic: z.strictObject({ + /** User's email associated with Atlassian account */ + email: z.string().email(), + /** + * API token generated from Atlassian account settings + * + * @see {@link https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/} for how to create API tokens + */ + apiToken: z.string().min(1, 'API token is required'), + }), +}); - export type Authentication = UtilityTypes.XOR4< - { - jwt: Authentication.JWT; - }, - { - personalAccessToken: Authentication.PersonalAccessToken; - }, - { - basic: Authentication.Basic; - }, - { - oauth2: Authentication.OAuth2; - } - >; +/** JWT authentication configuration */ +export const JWTSchema = z.strictObject({ + jwt: z.strictObject({ + /** The key from the app descriptor */ + issuer: z.string(), + /** The shared secret key from app installation */ + secret: z.string(), + /** Token expiry time (default: 180) */ + expiryTimeSeconds: z.optional(z.number()), + }), +}); - export interface Middlewares { - onError?: Config.Middlewares.OnErrorHandler; - onResponse?: Config.Middlewares.OnResponseHandler; - } +/** OAuth2 authentication configuration */ +export const OAuth2Schema = z.strictObject({ + oauth2: z.strictObject({ + /** OAuth2 access token */ + accessToken: z.string(), + }), +}); - export namespace Middlewares { - export type OnErrorHandler = (error: Config.Error) => void; - export type OnResponseHandler = (data: any) => void; - } +/** Authentication configuration schema */ +export const AuthenticationSchema = z.union([BasicSchema, JWTSchema, OAuth2Schema]); - export namespace Authentication { - export type PersonalAccessToken = string; +/** Base request configuration */ +export const RequestConfigSchema = z.any(); - export type JWT = { - /** The key from the app descriptor. */ - issuer: string; - /** The shared secret key received during the app installation handshake */ - secret: string; - /** Token expiry time (default 3 minutes after issuing) */ - expiryTimeSeconds?: number; - }; +/** Middleware configuration schema */ +export const MiddlewaresSchema = z.object({ + /** Error handler middleware */ + onError: z.optional(z.function().args(z.any()).returns(z.void())), + /** Response handler middleware */ + onResponse: z.optional(z.function().args(z.any()).returns(z.void())), +}); - export type Basic = UtilityTypes.XOR< - { - email: string; - apiToken: string; - }, - { - username: string; - password: string; - } - >; +export const ConfigSchema = z.object({ + host: z.string().url({ message: 'Couldn\'t parse the host URL. Perhaps you forgot to add \'http://\' or \'https://\' at the beginning of the URL?' }), + baseRequestConfig: z.optional(RequestConfigSchema), + authentication: z.optional(AuthenticationSchema), + middlewares: z.optional(MiddlewaresSchema), + /** Adds `'X-Atlassian-Token': 'no-check'` to each request header */ + noCheckAtlassianToken: z.optional(z.boolean()), + /** Prefix for all API routes. */ + apiPrefix: z.optional(z.string()), +}); - export type OAuth2 = { - accessToken: string; - }; - } -} +export type Config = z.infer; +export type Authentication = z.infer; +export type Basic = z.infer; +export type JWT = z.infer; +export type OAuth2 = z.infer; +export type Error = AxiosError; diff --git a/src/index.ts b/src/index.ts index 52e72e14..8364c921 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,12 +3,9 @@ export * from './config'; export * from './requestConfig'; export * from './callback'; export * from './pagination'; -export * from './utilityTypes'; -export * from './services/authenticationService'; +export * from './services'; +export * from './interfaces'; export * as Api from './api'; -export * as Server from './server'; export * as Models from './api/models'; export * as Parameters from './api/parameters'; -export * as ServerModels from './server/models'; -export * as ServerParameters from './server/parameters'; diff --git a/src/interfaces/extractBaseType.ts b/src/interfaces/extractBaseType.ts new file mode 100644 index 00000000..889379df --- /dev/null +++ b/src/interfaces/extractBaseType.ts @@ -0,0 +1 @@ +export type ExtractBaseType = T extends (infer U)[] ? U : T; diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts new file mode 100644 index 00000000..02758423 --- /dev/null +++ b/src/interfaces/index.ts @@ -0,0 +1,2 @@ +export * from './extractBaseType'; +export * from './oneOrMany'; diff --git a/src/interfaces/oneOrMany.ts b/src/interfaces/oneOrMany.ts new file mode 100644 index 00000000..c014d044 --- /dev/null +++ b/src/interfaces/oneOrMany.ts @@ -0,0 +1 @@ +export type OneOrMany = T | T[]; diff --git a/src/pagination.ts b/src/pagination.ts index a478de97..2ceb0839 100644 --- a/src/pagination.ts +++ b/src/pagination.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ export interface Pagination { results: T[]; start: number; diff --git a/src/requestConfig.ts b/src/requestConfig.ts index 0bc24c5a..256383f9 100644 --- a/src/requestConfig.ts +++ b/src/requestConfig.ts @@ -1,3 +1,3 @@ -import { AxiosRequestConfig } from 'axios'; +import type { AxiosRequestConfig } from 'axios'; export type RequestConfig = AxiosRequestConfig; diff --git a/src/server/audit.ts b/src/server/audit.ts deleted file mode 100644 index a8223d61..00000000 --- a/src/server/audit.ts +++ /dev/null @@ -1,166 +0,0 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { Pagination } from '../pagination'; -import { RequestConfig } from '../requestConfig'; - -export class Audit { - constructor(private client: Client) {} - - /** Fetch a paginated list of AuditRecord instances dating back to a certain time */ - async getAuditRecords>( - parameters: Parameters.GetAuditRecords | undefined, - callback: Callback, - ): Promise; - /** Fetch a paginated list of AuditRecord instances dating back to a certain time */ - async getAuditRecords>( - parameters?: Parameters.GetAuditRecords, - callback?: never, - ): Promise; - async getAuditRecords>( - parameters?: Parameters.GetAuditRecords, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/audit', - method: 'GET', - params: { - startDate: parameters?.startDate, - endDate: parameters?.endDate, - start: parameters?.start, - limit: parameters?.limit, - searchString: parameters?.searchString, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Creates a record in the audit log. */ - async createAuditRecord( - parameters: Parameters.CreateAuditRecord, - callback: Callback, - ): Promise; - /** Creates a record in the audit log. */ - async createAuditRecord( - parameters: Parameters.CreateAuditRecord, - callback?: never, - ): Promise; - async createAuditRecord( - parameters: Parameters.CreateAuditRecord, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/audit', - method: 'POST', - data: { - author: parameters.author, - remoteAddress: parameters.remoteAddress, - creationDate: parameters.creationDate, - summary: parameters.summary, - description: parameters.description, - category: parameters.category, - sysAdmin: parameters.sysAdmin, - affectedObject: parameters.affectedObject, - changedValues: parameters.changedValues, - associatedObjects: parameters.associatedObjects, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Exports audit records as a CSV file or ZIP file. */ - async exportAuditRecords( - parameters: Parameters.ExportAuditRecords | undefined, - callback: Callback, - ): Promise; - /** Exports audit records as a CSV file or ZIP file. */ - async exportAuditRecords(parameters?: Parameters.ExportAuditRecords, callback?: never): Promise; - async exportAuditRecords( - parameters?: Parameters.ExportAuditRecords, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/audit/export', - method: 'GET', - params: { - startDate: parameters?.startDate, - endDate: parameters?.endDate, - searchString: parameters?.searchString, - format: parameters?.format, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Fetches the current retention periodResponses */ - async getRetentionPeriod(callback: Callback): Promise; - /** Fetches the current retention periodResponses */ - async getRetentionPeriod(callback?: never): Promise; - async getRetentionPeriod(callback?: Callback): Promise { - const config: RequestConfig = { - url: '/rest/api/audit/retention', - method: 'GET', - }; - - return this.client.sendRequest(config, callback); - } - - /** Set the retention period to a new value. Can throw ServiceException if the retention period is too long */ - async setRetentionPeriod( - parameters: Models.RetentionPeriod, - callback: Callback, - ): Promise; - /** Set the retention period to a new value. Can throw ServiceException if the retention period is too long */ - async setRetentionPeriod( - parameters: Models.RetentionPeriod, - callback?: never, - ): Promise; - async setRetentionPeriod( - parameters: Models.RetentionPeriod, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/audit/retention', - method: 'PUT', - data: { - number: parameters.number, - units: parameters.units, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Fetch a paginated list of AuditRecord instances dating back to a certain time */ - async getAuditRecordsForTimePeriod>( - parameters: Parameters.GetAuditRecordsSince | undefined, - callback: Callback, - ): Promise; - /** Fetch a paginated list of AuditRecord instances dating back to a certain time */ - async getAuditRecordsForTimePeriod>( - parameters?: Parameters.GetAuditRecordsSince, - callback?: never, - ): Promise; - async getAuditRecordsForTimePeriod>( - parameters?: Parameters.GetAuditRecordsSince, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/audit/since', - method: 'GET', - params: { - number: parameters?.number, - units: parameters?.units, - start: parameters?.start, - limit: parameters?.limit, - searchString: parameters?.searchString, - }, - }; - - return this.client.sendRequest(config, callback); - } -} diff --git a/src/server/content.ts b/src/server/content.ts deleted file mode 100644 index 1a4ec360..00000000 --- a/src/server/content.ts +++ /dev/null @@ -1,1078 +0,0 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { Pagination } from '../pagination'; -import { RequestConfig } from '../requestConfig'; - -export class Content { - constructor(private client: Client) {} - - /** Returns a paginated list of Content. */ - async getContent>( - parameters: Parameters.GetContent | undefined, - callback: Callback, - ): Promise; - /** Returns a paginated list of Content. */ - async getContent>(parameters?: Parameters.GetContent, callback?: never): Promise; - async getContent>( - parameters?: Parameters.GetContent, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/content', - method: 'GET', - params: { - type: parameters?.type, - spaceKey: parameters?.spaceKey, - title: parameters?.title, - status: parameters?.status, - postingDay: parameters?.postingDay, - expand: parameters?.expand, - start: parameters?.start, - limit: parameters?.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Creates a new piece of Content or publishes the draft if the content id is present.For the case publishing draft, a - * new piece of content will be created and all metadata from the draft will be transferred into the newly created - * content. - */ - async createContent( - parameters: Parameters.CreateContent | undefined, - callback: Callback, - ): Promise; - /** - * Creates a new piece of Content or publishes the draft if the content id is present.For the case publishing draft, a - * new piece of content will be created and all metadata from the draft will be transferred into the newly created - * content. - */ - async createContent(parameters?: Parameters.CreateContent, callback?: never): Promise; - async createContent( - parameters?: Parameters.CreateContent, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/content', - method: 'POST', - params: { - status: parameters?.status, - expand: parameters?.expand, - }, - data: { - ...parameters, - status: undefined, - expand: undefined, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Updates a piece of Content, including changes to content status To update a piece of content you must increment the - * version.number, supplying the number of the version you are creating. The title property can be updated on all - * content, body can be updated on all content that has a body (not attachments). - */ - async updateContent(parameters: Parameters.UpdateContent, callback: Callback): Promise; - /** - * Updates a piece of Content, including changes to content status To update a piece of content you must increment the - * version.number, supplying the number of the version you are creating. The title property can be updated on all - * content, body can be updated on all content that has a body (not attachments). - */ - async updateContent(parameters: Parameters.UpdateContent, callback?: never): Promise; - async updateContent( - parameters: Parameters.UpdateContent, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}`, - method: 'PUT', - params: { - status: parameters.status, - conflictPolicy: parameters.conflictPolicy, - }, - data: { - ...parameters, - status: undefined, - conflictPolicy: undefined, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns a piece of Content. */ - async getContentById(parameters: Parameters.GetContentById, callback: Callback): Promise; - /** Returns a piece of Content. */ - async getContentById(parameters: Parameters.GetContentById, callback?: never): Promise; - async getContentById( - parameters: Parameters.GetContentById, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}`, - method: 'GET', - params: { - status: parameters.status, - version: parameters.version, - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Trashes or purges a piece of Content, based on its ContentType and ContentStatus. There are three cases: - * - * - If the content is trashable and its status is `current`, it will be trashed. - * - If the content is trashable, its status is `trashed` and the "status" query parameter in the request is "trashed", - * the content will be purged from the trash and deleted permanently. - * - If the content is not trashable it will be deleted permanently without being trashed. - */ - async deleteContent(parameters: Parameters.DeleteContent, callback: Callback): Promise; - /** - * Trashes or purges a piece of Content, based on its ContentType and ContentStatus. There are three cases: - * - * - If the content is trashable and its status is `current`, it will be trashed. - * - If the content is trashable, its status is `trashed` and the "status" query parameter in the request is "trashed", - * the content will be purged from the trash and deleted permanently. - * - If the content is not trashable it will be deleted permanently without being trashed. - */ - async deleteContent(parameters: Parameters.DeleteContent, callback?: never): Promise; - async deleteContent(parameters: Parameters.DeleteContent, callback?: Callback): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}`, - method: 'DELETE', - params: { - status: parameters.status, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns the history of a particular piece of content */ - async getHistory(parameters: Parameters.GetHistory, callback: Callback): Promise; - /** Returns the history of a particular piece of content */ - async getHistory(parameters: Parameters.GetHistory, callback?: never): Promise; - async getHistory( - parameters: Parameters.GetHistory, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/history`, - method: 'GET', - params: { - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Returns the body of a macro (in storage format) with the given hash. This resource is primarily used by connect - * applications that require the body of macro to perform their work. - * - * The hash is generated by connect during render time of the local macro holder and is usually only relevant during - * the scope of one request. For optimisation purposes, this hash will usually live for multiple requests. - * - * Collecting a macro by its hash should now be considered deprecated and will be replaced, transparently with - * macroIds. This resource is currently only called from connect addons which will eventually all use the - * {@link #getContentById(com.atlassian.confluence.api.model.content.id.ContentId, java.util.List, Integer, String)} - * resource. - * - * To make the migration as seamless as possible, this resource will match macros against a generated hash or a stored - * macroId. This will allow add ons to work during the migration period. - */ - async getMacroBodyByHash( - parameters: Parameters.GetMacroBodyByHash, - callback: Callback, - ): Promise; - /** - * Returns the body of a macro (in storage format) with the given hash. This resource is primarily used by connect - * applications that require the body of macro to perform their work. - * - * The hash is generated by connect during render time of the local macro holder and is usually only relevant during - * the scope of one request. For optimisation purposes, this hash will usually live for multiple requests. - * - * Collecting a macro by its hash should now be considered deprecated and will be replaced, transparently with - * macroIds. This resource is currently only called from connect addons which will eventually all use the - * {@link #getContentById(com.atlassian.confluence.api.model.content.id.ContentId, java.util.List, Integer, String)} - * resource. - * - * To make the migration as seamless as possible, this resource will match macros against a generated hash or a stored - * macroId. This will allow add ons to work during the migration period. - */ - async getMacroBodyByHash( - parameters: Parameters.GetMacroBodyByHash, - callback?: never, - ): Promise; - async getMacroBodyByHash( - parameters: Parameters.GetMacroBodyByHash, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/history/${parameters.version}/macro/hash/${parameters.hash}`, - method: 'GET', - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Returns the body of a macro (in storage format) with the given id. This resource is primarily used by connect - * applications that require the body of macro to perform their work. - * - * When content is created, if no macroId is specified, then Confluence will generate a random id. The id is persisted - * as the content is saved and only modified by Confluence if there are conflicting IDs. - * - * To preserve backwards compatibility this resource will also match on the hash of the macro body, even if a macroId - * is found. This check will become redundant as pages get macroId's generated for them and transparently propagate - * out to all instances. - */ - async getMacroBodyByMacroId( - parameters: Parameters.GetMacroBodyByMacroId, - callback: Callback, - ): Promise; - /** - * Returns the body of a macro (in storage format) with the given id. This resource is primarily used by connect - * applications that require the body of macro to perform their work. - * - * When content is created, if no macroId is specified, then Confluence will generate a random id. The id is persisted - * as the content is saved and only modified by Confluence if there are conflicting IDs. - * - * To preserve backwards compatibility this resource will also match on the hash of the macro body, even if a macroId - * is found. This check will become redundant as pages get macroId's generated for them and transparently propagate - * out to all instances. - */ - async getMacroBodyByMacroId( - parameters: Parameters.GetMacroBodyByMacroId, - callback?: never, - ): Promise; - async getMacroBodyByMacroId( - parameters: Parameters.GetMacroBodyByMacroId, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/history/${parameters.version}/macro/id/${parameters.macroId}`, - method: 'GET', - }; - - return this.client.sendRequest(config, callback); - } - - /** Fetch a list of content using the Confluence Query Language (CQL). See: Advanced searching using CQL */ - async searchContent>( - parameters: Parameters.SearchContent | undefined, - callback: Callback, - ): Promise; - /** Fetch a list of content using the Confluence Query Language (CQL). See: Advanced searching using CQL */ - async searchContent>( - parameters?: Parameters.SearchContent, - callback?: never, - ): Promise; - async searchContent>( - parameters?: Parameters.SearchContent, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/content/search', - method: 'GET', - params: { - cql: parameters?.cql, - cqlcontext: parameters?.cqlcontext, - expand: parameters?.expand, - start: parameters?.start, - limit: parameters?.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Returns a map of the direct children of a piece of Content. Content can have multiple types of children - for - * example a Page can have children that are also Pages, but it can also have Comments and Attachments. - * - * The ContentType(s) of the children returned is specified by the "expand" query parameter in the request - this - * parameter can include expands for multiple child types. - * - * If no types are included in the expand parameter, the map returned will just list the child types that are - * available to be expanded for the Content referenced by the "id" path parameter. - */ - async getContentChildren( - parameters: Parameters.GetContentChildren, - callback: Callback, - ): Promise; - /** - * Returns a map of the direct children of a piece of Content. Content can have multiple types of children - for - * example a Page can have children that are also Pages, but it can also have Comments and Attachments. - * - * The ContentType(s) of the children returned is specified by the "expand" query parameter in the request - this - * parameter can include expands for multiple child types. - * - * If no types are included in the expand parameter, the map returned will just list the child types that are - * available to be expanded for the Content referenced by the "id" path parameter. - */ - async getContentChildren( - parameters: Parameters.GetContentChildren, - callback?: never, - ): Promise; - async getContentChildren( - parameters: Parameters.GetContentChildren, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/child`, - method: 'GET', - params: { - expand: parameters.expand, - parentVersion: parameters.parentVersion, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Returns the direct children of a piece of Content, limited to a single child type. - * - * The ContentType(s) of the children returned is specified by the "type" path parameter in the request. - */ - async getContentChildrenByType>( - parameters: Parameters.GetContentChildrenByType, - callback: Callback, - ): Promise; - /** - * Returns the direct children of a piece of Content, limited to a single child type. - * - * The ContentType(s) of the children returned is specified by the "type" path parameter in the request. - */ - async getContentChildrenByType>( - parameters: Parameters.GetContentChildrenByType, - callback?: never, - ): Promise; - async getContentChildrenByType>( - parameters: Parameters.GetContentChildrenByType, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/child/${parameters.type}`, - method: 'GET', - params: { - expand: parameters.expand, - parentVersion: parameters.parentVersion, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns the comments of a content */ - async getContentComments>( - parameters: Parameters.GetContentComments, - callback: Callback, - ): Promise; - /** Returns the comments of a content */ - async getContentComments>( - parameters: Parameters.GetContentComments, - callback?: never, - ): Promise; - async getContentComments>( - parameters: Parameters.GetContentComments, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/child/comment`, - method: 'GET', - params: { - expand: parameters.expand, - parentVersion: parameters.parentVersion, - start: parameters.start, - limit: parameters.limit, - location: parameters.location, - depth: parameters.depth, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns a paginated list of attachment Content entities within a single container. */ - async getAttachments>( - parameters: Parameters.GetAttachments, - callback: Callback, - ): Promise; - /** Returns a paginated list of attachment Content entities within a single container. */ - async getAttachments>( - parameters: Parameters.GetAttachments, - callback?: never, - ): Promise; - async getAttachments>( - parameters: Parameters.GetAttachments, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/child/attachment`, - method: 'GET', - params: { - expand: parameters.expand, - start: parameters.start, - limit: parameters.limit, - filename: parameters.filename, - mediaType: parameters.mediaType, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Add one or more attachments to a Confluence Content entity, with optional comments. - * - * Comments are optional, but if included there must be as many comments as there are files, and the comments must be - * in the same order as the files. - * - * This resource expects a multipart post. The media-type multipart/form-data is defined in RFC 1867. Most client - * libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP - * Components library provides a MultiPartEntity that makes it simple to submit a multipart POST. - * - * In order to protect against XSRF attacks, because this method accepts multipart/form-data, it has XSRF protection - * on it. This means you must submit a header of X-Atlassian-Token: nocheck with the request, otherwise it will be - * blocked. - * - * The name of the multipart/form-data parameter that contains attachments must be "file" - * - * A simple example to attach a file called "myfile.txt" to the container with id "123", with a comment included: curl - * -D- -u admin:admin -X POST -H "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" -F "comment=This is my File" - * http://myhost/rest/api/content/123/child/attachment A example to attach a file called "myfile.txt" to the container - * with id "123", with a comment, and set the minorEdits flag to be true: curl -D- -u admin:admin -X POST -H - * "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" -F "minorEdit=true" -F "comment=This is my File" - * http://myhost/rest/api/content/123/child/attachment An example to attach the same file, with no comment: curl -D- - * -u admin:admin -X POST -H "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" - * http://myhost/rest/api/content/123/child/attachment - */ - async createAttachments>( - parameters: Parameters.CreateAttachments, - callback: Callback, - ): Promise; - /** - * Add one or more attachments to a Confluence Content entity, with optional comments. - * - * Comments are optional, but if included there must be as many comments as there are files, and the comments must be - * in the same order as the files. - * - * This resource expects a multipart post. The media-type multipart/form-data is defined in RFC 1867. Most client - * libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP - * Components library provides a MultiPartEntity that makes it simple to submit a multipart POST. - * - * In order to protect against XSRF attacks, because this method accepts multipart/form-data, it has XSRF protection - * on it. This means you must submit a header of X-Atlassian-Token: nocheck with the request, otherwise it will be - * blocked. - * - * The name of the multipart/form-data parameter that contains attachments must be "file" - * - * A simple example to attach a file called "myfile.txt" to the container with id "123", with a comment included: curl - * -D- -u admin:admin -X POST -H "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" -F "comment=This is my File" - * http://myhost/rest/api/content/123/child/attachment A example to attach a file called "myfile.txt" to the container - * with id "123", with a comment, and set the minorEdits flag to be true: curl -D- -u admin:admin -X POST -H - * "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" -F "minorEdit=true" -F "comment=This is my File" - * http://myhost/rest/api/content/123/child/attachment An example to attach the same file, with no comment: curl -D- - * -u admin:admin -X POST -H "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" - * http://myhost/rest/api/content/123/child/attachment - */ - async createAttachments>( - parameters: Parameters.CreateAttachments, - callback?: never, - ): Promise; - async createAttachments>( - parameters: Parameters.CreateAttachments, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/child/attachment`, - method: 'POST', - headers: { - 'Content-Type': 'multipart/form-data', - 'X-Atlassian-Token': 'nocheck', - }, - params: { - status: parameters.status, - }, - data: { - ...parameters, - id: undefined, - status: undefined, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Update the non-binary data of an Attachment. - * - * This resource can be used to update an attachment's filename, media-type, comment, and parent container. - */ - async updateAttachmentProperties( - parameters: Parameters.UpdateAttachmentProperties, - callback: Callback, - ): Promise; - /** - * Update the non-binary data of an Attachment. - * - * This resource can be used to update an attachment's filename, media-type, comment, and parent container. - */ - async updateAttachmentProperties( - parameters: Parameters.UpdateAttachmentProperties, - callback?: never, - ): Promise; - async updateAttachmentProperties( - parameters: Parameters.UpdateAttachmentProperties, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/child/attachment/${parameters.attachmentId}`, - method: 'PUT', - data: { - ...parameters, - id: undefined, - attachmentId: undefined, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Update the binary data of an Attachment, and optionally the comment and the minor edit field. This adds a new - * version of the attachment, containing the new binary data, filename, and content-type. - * - * When updating the binary data of an attachment, the comment related to it together with the field that specifies if - * it's a minor edit can be updated as well, but are not required. If an update is considered to be a minor edit, - * notifications will not be sent to the watchers of that content. - * - * This resource expects a multipart post. The media-type multipart/form-data is defined in RFC 1867. Most client - * libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP - * Components library provides a MultiPartEntity that makes it simple to submit a multipart POST. - * - * In order to protect against XSRF attacks, because this method accepts multipart/form-data, it has XSRF protection - * on it. This means you must submit a header of X-Atlassian-Token: nocheck with the request, otherwise it will be - * blocked. - * - * The name of the multipart/form-data parameter that contains attachments must be "file" - * - * A simple example to upload a file called "myfile.txt" to the Attachment with id "456" in a container with id "123", - * with the comment updated, and minorEdit set to true: curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: - * nocheck" -F "file=@myfile.txt" -F "minorEdit=true" -F "comment=This is my updated File" - * http://myhost/rest/api/content/123/child/attachment/456/data - * - * An example to upload the same file, with no comment: curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: - * nocheck" -F "file=@myfile.txt" http://myhost/rest/api/content/123/child/attachment/456/data - */ - async updateAttachmentData( - parameters: Parameters.UpdateAttachmentData, - callback: Callback, - ): Promise; - /** - * Update the binary data of an Attachment, and optionally the comment and the minor edit field. This adds a new - * version of the attachment, containing the new binary data, filename, and content-type. - * - * When updating the binary data of an attachment, the comment related to it together with the field that specifies if - * it's a minor edit can be updated as well, but are not required. If an update is considered to be a minor edit, - * notifications will not be sent to the watchers of that content. - * - * This resource expects a multipart post. The media-type multipart/form-data is defined in RFC 1867. Most client - * libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP - * Components library provides a MultiPartEntity that makes it simple to submit a multipart POST. - * - * In order to protect against XSRF attacks, because this method accepts multipart/form-data, it has XSRF protection - * on it. This means you must submit a header of X-Atlassian-Token: nocheck with the request, otherwise it will be - * blocked. - * - * The name of the multipart/form-data parameter that contains attachments must be "file" - * - * A simple example to upload a file called "myfile.txt" to the Attachment with id "456" in a container with id "123", - * with the comment updated, and minorEdit set to true: curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: - * nocheck" -F "file=@myfile.txt" -F "minorEdit=true" -F "comment=This is my updated File" - * http://myhost/rest/api/content/123/child/attachment/456/data - * - * An example to upload the same file, with no comment: curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: - * nocheck" -F "file=@myfile.txt" http://myhost/rest/api/content/123/child/attachment/456/data - */ - async updateAttachmentData( - parameters: Parameters.UpdateAttachmentData, - callback?: never, - ): Promise; - async updateAttachmentData( - parameters: Parameters.UpdateAttachmentData, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/child/attachment/${parameters.attachmentId}/data`, - method: 'POST', - headers: { - 'Content-Type': 'multipart/form-data', - 'X-Atlassian-Token': 'nocheck', - }, - data: { - ...parameters, - id: undefined, - attachmentId: undefined, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Returns a map of the descendants of a piece of Content. Content can have multiple types of descendants - for - * example a Page can have descendants that are also Pages, but it can also have Comments and Attachments. - * - * The ContentType(s) of the descendants returned is specified by the "expand" query parameter in the request - this - * parameter can include expands for multiple descendant types. - * - * If no types are included in the expand parameter, the map returned will just list the descendant types that are - * available to be expanded for the Content referenced by the "id" path parameter. - * - * Currently the only supported descendants are comment descendants of non-comment Content. - */ - async getContentDescendants( - parameters: Parameters.GetContentDescendants, - callback: Callback, - ): Promise; - /** - * Returns a map of the descendants of a piece of Content. Content can have multiple types of descendants - for - * example a Page can have descendants that are also Pages, but it can also have Comments and Attachments. - * - * The ContentType(s) of the descendants returned is specified by the "expand" query parameter in the request - this - * parameter can include expands for multiple descendant types. - * - * If no types are included in the expand parameter, the map returned will just list the descendant types that are - * available to be expanded for the Content referenced by the "id" path parameter. - * - * Currently the only supported descendants are comment descendants of non-comment Content. - */ - async getContentDescendants( - parameters: Parameters.GetContentDescendants, - callback?: never, - ): Promise; - async getContentDescendants( - parameters: Parameters.GetContentDescendants, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/descendant`, - method: 'GET', - params: { - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Returns the direct descendants of a piece of Content, limited to a single descendant type. - * - * The ContentType(s) of the descendants returned is specified by the "type" path parameter in the request. - * - * Currently the only supported descendants are comment descendants of non-comment Content. - */ - async getContentDescendantsOfType>( - parameters: Parameters.GetContentDescendantsOfType, - callback: Callback, - ): Promise; - /** - * Returns the direct descendants of a piece of Content, limited to a single descendant type. - * - * The ContentType(s) of the descendants returned is specified by the "type" path parameter in the request. - * - * Currently the only supported descendants are comment descendants of non-comment Content. - */ - async getContentDescendantsOfType>( - parameters: Parameters.GetContentDescendantsOfType, - callback?: never, - ): Promise; - async getContentDescendantsOfType>( - parameters: Parameters.GetContentDescendantsOfType, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/descendant/${parameters.type}`, - method: 'GET', - params: { - expand: parameters.expand, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns the list of labels on a piece of Content. */ - async getContentLabels>( - parameters: Parameters.GetContentLabels, - callback: Callback, - ): Promise; - /** Returns the list of labels on a piece of Content. */ - async getContentLabels>( - parameters: Parameters.GetContentLabels, - callback?: never, - ): Promise; - async getContentLabels>( - parameters: Parameters.GetContentLabels, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/label`, - method: 'GET', - params: { - prefix: parameters.prefix, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Adds a list of labels to the specified content. The body is the json representation of the list. */ - async addLabelsToContent>( - parameters: Parameters.AddLabelsToContent, - callback: Callback, - ): Promise; - /** Adds a list of labels to the specified content. The body is the json representation of the list. */ - async addLabelsToContent>( - parameters: Parameters.AddLabelsToContent, - callback?: never, - ): Promise; - async addLabelsToContent>( - parameters: Parameters.AddLabelsToContent, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/label`, - method: 'POST', - data: parameters.labels, - }; - - return this.client.sendRequest(config, callback); - } - - /** Deletes a labels to the specified content. */ - async deleteLabelWithQueryParam( - parameters: Parameters.DeleteLabelWithQueryParam, - callback: Callback, - ): Promise; - /** Deletes a labels to the specified content. */ - async deleteLabelWithQueryParam( - parameters: Parameters.DeleteLabelWithQueryParam, - callback?: never, - ): Promise; - async deleteLabelWithQueryParam( - parameters: Parameters.DeleteLabelWithQueryParam, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/label`, - method: 'DELETE', - params: { - name: parameters.name, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Deletes a labels to the specified content. When calling this method through REST the label parameter doesn't accept - * "/" characters in label names, because of security constraints. For this case please use the query parameter - * version of this method (/content/{id}/label?name={label}Responses - */ - async deleteLabel(parameters: Parameters.DeleteLabel, callback: Callback): Promise; - /** - * Deletes a labels to the specified content. When calling this method through REST the label parameter doesn't accept - * "/" characters in label names, because of security constraints. For this case please use the query parameter - * version of this method (/content/{id}/label?name={label}Responses - */ - async deleteLabel(parameters: Parameters.DeleteLabel, callback?: never): Promise; - async deleteLabel(parameters: Parameters.DeleteLabel, callback?: Callback): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/label/${parameters.labelId}`, - method: 'DELETE', - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns a paginated list of content properties. */ - async getContentProperties>( - parameters: Parameters.GetContentProperties, - callback: Callback, - ): Promise; - /** Returns a paginated list of content properties. */ - async getContentProperties>( - parameters: Parameters.GetContentProperties, - callback?: never, - ): Promise; - async getContentProperties>( - parameters: Parameters.GetContentProperties, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/property`, - method: 'GET', - params: { - expand: parameters.expand, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Creates a new content property. */ - async createContentProperty( - parameters: Parameters.CreateContentProperty, - callback: Callback, - ): Promise; - /** Creates a new content property. */ - async createContentProperty( - parameters: Parameters.CreateContentProperty, - callback?: never, - ): Promise; - async createContentProperty( - parameters: Parameters.CreateContentProperty, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/property`, - method: 'POST', - data: { - key: parameters.key, - value: parameters.value, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns a content property. */ - async getContentProperty( - parameters: Parameters.GetContentProperty, - callback: Callback, - ): Promise; - /** Returns a content property. */ - async getContentProperty( - parameters: Parameters.GetContentProperty, - callback?: never, - ): Promise; - async getContentProperty( - parameters: Parameters.GetContentProperty, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/property/${parameters.key}`, - method: 'GET', - params: { - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Creates a new content property. */ - async createContentPropertyForKey( - parameters: Parameters.CreateContentPropertyForKey, - callback: Callback, - ): Promise; - /** Creates a new content property. */ - async createContentPropertyForKey( - parameters: Parameters.CreateContentPropertyForKey, - callback?: never, - ): Promise; - async createContentPropertyForKey( - parameters: Parameters.CreateContentPropertyForKey, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/property/${parameters.key}`, - method: 'POST', - data: { - value: parameters.value, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Updates a content property. The body contains the representation of the content property. Must include the property - * id, and the new version number. Attempts to create a new content property if the given version number is 1, just - * like - * {@link #create(com.atlassian.confluence.api.model.content.id.ContentId, - * String, com.atlassian.confluence.api.model.content.JsonContentProperty)}. - */ - async updateContentProperty( - parameters: Parameters.UpdateContentProperty, - callback: Callback, - ): Promise; - /** - * Updates a content property. The body contains the representation of the content property. Must include the property - * id, and the new version number. Attempts to create a new content property if the given version number is 1, just - * like - * {@link #create(com.atlassian.confluence.api.model.content.id.ContentId, - * String, com.atlassian.confluence.api.model.content.JsonContentProperty)}. - */ - async updateContentProperty( - parameters: Parameters.UpdateContentProperty, - callback?: never, - ): Promise; - async updateContentProperty( - parameters: Parameters.UpdateContentProperty, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/property/${parameters.key}`, - method: 'PUT', - data: { - value: parameters.value, - version: parameters.version, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Deletes a content property. */ - async deleteContentProperty( - parameters: Parameters.DeleteContentProperty, - callback: Callback, - ): Promise; - /** Deletes a content property. */ - async deleteContentProperty(parameters: Parameters.DeleteContentProperty, callback?: never): Promise; - async deleteContentProperty( - parameters: Parameters.DeleteContentProperty, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/property/${parameters.key}`, - method: 'DELETE', - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns info about all restrictions by operation */ - async getRestrictionsByOperation( - parameters: Parameters.GetRestrictionsByOperation, - callback: Callback, - ): Promise; - /** Returns info about all restrictions by operation */ - async getRestrictionsByOperation( - parameters: Parameters.GetRestrictionsByOperation, - callback?: never, - ): Promise; - async getRestrictionsByOperation( - parameters: Parameters.GetRestrictionsByOperation, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/restriction/byOperation`, - method: 'GET', - params: { - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns info about all restrictions of given operation */ - async getRestrictionsForOperation( - parameters: Parameters.GetRestrictionsForOperation, - callback: Callback, - ): Promise; - /** Returns info about all restrictions of given operation */ - async getRestrictionsForOperation( - parameters: Parameters.GetRestrictionsForOperation, - callback?: never, - ): Promise; - async getRestrictionsForOperation( - parameters: Parameters.GetRestrictionsForOperation, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/${parameters.id}/restriction/byOperation/${parameters.operationKey}`, - method: 'GET', - params: { - expand: parameters.expand, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Publishes a legacy draft of a Content created from a ContentBlueprint */ - async publishLegacyDraft( - parameters: Parameters.PublishLegacyDraft, - callback: Callback, - ): Promise; - /** Publishes a legacy draft of a Content created from a ContentBlueprint */ - async publishLegacyDraft(parameters: Parameters.PublishLegacyDraft, callback?: never): Promise; - async publishLegacyDraft( - parameters: Parameters.PublishLegacyDraft, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/blueprint/instance/${parameters.draftId}`, - method: 'POST', - params: { - status: parameters.status, - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Publishes a shared draft of a Content created from a ContentBlueprint */ - async publishSharedDraft( - parameters: Parameters.PublishSharedDraft, - callback: Callback, - ): Promise; - /** Publishes a shared draft of a Content created from a ContentBlueprint */ - async publishSharedDraft(parameters: Parameters.PublishSharedDraft, callback?: never): Promise; - async publishSharedDraft( - parameters: Parameters.PublishSharedDraft, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/content/blueprint/instance/${parameters.draftId}`, - method: 'PUT', - params: { - status: parameters.status, - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } -} diff --git a/src/server/contentBody.ts b/src/server/contentBody.ts deleted file mode 100644 index 040b50e9..00000000 --- a/src/server/contentBody.ts +++ /dev/null @@ -1,66 +0,0 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { RequestConfig } from '../requestConfig'; - -export class ContentBody { - constructor(private client: Client) {} - - /** - * Converts between content body representations. Not all representations can be converted to/from other formats. - * Supported conversions: - * - * - Storageview, export_view, styled_view, editor - * - Editorstorage - * - ViewNone - * - Export_viewNone - * - Styled_viewNone - */ - async convertContentBody( - parameters: Parameters.ConvertContentBody, - callback: Callback, - ): Promise; - /** - * Converts between content body representations. Not all representations can be converted to/from other formats. - * Supported conversions: - * - * - Storageview, export_view, styled_view, editor - * - Editorstorage - * - ViewNone - * - Export_viewNone - * - Styled_viewNone - */ - async convertContentBody( - parameters: Parameters.ConvertContentBody, - callback?: never, - ): Promise; - async convertContentBody( - parameters: Parameters.ConvertContentBody, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/contentbody/convert/${parameters.to}`, - method: 'POST', - params: { - storage: parameters.storage, - editor: parameters.editor, - view: parameters.view, - export_view: parameters.exportView, - styled_view: parameters.styledView, - expand: parameters.expand, - }, - data: { - ...parameters, - to: undefined, - storage: undefined, - editor: undefined, - view: undefined, - export_view: undefined, - styled_view: undefined, - }, - }; - - return this.client.sendRequest(config, callback); - } -} diff --git a/src/server/group.ts b/src/server/group.ts deleted file mode 100644 index 932499d8..00000000 --- a/src/server/group.ts +++ /dev/null @@ -1,74 +0,0 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { Pagination } from '../pagination'; -import { RequestConfig } from '../requestConfig'; - -export class Group { - constructor(private client: Client) {} - - /** Get a paginated collection of user groups */ - async getGroups>( - parameters: Parameters.GetGroups | undefined, - callback: Callback, - ): Promise; - /** Get a paginated collection of user groups */ - async getGroups>(parameters?: Parameters.GetGroups, callback?: never): Promise; - async getGroups>( - parameters?: Parameters.GetGroups, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/group', - method: 'GET', - params: { - expand: parameters?.expand, - start: parameters?.start, - limit: parameters?.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Get the user group with the group name */ - async getGroup(parameters: Parameters.GetGroup, callback: Callback): Promise; - /** Get the user group with the group name */ - async getGroup(parameters: Parameters.GetGroup, callback?: never): Promise; - async getGroup(parameters: Parameters.GetGroup, callback?: Callback): Promise { - const config: RequestConfig = { - url: `/rest/api/group/${parameters.groupName}`, - method: 'GET', - params: { - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Get a paginated collection of users in the given group */ - async getMembers>( - parameters: Parameters.GetMembers, - callback: Callback, - ): Promise; - /** Get a paginated collection of users in the given group */ - async getMembers>(parameters: Parameters.GetMembers, callback?: never): Promise; - async getMembers>( - parameters: Parameters.GetMembers, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/group/${parameters.groupName}/member`, - method: 'GET', - params: { - expand: parameters.expand, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } -} diff --git a/src/server/index.ts b/src/server/index.ts deleted file mode 100644 index 7a390e54..00000000 --- a/src/server/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from './audit'; -export * from './content'; -export * from './contentBody'; -export * from './group'; -export * from './longTask'; -export * from './search'; -export * from './space'; -export * from './user'; diff --git a/src/server/longTask.ts b/src/server/longTask.ts deleted file mode 100644 index c1f8621d..00000000 --- a/src/server/longTask.ts +++ /dev/null @@ -1,50 +0,0 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { Pagination } from '../pagination'; -import { RequestConfig } from '../requestConfig'; - -export class LongTask { - constructor(private client: Client) {} - - /** Returns information about all tracked long-running tasks. */ - async getTasks>( - parameters: Parameters.GetTasks | undefined, - callback: Callback, - ): Promise; - /** Returns information about all tracked long-running tasks. */ - async getTasks>(parameters?: Parameters.GetTasks, callback?: never): Promise; - async getTasks>( - parameters?: Parameters.GetTasks, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/longtask', - method: 'GET', - params: { - expand: parameters?.expand, - start: parameters?.start, - limit: parameters?.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns information about a long-running task. */ - async getTask(parameters: Parameters.GetTask, callback: Callback): Promise; - /** Returns information about a long-running task. */ - async getTask(parameters: Parameters.GetTask, callback?: never): Promise; - async getTask(parameters: Parameters.GetTask, callback?: Callback): Promise { - const config: RequestConfig = { - url: `/rest/api/longtask/${parameters.id}`, - method: 'GET', - params: { - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } -} diff --git a/src/server/models/affectedObject.ts b/src/server/models/affectedObject.ts deleted file mode 100644 index 3c4cef10..00000000 --- a/src/server/models/affectedObject.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface AffectedObject { - name: string; - objectType: string; -} diff --git a/src/server/models/attachmentUpdate.ts b/src/server/models/attachmentUpdate.ts deleted file mode 100644 index 574bcb3f..00000000 --- a/src/server/models/attachmentUpdate.ts +++ /dev/null @@ -1,27 +0,0 @@ -export interface AttachmentUpdate { - /** - * The attachment version. Set this to the current version number of the attachment. Note, the version number only - * needs to be incremented when updating the actual attachment, not its properties. - */ - version: { - /** The version number. */ - number: number; - }; - /** Set this to `attachment`. */ - type: string; - /** The updated name of the attachment. */ - title?: string; - metadata?: { - /** The media type of the attachment, e.g. 'img/jpg'. */ - mediaType?: string; - /** The comment for this update. */ - comment?: string; - }; - /** The new content to attach the attachment to. */ - container?: { - /** The `id` of the parent content. */ - id: string; - /** The content type. You can only attach attachments to content of type: `page`, `blogpost`. */ - type: string; - }; -} diff --git a/src/server/models/auditRecord.ts b/src/server/models/auditRecord.ts deleted file mode 100644 index 20042b7f..00000000 --- a/src/server/models/auditRecord.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { AffectedObject } from './affectedObject'; -import { ChangedValue } from './changedValue'; - -export interface AuditRecord { - author: { - type: string; - displayName: string; - operations: {}; - username: string; - userKey: string; - }; - remoteAddress: string; - /** The creation date-time of the audit record, as a timestamp. */ - creationDate: number; - summary: string; - description: string; - category: string; - sysAdmin: boolean; - affectedObject: AffectedObject; - changedValues: ChangedValue[]; - associatedObjects: AffectedObject[]; -} diff --git a/src/server/models/breadcrumb.ts b/src/server/models/breadcrumb.ts deleted file mode 100644 index f137086f..00000000 --- a/src/server/models/breadcrumb.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface Breadcrumb { - label: string; - url: string; - separator: string; -} diff --git a/src/server/models/buttonLookAndFeel.ts b/src/server/models/buttonLookAndFeel.ts deleted file mode 100644 index dc0a9725..00000000 --- a/src/server/models/buttonLookAndFeel.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface ButtonLookAndFeel { - backgroundColor: string; - color: string; -} diff --git a/src/server/models/changedValue.ts b/src/server/models/changedValue.ts deleted file mode 100644 index 66581a88..00000000 --- a/src/server/models/changedValue.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface ChangedValue { - name: string; - oldValue: string; - newValue: string; -} diff --git a/src/server/models/container.ts b/src/server/models/container.ts deleted file mode 100644 index bd5c5b5e..00000000 --- a/src/server/models/container.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Container for content. This can be either a space (containing a page or blogpost)* or a page/blog post (containing an - * attachment or comment) - */ -export type Container = Record; diff --git a/src/server/models/containerLookAndFeel.ts b/src/server/models/containerLookAndFeel.ts deleted file mode 100644 index b3a437d5..00000000 --- a/src/server/models/containerLookAndFeel.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface ContainerLookAndFeel { - background: string; - backgroundColor: string; - backgroundImage: string; - backgroundSize: string; - padding: string; - borderRadius: string; -} diff --git a/src/server/models/containerSummary.ts b/src/server/models/containerSummary.ts deleted file mode 100644 index 2613b73b..00000000 --- a/src/server/models/containerSummary.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface ContainerSummary { - title: string; - displayUrl: string; -} diff --git a/src/server/models/content.ts b/src/server/models/content.ts deleted file mode 100644 index 751ff8b0..00000000 --- a/src/server/models/content.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Container } from './container'; -import { ContentBody } from './contentBody'; -import { ContentChildren } from './contentChildren'; -import { ContentChildType } from './contentChildType'; -import { ContentHistory } from './contentHistory'; -import { ContentRestriction } from './contentRestriction'; -import { OperationCheckResult } from './operationCheckResult'; -import { Space } from './space'; -import { Version } from './version'; - -/** Base object for all content types. */ -export interface Content { - id: string; - type: string; - status: string; - title: string; - space?: Space; - history?: ContentHistory; - version?: Version; - ancestors?: Content[]; - operations?: OperationCheckResult[]; - children?: ContentChildren; - childTypes?: ContentChildType; - descendants?: ContentChildren; - container?: Container; - body?: { - view?: ContentBody; - export_view?: ContentBody; - styled_view?: ContentBody; - storage?: ContentBody; - editor2?: ContentBody; - anonymous_export_view?: ContentBody; - atlas_doc_format?: ContentBody; - _expandable: { - editor?: string; - view?: string; - export_view?: string; - styled_view?: string; - storage?: string; - editor2?: string; - anonymous_export_view?: string; - atlas_doc_format?: string; - }; - }; - restrictions?: { - read?: ContentRestriction; - update?: ContentRestriction; - _links: Record; - }; - _expandable: { - childTypes?: string; - container?: string; - metadata?: string; - operations?: string; - children?: string; - restrictions?: string; - history?: string; - ancestors?: string; - body?: string; - version?: string; - descendants?: string; - space?: string; - }; - _links?: Record; -} diff --git a/src/server/models/contentBody.ts b/src/server/models/contentBody.ts deleted file mode 100644 index 55ab6f22..00000000 --- a/src/server/models/contentBody.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { EmbeddedContent } from './embeddedContent'; -import { WebResourceDependencies } from './webResourceDependencies'; - -export interface ContentBody { - value: string; - representation: string; - embeddedContent?: EmbeddedContent[]; - webresource?: WebResourceDependencies; - _expandable: { - content?: string; - }; -} diff --git a/src/server/models/contentChildType.ts b/src/server/models/contentChildType.ts deleted file mode 100644 index 6818fb4a..00000000 --- a/src/server/models/contentChildType.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Shows whether a piece of content has attachments, comments, or child pages.* Note, this doesn't actually contain the - * child objects. - */ -export interface ContentChildType { - attachment?: { - value: boolean; - _links: Record; - }; - comment?: { - value: boolean; - _links: Record; - }; - page?: { - value: boolean; - _links: Record; - }; - _expandable: { - all?: string; - attachment?: string; - comment?: string; - page?: string; - }; -} diff --git a/src/server/models/contentChildren.ts b/src/server/models/contentChildren.ts deleted file mode 100644 index dd47be01..00000000 --- a/src/server/models/contentChildren.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Content } from './content'; -import { Pagination } from '../../pagination'; - -export interface ContentChildren { - attachment?: Pagination; - comment?: Pagination; - page?: Pagination; - _expandable: { - attachment?: string; - comment?: string; - page?: string; - }; - _links: Record; -} diff --git a/src/server/models/contentHistory.ts b/src/server/models/contentHistory.ts deleted file mode 100644 index 524436e1..00000000 --- a/src/server/models/contentHistory.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { User } from './user'; -import { UsersUserKeys } from './usersUserKeys'; -import { Version } from './version'; - -export interface ContentHistory { - latest: boolean; - createdBy: User; - createdDate: string; - lastUpdated?: Version; - previousVersion?: Version; - contributors?: { - publishers?: UsersUserKeys; - }; - nextVersion?: Version; - _expandable?: { - lastUpdated?: string; - previousVersion?: string; - contributors?: string; - nextVersion?: string; - }; - _links?: Record; -} diff --git a/src/server/models/contentLookAndFeel.ts b/src/server/models/contentLookAndFeel.ts deleted file mode 100644 index a8c2016b..00000000 --- a/src/server/models/contentLookAndFeel.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ContainerLookAndFeel } from './containerLookAndFeel'; -import { ScreenLookAndFeel } from './screenLookAndFeel'; - -export interface ContentLookAndFeel { - screen: ScreenLookAndFeel; - container: ContainerLookAndFeel; - header: ContainerLookAndFeel; - body: ContainerLookAndFeel; -} diff --git a/src/server/models/contentProperty.ts b/src/server/models/contentProperty.ts deleted file mode 100644 index 8bc99bd4..00000000 --- a/src/server/models/contentProperty.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Content } from './content'; - -export interface ContentProperty { - id: number; - key: string; - /** The value of the content property. This can be empty or a complex object. */ - value: {}; - version?: { - when: string; - message: string; - number: number; - minorEdit: boolean; - }; - content?: Content; - _links: Record; -} diff --git a/src/server/models/contentRestriction.ts b/src/server/models/contentRestriction.ts deleted file mode 100644 index 73fa3f7e..00000000 --- a/src/server/models/contentRestriction.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Content } from './content'; -import { GroupArray } from './groupArray'; -import { UserArray } from './userArray'; - -export interface ContentRestriction { - operation: string; - restrictions?: { - user?: UserArray; - group?: GroupArray; - _expandable?: { - user?: string; - group?: string; - }; - }; - content?: Content; - _expandable: { - restrictions?: string; - content?: string; - }; - _links: Record; -} diff --git a/src/server/models/deletedSpace.ts b/src/server/models/deletedSpace.ts deleted file mode 100644 index ee86d525..00000000 --- a/src/server/models/deletedSpace.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface DeletedSpace { - id: string; - links: { - status: string; - }; -} diff --git a/src/server/models/embeddable.ts b/src/server/models/embeddable.ts deleted file mode 100644 index 9c81770b..00000000 --- a/src/server/models/embeddable.ts +++ /dev/null @@ -1 +0,0 @@ -export type Embeddable = Record; diff --git a/src/server/models/embeddedContent.ts b/src/server/models/embeddedContent.ts deleted file mode 100644 index edab678f..00000000 --- a/src/server/models/embeddedContent.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Embeddable } from './embeddable'; - -export interface EmbeddedContent { - entityId?: number; - entity?: Embeddable; -} diff --git a/src/server/models/group.ts b/src/server/models/group.ts deleted file mode 100644 index 477d761d..00000000 --- a/src/server/models/group.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface Group { - type: string; - name: string; - id: string; - _links: Record; -} diff --git a/src/server/models/groupArray.ts b/src/server/models/groupArray.ts deleted file mode 100644 index 642b5109..00000000 --- a/src/server/models/groupArray.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Group } from './group'; - -export interface GroupArray { - results: Group[]; - start: number; - limit: number; - size: number; -} diff --git a/src/server/models/headerLookAndFeel.ts b/src/server/models/headerLookAndFeel.ts deleted file mode 100644 index 4a23ec0d..00000000 --- a/src/server/models/headerLookAndFeel.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ButtonLookAndFeel } from './buttonLookAndFeel'; -import { NavigationLookAndFeel } from './navigationLookAndFeel'; -import { SearchFieldLookAndFeel } from './searchFieldLookAndFeel'; - -export interface HeaderLookAndFeel { - backgroundColor: string; - button: ButtonLookAndFeel; - primaryNavigation: NavigationLookAndFeel; - secondaryNavigation: NavigationLookAndFeel; - search: SearchFieldLookAndFeel; -} diff --git a/src/server/models/icon.ts b/src/server/models/icon.ts deleted file mode 100644 index 5e602646..00000000 --- a/src/server/models/icon.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * This object represents an icon. If used as a profilePicture, this may be returned as null, depending on the user's - * privacy setting. - */ -export interface Icon { - path: string; - width: number; - height: number; - isDefault: boolean; -} diff --git a/src/server/models/index.ts b/src/server/models/index.ts deleted file mode 100644 index 59ab7d23..00000000 --- a/src/server/models/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -export * from './affectedObject'; -export * from './attachmentUpdate'; -export * from './auditRecord'; -export * from './breadcrumb'; -export * from './buttonLookAndFeel'; -export * from './changedValue'; -export * from './container'; -export * from './containerLookAndFeel'; -export * from './containerSummary'; -export * from './content'; -export * from './contentBody'; -export * from './contentChildren'; -export * from './contentChildType'; -export * from './contentHistory'; -export * from './contentLookAndFeel'; -export * from './contentProperty'; -export * from './contentRestriction'; -export * from './deletedSpace'; -export * from './embeddable'; -export * from './embeddedContent'; -export * from './group'; -export * from './groupArray'; -export * from './headerLookAndFeel'; -export * from './icon'; -export * from './label'; -export * from './labelArray'; -export * from './labelCreate'; -export * from './longTaskStatus'; -export * from './lookAndFeel'; -export * from './lookAndFeelSelection'; -export * from './lookAndFeelSettings'; -export * from './lookAndFeelUpdated'; -export * from './macroInstance'; -export * from './menusLookAndFeel'; -export * from './message'; -export * from './navigationLookAndFeel'; -export * from './operationCheckResult'; -export * from './propertyValue'; -export * from './restrictionsByOperation'; -export * from './retentionPeriod'; -export * from './screenLookAndFeel'; -export * from './searchFieldLookAndFeel'; -export * from './searchResult'; -export * from './space'; -export * from './spaceDescription'; -export * from './spaceDescriptionCreate'; -export * from './spacePermission'; -export * from './spaceProperty'; -export * from './spaceSettings'; -export * from './superBatchWebResources'; -export * from './theme'; -export * from './themeNoLinks'; -export * from './user'; -export * from './userAnonymous'; -export * from './userArray'; -export * from './userDetails'; -export * from './usersUserKeys'; -export * from './userWatch'; -export * from './version'; -export * from './webResourceDependencies'; diff --git a/src/server/models/label.ts b/src/server/models/label.ts deleted file mode 100644 index df6ec35e..00000000 --- a/src/server/models/label.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface Label { - prefix: string; - name: string; - id: string; - label: string; -} diff --git a/src/server/models/labelArray.ts b/src/server/models/labelArray.ts deleted file mode 100644 index 18daeafe..00000000 --- a/src/server/models/labelArray.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Label } from './label'; - -export interface LabelArray { - results: Label[]; - start: number; - limit: number; - size: number; - _links: Record; -} diff --git a/src/server/models/labelCreate.ts b/src/server/models/labelCreate.ts deleted file mode 100644 index 5cff70de..00000000 --- a/src/server/models/labelCreate.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface LabelCreate { - /** The prefix for the label. */ - prefix: 'global' | 'my' | 'team' | string; - /** The name of the label, which will be shown in the UI. */ - name: string; -} diff --git a/src/server/models/longTaskStatus.ts b/src/server/models/longTaskStatus.ts deleted file mode 100644 index 48d3ff3b..00000000 --- a/src/server/models/longTaskStatus.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Message } from './message'; - -/** - * Current status of a long running task - * - * Status keys: - * - * - `ERROR_UNKNOWN` - Generic error - * - `ERROR_LOCK_FAILED` - Could not get the lock on destination space - * - `ERROR_RELINK` - Error when relink pages/attachments - * - `ERROR_COPY_PAGE` - Error while copying 1 page - * - `WARN_RENAME_PAGE` - Warning page is rename during copy - * - `WARN_IGNORE_COPY_PERMISSION` - Warning could not copy permission - * - `WARN_IGNORE_COPY_ATTACHMENT` - Warning could not copy attachment - * - `WARN_IGNORE_DELETE_PAGE` - Warning ignoring delete of a non agreed on page - * - `STATUS_COPIED_PAGES` - Message total pages are copied - * - `STATUS_COPYING_PAGES` - Message copy pages - * - `STATUS_RELINK_PAGES` - Message relink pages/attachments - * - `STATUS_DELETING_PAGES` - Message delete pages - * - `STATUS_DELETED_PAGES` - Message total pages are deleted - * - `STATUS_MOVING_PAGES` - Message move pages - * - `WARN_IGNORE_VIEW_RESTRICTED` - Permission changed - view restricted - * - `WARN_IGNORE_EDIT_RESTRICTED` - Permission changed - edit restricted - * - `INITIALIZING_TASK` - Message when initializing task - * - `UNKNOWN_STATUS` - Message when status is unknown - */ -export interface LongTaskStatus { - id: string; - name: { - key: string; - args: {}[]; - }; - elapsedTime: number; - percentageComplete: number; - successful: boolean; - messages: Message[]; - status?: string; - errors?: Message[]; - additionalDetails?: {}; -} diff --git a/src/server/models/lookAndFeel.ts b/src/server/models/lookAndFeel.ts deleted file mode 100644 index 808736eb..00000000 --- a/src/server/models/lookAndFeel.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ContentLookAndFeel } from './contentLookAndFeel'; -import { HeaderLookAndFeel } from './headerLookAndFeel'; -import { MenusLookAndFeel } from './menusLookAndFeel'; - -export interface LookAndFeel { - headings: { - color: string; - }; - links: { - color: string; - }; - menus: MenusLookAndFeel; - header: HeaderLookAndFeel; - content: ContentLookAndFeel; - bordersAndDividers: { - color: string; - }; -} diff --git a/src/server/models/lookAndFeelSelection.ts b/src/server/models/lookAndFeelSelection.ts deleted file mode 100644 index 4af7130c..00000000 --- a/src/server/models/lookAndFeelSelection.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** Look and feel selection */ -export interface LookAndFeelSelection { - /** The key of the space for which the look and feel settings will be set. */ - spaceKey: string; - lookAndFeelType: string; -} diff --git a/src/server/models/lookAndFeelSettings.ts b/src/server/models/lookAndFeelSettings.ts deleted file mode 100644 index e1f6cdd8..00000000 --- a/src/server/models/lookAndFeelSettings.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { LookAndFeel } from './lookAndFeel'; - -export interface LookAndFeelSettings { - selected: string; - global: LookAndFeel; - theme?: LookAndFeel; - custom: LookAndFeel; -} diff --git a/src/server/models/lookAndFeelUpdated.ts b/src/server/models/lookAndFeelUpdated.ts deleted file mode 100644 index 67a280fd..00000000 --- a/src/server/models/lookAndFeelUpdated.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { LookAndFeel } from './lookAndFeel'; - -/** Look and feel settings returned after an update. */ -export interface LookAndFeelUpdated extends LookAndFeel { - _links: Record; -} diff --git a/src/server/models/macroInstance.ts b/src/server/models/macroInstance.ts deleted file mode 100644 index f808413b..00000000 --- a/src/server/models/macroInstance.ts +++ /dev/null @@ -1 +0,0 @@ -export interface MacroInstance {} diff --git a/src/server/models/menusLookAndFeel.ts b/src/server/models/menusLookAndFeel.ts deleted file mode 100644 index a0da75bb..00000000 --- a/src/server/models/menusLookAndFeel.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface MenusLookAndFeel { - hoverOrFocus: { - backgroundColor: string; - }; - color: string; -} diff --git a/src/server/models/message.ts b/src/server/models/message.ts deleted file mode 100644 index cfc62500..00000000 --- a/src/server/models/message.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface Message { - translation: string; - args: Record[]; -} diff --git a/src/server/models/navigationLookAndFeel.ts b/src/server/models/navigationLookAndFeel.ts deleted file mode 100644 index 14fa2a6b..00000000 --- a/src/server/models/navigationLookAndFeel.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface NavigationLookAndFeel { - color: string; - hoverOrFocus: { - backgroundColor: string; - color: string; - }; -} diff --git a/src/server/models/operationCheckResult.ts b/src/server/models/operationCheckResult.ts deleted file mode 100644 index ef859fd0..00000000 --- a/src/server/models/operationCheckResult.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** An operation and the target entity that it applies to, e.g. create page. */ -export interface OperationCheckResult { - /** The operation itself. */ - operation: string; - /** The space or content type that the operation applies to. */ - targetType: string; -} diff --git a/src/server/models/propertyValue.ts b/src/server/models/propertyValue.ts deleted file mode 100644 index 1fb9e512..00000000 --- a/src/server/models/propertyValue.ts +++ /dev/null @@ -1 +0,0 @@ -export interface PropertyValue {} diff --git a/src/server/models/restrictionsByOperation.ts b/src/server/models/restrictionsByOperation.ts deleted file mode 100644 index c928dee9..00000000 --- a/src/server/models/restrictionsByOperation.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface RestrictionsByOperation { - _links: Record; -} diff --git a/src/server/models/retentionPeriod.ts b/src/server/models/retentionPeriod.ts deleted file mode 100644 index 342f2e86..00000000 --- a/src/server/models/retentionPeriod.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface RetentionPeriod { - /** The number of units for the retention period. */ - number: number; - /** The unit of time that the retention period is measured in. */ - units: string; -} diff --git a/src/server/models/screenLookAndFeel.ts b/src/server/models/screenLookAndFeel.ts deleted file mode 100644 index 95e84c47..00000000 --- a/src/server/models/screenLookAndFeel.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface ScreenLookAndFeel { - background: string; - backgroundColor: string; - backgroundImage: string; - backgroundSize: string; - gutterTop: string; - gutterRight: string; - gutterBottom: string; - gutterLeft: string; -} diff --git a/src/server/models/searchFieldLookAndFeel.ts b/src/server/models/searchFieldLookAndFeel.ts deleted file mode 100644 index eae1baff..00000000 --- a/src/server/models/searchFieldLookAndFeel.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface SearchFieldLookAndFeel { - backgroundColor: string; - color: string; -} diff --git a/src/server/models/searchResult.ts b/src/server/models/searchResult.ts deleted file mode 100644 index b8645e92..00000000 --- a/src/server/models/searchResult.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Breadcrumb } from './breadcrumb'; -import { ContainerSummary } from './containerSummary'; -import { Content } from './content'; - -export interface SearchResult { - content: Content; - title: string; - excerpt: string; - url: string; - resultParentContainer: ContainerSummary; - resultGlobalContainer: ContainerSummary; - breadcrumbs: Breadcrumb[]; - entityType: string; - iconCssClass: string; - lastModified: string; - friendlyLastModified: string; -} diff --git a/src/server/models/space.ts b/src/server/models/space.ts deleted file mode 100644 index b74eb3d3..00000000 --- a/src/server/models/space.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Content } from './content'; -import { Icon } from './icon'; -import { LabelArray } from './labelArray'; -import { LookAndFeel } from './lookAndFeel'; -import { OperationCheckResult } from './operationCheckResult'; -import { SpaceDescription } from './spaceDescription'; -import { SpacePermission } from './spacePermission'; -import { SpaceSettings } from './spaceSettings'; -import { Theme } from './theme'; - -export interface Space { - id: number; - key: string; - name: string; - icon?: Icon; - description?: { - plain?: SpaceDescription; - view?: SpaceDescription; - }; - homepage?: Content; - type: string; - metadata?: { - labels: LabelArray; - }; - operations?: OperationCheckResult[]; - permissions?: SpacePermission[]; - status: string; - settings?: SpaceSettings; - theme?: Theme; - lookAndFeel?: LookAndFeel; - history?: { - createdDate: string; - }; - _expandable: { - settings?: string; - metadata?: string; - operations?: string; - lookAndFeel?: string; - permissions?: string; - icon?: string; - description?: string; - theme?: string; - history?: string; - homepage?: string; - }; - _links: Record; -} diff --git a/src/server/models/spaceDescription.ts b/src/server/models/spaceDescription.ts deleted file mode 100644 index ddb18a82..00000000 --- a/src/server/models/spaceDescription.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface SpaceDescription { - value: string; - representation: string; - embeddedContent: {}[]; -} diff --git a/src/server/models/spaceDescriptionCreate.ts b/src/server/models/spaceDescriptionCreate.ts deleted file mode 100644 index 27061076..00000000 --- a/src/server/models/spaceDescriptionCreate.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * The description of the new/updated space. Note, only the 'plain' representation* can be used for the description when - * creating or updating a space. - */ -export interface SpaceDescriptionCreate { - plain: { - /** The space description. */ - value?: string; - /** Set to 'plain'. */ - representation?: string; - }; -} diff --git a/src/server/models/spacePermission.ts b/src/server/models/spacePermission.ts deleted file mode 100644 index f719b1d3..00000000 --- a/src/server/models/spacePermission.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Group } from './group'; -import { OperationCheckResult } from './operationCheckResult'; -import { User } from './user'; - -/** - * This object represents a permission for given space. Permissions consist of* at least one operation object with an - * accompanying subjects object. - * - * The following combinations of `operation` and `targetType` values are valid for the `operation` object: - * - * - 'create': 'page', 'blogpost', 'comment', 'attachment' - * - 'read': 'space' - * - 'delete': 'page', 'blogpost', 'comment', 'attachment' - * - 'export': 'space' - * - 'administer': 'space' - */ -export interface SpacePermission { - /** The users and/or groups that the permission applies to. */ - subjects: { - user?: { - results: User[]; - size: number; - }; - group?: { - results: Group[]; - size: number; - }; - _expandable: { - user?: string; - group?: string; - }; - }; - operation: OperationCheckResult; - /** Grant anonymous users permission to use the operation. */ - anonymousAccess: boolean; - /** Grants access to unlicensed users from JIRA Service Desk when used with the 'read space' operation. */ - unlicensedAccess: boolean; -} diff --git a/src/server/models/spaceProperty.ts b/src/server/models/spaceProperty.ts deleted file mode 100644 index d07411bf..00000000 --- a/src/server/models/spaceProperty.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Space } from './space'; - -export interface SpaceProperty { - id: number; - key: string; - value: {}; - version?: { - when: string; - message: string; - number: number; - minorEdit: boolean; - }; - space?: Space; - _expandable: { - version?: string; - space?: string; - }; -} diff --git a/src/server/models/spaceSettings.ts b/src/server/models/spaceSettings.ts deleted file mode 100644 index d068cf70..00000000 --- a/src/server/models/spaceSettings.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface SpaceSettings { - /** - * Defines whether an override for the space home should be used. This is used in conjunction with a space theme - * provided by an app. For example, if this property is set to true, a theme can display a page other than the space - * homepage when users visit the root URL for a space. This property allows apps to provide content-only theming - * without overriding the space home. - */ - routeOverrideEnabled: boolean; - _links: Record; -} diff --git a/src/server/models/superBatchWebResources.ts b/src/server/models/superBatchWebResources.ts deleted file mode 100644 index 7908622d..00000000 --- a/src/server/models/superBatchWebResources.ts +++ /dev/null @@ -1,14 +0,0 @@ -export interface SuperBatchWebResources { - uris?: { - all?: string; - css?: string; - js?: string; - }; - tags?: { - all?: string; - css?: string; - data?: string; - js?: string; - }; - metatags?: string; -} diff --git a/src/server/models/theme.ts b/src/server/models/theme.ts deleted file mode 100644 index b2f213bd..00000000 --- a/src/server/models/theme.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { ThemeNoLinks } from './themeNoLinks'; - -export interface Theme extends ThemeNoLinks { - _links: Record; -} diff --git a/src/server/models/themeNoLinks.ts b/src/server/models/themeNoLinks.ts deleted file mode 100644 index 8e82c9eb..00000000 --- a/src/server/models/themeNoLinks.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Icon } from './icon'; - -/** Theme object without links. Used in ThemeArray. */ -export interface ThemeNoLinks { - themeKey: string; - name: string; - description: string; - icon: Icon; -} diff --git a/src/server/models/user.ts b/src/server/models/user.ts deleted file mode 100644 index 8727eaf9..00000000 --- a/src/server/models/user.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Icon } from './icon'; -import { OperationCheckResult } from './operationCheckResult'; -import { Space } from './space'; -import { UserDetails } from './userDetails'; - -export interface User { - type: string; - /** - * This property is no longer available and will be removed from the documentation soon. Use `accountId` instead. See - * the [deprecation notice](/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) for details. - */ - username?: string; - /** - * This property is no longer available and will be removed from the documentation soon. Use `accountId` instead. See - * the [deprecation notice](/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) for details. - */ - userKey?: string; - /** - * The account ID of the user, which uniquely identifies the user across all Atlassian products. For example, - * `384093:32b4d9w0-f6a5-3535-11a3-9c8c88d10192`. - */ - accountId: string; - /** The account type of the user, may return empty string if unavailable. */ - accountType: string; - /** The email address of the user. Depending on the user's privacy setting, this may return an empty string. */ - email: string; - /** The public name or nickname of the user. Will always contain a value. */ - publicName: string; - profilePicture: Icon; - /** The display name of the user. Depending on the user's privacy setting, this may be the same as publicName. */ - displayName: string; - operations?: OperationCheckResult[]; - details?: UserDetails; - personalSpace?: Space; - _expandable: { - operations?: string; - details?: string; - personalSpace?: string; - }; - _links: Record; -} diff --git a/src/server/models/userAnonymous.ts b/src/server/models/userAnonymous.ts deleted file mode 100644 index 924438b9..00000000 --- a/src/server/models/userAnonymous.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Icon } from './icon'; -import { OperationCheckResult } from './operationCheckResult'; - -export interface UserAnonymous { - type: string; - profilePicture: Icon; - displayName: string; - operations?: OperationCheckResult[]; - _expandable: { - operations?: string; - }; - _links: Record; -} diff --git a/src/server/models/userArray.ts b/src/server/models/userArray.ts deleted file mode 100644 index 9ead9f46..00000000 --- a/src/server/models/userArray.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { User } from './user'; - -export interface UserArray { - results: User[]; - start: number; - limit: number; - size: number; -} diff --git a/src/server/models/userDetails.ts b/src/server/models/userDetails.ts deleted file mode 100644 index fa94dad1..00000000 --- a/src/server/models/userDetails.ts +++ /dev/null @@ -1,49 +0,0 @@ -export interface UserDetails { - business?: { - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - position?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - department?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - location?: string; - }; - personal?: { - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - phone?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - im?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. There is no replacement. See the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - website?: string; - /** - * @deprecated This property has been deprecated due to privacy changes. Use the `User.email` property instead. See - * the [migration - * guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/) - * for details. - */ - email?: string; - }; -} diff --git a/src/server/models/userWatch.ts b/src/server/models/userWatch.ts deleted file mode 100644 index 0c9cbff4..00000000 --- a/src/server/models/userWatch.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface UserWatch { - watching: boolean; -} diff --git a/src/server/models/usersUserKeys.ts b/src/server/models/usersUserKeys.ts deleted file mode 100644 index f39798c0..00000000 --- a/src/server/models/usersUserKeys.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { User } from './user'; - -export interface UsersUserKeys { - users: User[]; - userKeys: string[]; - _links?: Record; -} diff --git a/src/server/models/version.ts b/src/server/models/version.ts deleted file mode 100644 index f5cd3d78..00000000 --- a/src/server/models/version.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Content } from './content'; -import { User } from './user'; -import { UsersUserKeys } from './usersUserKeys'; - -export interface Version { - by: User; - when: string; - friendlyWhen: string; - message: string; - number: number; - minorEdit: boolean; - content?: Content; - collaborators?: UsersUserKeys; - _expandable: { - content: string; - collaborators: string; - }; - _links: Record; -} diff --git a/src/server/models/webResourceDependencies.ts b/src/server/models/webResourceDependencies.ts deleted file mode 100644 index 4c5727f1..00000000 --- a/src/server/models/webResourceDependencies.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { SuperBatchWebResources } from './superBatchWebResources'; - -export interface WebResourceDependencies { - keys?: string[]; - contexts?: string[]; - uris?: { - all?: string; - css?: string; - js?: string; - }; - tags?: { - all?: string; - css?: string; - data?: string; - js?: string; - }; - superbatch?: SuperBatchWebResources; -} diff --git a/src/server/parameters/addContentWatcher.ts b/src/server/parameters/addContentWatcher.ts deleted file mode 100644 index 7eefc39a..00000000 --- a/src/server/parameters/addContentWatcher.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface AddContentWatcher { - contentId: string; - /** Userkey of the user to create the new watcher for */ - key?: string; - /** Username of the user to create the new watcher for */ - username?: string; -} diff --git a/src/server/parameters/addLabelsToContent.ts b/src/server/parameters/addLabelsToContent.ts deleted file mode 100644 index b8752510..00000000 --- a/src/server/parameters/addLabelsToContent.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { LabelCreate } from '../models'; - -export interface AddLabelsToContent { - /** The ID of the content that will have labels added to it. */ - id: string; - - labels: LabelCreate[]; -} diff --git a/src/server/parameters/addSpaceWatch.ts b/src/server/parameters/addSpaceWatch.ts deleted file mode 100644 index 8f135e89..00000000 --- a/src/server/parameters/addSpaceWatch.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface AddSpaceWatch { - spaceKey: string; - /** UserKey of the user to create the new watcher for */ - key?: string; - /** UserName of the user to create the new watcher for */ - username?: string; -} diff --git a/src/server/parameters/convertContentBody.ts b/src/server/parameters/convertContentBody.ts deleted file mode 100644 index 4e6f38a9..00000000 --- a/src/server/parameters/convertContentBody.ts +++ /dev/null @@ -1,48 +0,0 @@ -export interface ConvertContentBody { - /** The name of the target format for the content body. */ - to: string; - - storage?: any; - editor?: any; - view?: any; - exportView?: any; - styledView?: any; - - /** - * A multi-value parameter indicating which properties of the content to expand. Expands are dependent on the to - * conversion format and may be irrelevant for certain conversions (e.g. macroRenderedOutput is redundant when - * converting to view format). - * - * - `webresource` returns JS and CSS resources necessary for displaying nested content in `view` format - * - `webresource.superbatch.uris.js` returns all common JS dependencies - * - `webresource.superbatch.uris.css` returns all common CSS dependencies - * - `webresource.uris.js` returns JS dependencies specific to conversion - * - `webresource.uris.css` returns CSS dependencies specific to conversion - * - `embeddedContent` returns metadata for nested content (e.g. page included using page include macro) - * - `mediaToken` returns JWT token for retrieving attachment data from Media API - * - `macroRenderedOutput` additionally converts body to view format - */ - expand?: - | 'webresource' - | 'webresource.superbatch.uris.js' - | 'webresource.superbatch.uris.css' - | 'webresource.uris.js' - | 'webresource.uris.css' - | 'embeddedContent' - | 'mediaToken' - | 'macroRenderedOutput' - | ( - | 'webresource' - | 'webresource.superbatch.uris.js' - | 'webresource.superbatch.uris.css' - | 'webresource.uris.js' - | 'webresource.uris.css' - | 'embeddedContent' - | 'mediaToken' - | 'macroRenderedOutput' - )[] - | string - | string[]; - - [key: string]: any; -} diff --git a/src/server/parameters/createAttachments.ts b/src/server/parameters/createAttachments.ts deleted file mode 100644 index c25606b3..00000000 --- a/src/server/parameters/createAttachments.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface CreateAttachments { - id: string | number; - /** A string containing the status of the attachments content container, supports current or draft, defaults to current */ - status?: string; - - [key: string]: any; -} diff --git a/src/server/parameters/createAuditRecord.ts b/src/server/parameters/createAuditRecord.ts deleted file mode 100644 index efe6c558..00000000 --- a/src/server/parameters/createAuditRecord.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { AffectedObject, ChangedValue } from '../models'; - -export interface CreateAuditRecord { - /** - * The user that actioned the event. If `author` is not specified, then all `author` properties will be set to - * null/empty, except for `type` which will be set to 'user'. - */ - author?: { - /** Set to 'user'. */ - type: string; - /** The name that is displayed on the audit log in the Confluence UI. */ - displayName?: string; - /** Always defaults to null. */ - operations?: {}; - /** This property has been deprecated and will be removed soon. */ - username?: string; - /** This property has been deprecated and will be removed soon. */ - userKey?: string; - }; - /** The IP address of the computer where the event was initiated from. */ - remoteAddress: string; - /** - * The creation date-time of the audit record, as a timestamp. This is converted to a date-time display in the - * Confluence UI. If the `creationDate` is not specified, then it will be set to the timestamp for the current - * date-time. - */ - creationDate?: number; - /** The summary of the event, which is displayed in the 'Change' column on the audit log in the Confluence UI. */ - summary?: string; - /** - * A long description of the event, which is displayed in the 'Description' field on the audit log in the Confluence - * UI. - */ - description?: string; - /** The category of the event, which is displayed in the 'Event type' column on the audit log in the Confluence UI. */ - category?: string; - /** Indicates whether the event was actioned by a system administrator. */ - sysAdmin?: boolean; - affectedObject?: AffectedObject; - /** The values that were changed in the event. */ - changedValues?: ChangedValue[]; - /** - * Objects that were associated with the event. For example, if the event was a space permission change then the - * associated object would be the space. - */ - associatedObjects?: AffectedObject[]; -} diff --git a/src/server/parameters/createContent.ts b/src/server/parameters/createContent.ts deleted file mode 100644 index 7082253e..00000000 --- a/src/server/parameters/createContent.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ContentCreate } from '../../api/models'; - -export interface CreateContent extends ContentCreate { - status?: string; - expand?: string; -} diff --git a/src/server/parameters/createContentProperty.ts b/src/server/parameters/createContentProperty.ts deleted file mode 100644 index e55210b3..00000000 --- a/src/server/parameters/createContentProperty.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface CreateContentProperty { - id: string | number; - /** The key of the new property. */ - key: string; - value: Record; -} diff --git a/src/server/parameters/createContentPropertyForKey.ts b/src/server/parameters/createContentPropertyForKey.ts deleted file mode 100644 index 460efd47..00000000 --- a/src/server/parameters/createContentPropertyForKey.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { PropertyValue } from '../models'; - -export interface CreateContentPropertyForKey { - id: string | number; - key: string; - value: PropertyValue; -} diff --git a/src/server/parameters/createPrivateSpace.ts b/src/server/parameters/createPrivateSpace.ts deleted file mode 100644 index aa67a065..00000000 --- a/src/server/parameters/createPrivateSpace.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** This is the request object used when creating a new private space. */ -import { SpaceDescriptionCreate } from '../models'; - -export interface CreatePrivateSpace { - /** The key for the new space. Format: See [Space keys](https://confluence.atlassian.com/x/lqNMMQ). */ - key: string; - /** The name of the new space. */ - name: string; - description?: SpaceDescriptionCreate; -} diff --git a/src/server/parameters/createSpace.ts b/src/server/parameters/createSpace.ts deleted file mode 100644 index cc993d5e..00000000 --- a/src/server/parameters/createSpace.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { SpaceDescriptionCreate, SpacePermission } from '../models'; - -export interface CreateSpace { - /** The key for the new space. Format: See [Space keys](https://confluence.atlassian.com/x/lqNMMQ). */ - key: string; - /** The name of the new space. */ - name: string; - description?: SpaceDescriptionCreate; - /** - * The permissions for the new space. If no permissions are provided, the [Confluence default space - * permissions](https://confluence.atlassian.com/x/UAgzKw#CreateaSpace-Spacepermissions) are applied. Note that if - * permissions are provided, the space is created with only the provided set of permissions, not including the default - * space permissions. Space permissions can be modified after creation using the space permissions endpoints, and a - * private space can be created using the create private space endpoint. - */ - permissions?: SpacePermission[]; -} diff --git a/src/server/parameters/createSpaceProperty.ts b/src/server/parameters/createSpaceProperty.ts deleted file mode 100644 index 942601df..00000000 --- a/src/server/parameters/createSpaceProperty.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface CreateSpaceProperty { - /** The key of the space that the property will be created in. */ - spaceKey: string; - /** The key of the new property. */ - key: string; - value: Record; -} diff --git a/src/server/parameters/createSpacePropertyForKey.ts b/src/server/parameters/createSpacePropertyForKey.ts deleted file mode 100644 index a7d7af28..00000000 --- a/src/server/parameters/createSpacePropertyForKey.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface CreateSpacePropertyForKey { - /** The key of the space that the property will be created in. */ - spaceKey: string; - /** The key of the property to be created. */ - key: string; - value: Record; -} diff --git a/src/server/parameters/deleteContent.ts b/src/server/parameters/deleteContent.ts deleted file mode 100644 index 2e574a83..00000000 --- a/src/server/parameters/deleteContent.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface DeleteContent { - id: string | number; - /** The status of the content to be deleted */ - status?: string; -} diff --git a/src/server/parameters/deleteContentProperty.ts b/src/server/parameters/deleteContentProperty.ts deleted file mode 100644 index d117a9ce..00000000 --- a/src/server/parameters/deleteContentProperty.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface DeleteContentProperty { - /** The ID of the content that the property belongs to. */ - id: string; - /** The key of the property. */ - key: string; -} diff --git a/src/server/parameters/deleteLabel.ts b/src/server/parameters/deleteLabel.ts deleted file mode 100644 index 99df9307..00000000 --- a/src/server/parameters/deleteLabel.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DeleteLabel { - id: string | number; - labelId: string; -} diff --git a/src/server/parameters/deleteLabelWithQueryParam.ts b/src/server/parameters/deleteLabelWithQueryParam.ts deleted file mode 100644 index 15c9e341..00000000 --- a/src/server/parameters/deleteLabelWithQueryParam.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface DeleteLabelWithQueryParam { - id: string | number; - /** The name of the label to be removed from the content */ - name?: string; -} diff --git a/src/server/parameters/deleteSpace.ts b/src/server/parameters/deleteSpace.ts deleted file mode 100644 index aaf87e4f..00000000 --- a/src/server/parameters/deleteSpace.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface DeleteSpace { - spaceKey: string; -} diff --git a/src/server/parameters/deleteSpaceProperty.ts b/src/server/parameters/deleteSpaceProperty.ts deleted file mode 100644 index c4a8d4c8..00000000 --- a/src/server/parameters/deleteSpaceProperty.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface DeleteSpaceProperty { - /** The key of the space that the property is in. */ - spaceKey: string; - /** The key of the property to be deleted. */ - key: string; -} diff --git a/src/server/parameters/exportAuditRecords.ts b/src/server/parameters/exportAuditRecords.ts deleted file mode 100644 index 67c4479c..00000000 --- a/src/server/parameters/exportAuditRecords.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface ExportAuditRecords { - startDate?: string; - endDate?: string; - searchString?: string; - format?: string; -} diff --git a/src/server/parameters/getAttachments.ts b/src/server/parameters/getAttachments.ts deleted file mode 100644 index 4df055cf..00000000 --- a/src/server/parameters/getAttachments.ts +++ /dev/null @@ -1,107 +0,0 @@ -export interface GetAttachments { - id: string | number; - /** A comma separated list of properties to expand on the Attachments returned. Optional. */ - expand?: string | string[] | GetAttachments.Expand | GetAttachments.Expand[]; - /** The index of the first item within the result set that should be returned. Optional. */ - start?: number; - /** How many items should be returned after the start index. Optional. */ - limit?: number; - /** (optional) filter parameter to return only the Attachment with the matching file name. Optional. */ - filename?: string; - /** (optional) filter parameter to return only Attachments with a matching Media-Type. Optional. */ - mediaType?: string; -} - -export namespace GetAttachments { - export enum Expand { - /** - * Returns whether the content has attachments, comments, or child pages. Use this if you only need to check whether - * the content has children of a particular type. - */ - AllChildTypes = 'childTypes.all', - /** Returns whether the content has attachments. */ - AttachmentChildType = 'childTypes.attachment', - /** Returns whether the content has comments. */ - CommentChildType = 'childTypes.comment', - /** Returns whether the content has child pages. */ - PageChildType = 'childTypes.page', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Container = 'container', - /** - * Returns information about the current user in relation to the content, including when they last viewed it, - * modified it, contributed to it, or added it as a favorite. - */ - CurrentUserMetadata = 'metadata.currentuser', - /** Returns content properties that have been set via the Confluence REST API. */ - PropertiesMetadata = 'metadata.properties', - /** Returns the labels that have been added to the content. */ - LabelsMetadata = 'metadata.labels', - /** This property is only used by Atlassian. */ - FrontendMetadata = 'metadata.frontend', - /** Returns the operations for the content, which are used when setting permissions. */ - Operations = 'operations', - /** Returns pages that are descendants at the level immediately below the content. */ - PageChildren = 'children.page', - /** Returns all attachments for the content. */ - AttachmentChildren = 'children.attachment', - /** Returns all comments on the content. */ - CommentChildren = 'children.comment', - /** Returns the users that have permission to read the content. */ - ReadUserRestriction = 'restrictions.read.restrictions.user', - /** - * Returns the groups that have permission to read the content. Note that this may return deleted groups, because - * deleting a group doesn't remove associated restrictions. - */ - ReadGroupRestriction = 'restrictions.read.restrictions.group', - /** Returns the users that have permission to update the content. */ - UpdateUserRestriction = 'restrictions.update.restrictions.user', - /** - * Returns the groups that have permission to update the content. Note that this may return deleted groups because - * deleting a group doesn't remove associated restrictions. - */ - UpdateGroupRestriction = 'restrictions.update.restrictions.group', - /** Returns the history of the content, including the date it was created. */ - History = 'history', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - LastUpdated = 'history.lastUpdated', - /** Returns information about the update prior to the current content update. */ - PreviousVersion = 'history.previousVersion', - /** Returns all of the users who have contributed to the content. */ - Contributors = 'history.contributors', - /** Returns information about the update after to the current content update. */ - NextVersion = 'history.nextVersion', - /** Returns the parent page, if the content is a page. */ - Ancestors = 'ancestors', - /** - * Returns the body of the content in different formats, including the editor format, view format, and export - * format. - */ - Body = 'body', - /** - * Returns information about the most recent update of the content, including who updated it and when it was - * updated. - */ - Version = 'version', - /** Returns pages that are descendants at any level below the content. */ - PageDescendant = 'descendants.page', - /** Returns all attachments for the content, same as `children.attachment`. */ - AttachmentDescendant = 'descendants.attachment', - /** Returns all comments on the content, same as `children.comment`. */ - CommentDescendant = 'descendants.comment', - /** - * Returns the space that the content is in. This is the same as the information returned by [Get - * space](https://developer.atlassian.com/cloud/confluence/rest/api-group-content---attachments/). - */ - Space = 'space', - /** Returns inline comment-specific properties. */ - InlineProperties = 'extensions.inlineProperties', - /** Returns the resolution status of each comment. */ - Resolution = 'extensions.resolution', - } -} diff --git a/src/server/parameters/getAuditRecords.ts b/src/server/parameters/getAuditRecords.ts deleted file mode 100644 index c414c099..00000000 --- a/src/server/parameters/getAuditRecords.ts +++ /dev/null @@ -1,13 +0,0 @@ -export interface GetAuditRecords { - startDate?: string; - endDate?: string; - /** Where to start within results set */ - start?: number; - /** - * The maximum results to fetch - * - * @default 1000 - */ - limit?: number; - searchString?: string; -} diff --git a/src/server/parameters/getAuditRecordsSince.ts b/src/server/parameters/getAuditRecordsSince.ts deleted file mode 100644 index 657176df..00000000 --- a/src/server/parameters/getAuditRecordsSince.ts +++ /dev/null @@ -1,11 +0,0 @@ -export interface GetAuditRecordsSince { - /** The amount of time periods */ - number?: {}; - /** The units to use for the time periods eg. 'days', 'months' etc */ - units?: string; - /** Where to start within results set */ - start?: number; - /** The maximum results to fetch */ - limit?: number; - searchString?: string; -} diff --git a/src/server/parameters/getContent.ts b/src/server/parameters/getContent.ts deleted file mode 100644 index 4e7abb8b..00000000 --- a/src/server/parameters/getContent.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface GetContent { - /** The content type to return. Default value: page. Valid values: page, blogpost. */ - type?: string; - /** The space key to find content under. */ - spaceKey?: string; - /** The title of the page to find. Required for page type. */ - title?: string; - /** - * List of statuses the content to be found is in. Defaults to current is not specified. If set to 'any', content in - * 'current' and 'trashed' status will be fetched. Does not support 'historical' status for now. - */ - status?: string; - /** The posting day of the blog post. Required for blogpost type. Format: yyyy-mm-dd. Example: 2013-02-13 */ - postingDay?: string; - /** A comma separated list of properties to expand on the content. Default value: history,space,version. */ - expand?: string; - /** The start point of the collection to return */ - start?: number; - /** The limit of the number of items to return, this may be restricted by fixed system limits */ - limit?: number; -} diff --git a/src/server/parameters/getContentById.ts b/src/server/parameters/getContentById.ts deleted file mode 100644 index 97dc11c0..00000000 --- a/src/server/parameters/getContentById.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface GetContentById { - id: string | number; - /** List of Content statuses to filter results on. Default value: [current] */ - status?: string; - version?: number; - /** - * A comma separated list of properties to expand on the content. Default value: history,space,version We can also - * specify some extensions such as extensions.inlineProperties (for getting inline comment-specific properties) or - * extensions.resolution for the resolution status of each comment in the results - */ - expand?: string; -} diff --git a/src/server/parameters/getContentByType.ts b/src/server/parameters/getContentByType.ts deleted file mode 100644 index 1b828135..00000000 --- a/src/server/parameters/getContentByType.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface GetContentByType { - spaceKey: string; - type: string; - /** - * A string indicating if all content, or just the root content of the space is returned. Default value: all. Valid - * values: all, root. - */ - depth?: string; - /** A comma separated list of properties to expand on each piece of content retrieved */ - expand?: string; - /** The start point of the collection to return */ - start?: number; - /** The limit of the number of labels to return, this may be restricted by fixed system limits */ - limit?: number; -} diff --git a/src/server/parameters/getContentChildren.ts b/src/server/parameters/getContentChildren.ts deleted file mode 100644 index 18366262..00000000 --- a/src/server/parameters/getContentChildren.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface GetContentChildren { - id: string | number; - /** A comma separated list of properties to expand on the children */ - expand?: string; - /** An int representing the version of the content to retrieve children for */ - parentVersion?: number; - start?: number; - limit?: number; -} diff --git a/src/server/parameters/getContentChildrenByType.ts b/src/server/parameters/getContentChildrenByType.ts deleted file mode 100644 index b69bdb70..00000000 --- a/src/server/parameters/getContentChildrenByType.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface GetContentChildrenByType { - id: string | number; - type: string; - /** A comma separated list of properties to expand on the children */ - expand?: string; - /** An int representing the version of the content to retrieve children for */ - parentVersion?: number; - /** (optional, default: 0) the index of the first item within the result set that should be returned */ - start?: number; - /** (optional, default: site limit) how many items should be returned after the start index */ - limit?: number; -} diff --git a/src/server/parameters/getContentComments.ts b/src/server/parameters/getContentComments.ts deleted file mode 100644 index a03ae7b2..00000000 --- a/src/server/parameters/getContentComments.ts +++ /dev/null @@ -1,22 +0,0 @@ -export interface GetContentComments { - id: string | number; - /** - * A comma separated list of properties to expand on the children. We can also specify some extensions such as - * extensions.inlineProperties (for getting inline comment-specific properties) or extensions.resolution for the - * resolution status of each comment in the results - */ - expand?: string; - /** An int representing the version of the content to retrieve children for */ - parentVersion?: number; - /** (optional, default: 0) the index of the first item within the result set that should be returned */ - start?: number; - /** (optional, default: site limit) how many items should be returned after the start index */ - limit?: number; - /** - * (optional, default: "" means all) the location of the comments. Possible values are: "inline", "footer", - * "resolved". You can define multiple location params. The results will be the comments matched by any location. - */ - location?: string; - /** (optional, default: "") the depth of the comments. Possible values are: "" (ROOT only), "all" */ - depth?: string; -} diff --git a/src/server/parameters/getContentDescendants.ts b/src/server/parameters/getContentDescendants.ts deleted file mode 100644 index ebf5587c..00000000 --- a/src/server/parameters/getContentDescendants.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetContentDescendants { - id: string | number; - /** A comma separated list of properties to expand on the descendants */ - expand?: string; -} diff --git a/src/server/parameters/getContentDescendantsOfType.ts b/src/server/parameters/getContentDescendantsOfType.ts deleted file mode 100644 index 3de96041..00000000 --- a/src/server/parameters/getContentDescendantsOfType.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface GetContentDescendantsOfType { - id: string | number; - type: string; - /** A comma separated list of properties to expand on the descendants */ - expand?: string; - /** (optional, default: 0) the index of the first item within the result set that should be returned */ - start?: number; - /** (optional, default: site limit) how many items should be returned after the start index */ - limit?: number; -} diff --git a/src/server/parameters/getContentForSpace.ts b/src/server/parameters/getContentForSpace.ts deleted file mode 100644 index 911eb1b6..00000000 --- a/src/server/parameters/getContentForSpace.ts +++ /dev/null @@ -1,14 +0,0 @@ -export interface GetContentForSpace { - spaceKey: string; - /** - * A string indicating if all content, or just the root content of the space is returned. Default value: all. Valid - * values: all, root. - */ - depth?: string; - /** A comma separated list of properties to expand on each piece of content retrieved */ - expand?: string; - /** The start point of the collection to return */ - start?: number; - /** The limit of the number of labels to return, this may be restricted by fixed system limits */ - limit?: number; -} diff --git a/src/server/parameters/getContentLabels.ts b/src/server/parameters/getContentLabels.ts deleted file mode 100644 index 93fd78b2..00000000 --- a/src/server/parameters/getContentLabels.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface GetContentLabels { - id: string | number; - /** The prefixes to filter the labels with Label.Prefix */ - prefix?: string; - /** The start point of the collection to return */ - start?: number; - /** The limit of the number of labels to return, this may be restricted by fixed system limits */ - limit?: number; -} diff --git a/src/server/parameters/getContentProperties.ts b/src/server/parameters/getContentProperties.ts deleted file mode 100644 index 627cf690..00000000 --- a/src/server/parameters/getContentProperties.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface GetContentProperties { - id: string | number; - /** A comma separated list of properties to expand on the content properties. Default value: version. */ - expand?: string; - /** The start point of the collection to return */ - start?: number; - /** The limit of the number of items to return, this may be restricted by fixed system limits */ - limit?: number; -} diff --git a/src/server/parameters/getContentProperty.ts b/src/server/parameters/getContentProperty.ts deleted file mode 100644 index f4967453..00000000 --- a/src/server/parameters/getContentProperty.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface GetContentProperty { - id: string | number; - key: string; - /** A comma separated list of properties to expand on the content properties. Default value: version. */ - expand?: string; -} diff --git a/src/server/parameters/getContentWatchStatus.ts b/src/server/parameters/getContentWatchStatus.ts deleted file mode 100644 index 9f2b55eb..00000000 --- a/src/server/parameters/getContentWatchStatus.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface GetContentWatchStatus { - contentId: string; - /** Userkey of the user to check for watching state */ - key?: string; - /** Username of the user to check for watching state */ - username?: string; -} diff --git a/src/server/parameters/getCurrentUser.ts b/src/server/parameters/getCurrentUser.ts deleted file mode 100644 index 469b78a8..00000000 --- a/src/server/parameters/getCurrentUser.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface GetCurrentUser { - expand?: string; -} diff --git a/src/server/parameters/getGroup.ts b/src/server/parameters/getGroup.ts deleted file mode 100644 index 36771456..00000000 --- a/src/server/parameters/getGroup.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface GetGroup { - groupName: string; - expand?: string; -} diff --git a/src/server/parameters/getGroups.ts b/src/server/parameters/getGroups.ts deleted file mode 100644 index f3ecef72..00000000 --- a/src/server/parameters/getGroups.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface GetGroups { - key?: string; - username?: string; - expand?: string; - start?: number; - limit?: number; -} diff --git a/src/server/parameters/getHistory.ts b/src/server/parameters/getHistory.ts deleted file mode 100644 index 9160452a..00000000 --- a/src/server/parameters/getHistory.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetHistory { - id: string | number; - /** The properties on content history to expand */ - expand?: string; -} diff --git a/src/server/parameters/getMacroBodyByHash.ts b/src/server/parameters/getMacroBodyByHash.ts deleted file mode 100644 index 24e6d9a6..00000000 --- a/src/server/parameters/getMacroBodyByHash.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetMacroBodyByHash { - id: string | number; - version: string; - hash: string; -} diff --git a/src/server/parameters/getMacroBodyByMacroId.ts b/src/server/parameters/getMacroBodyByMacroId.ts deleted file mode 100644 index fee437ea..00000000 --- a/src/server/parameters/getMacroBodyByMacroId.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetMacroBodyByMacroId { - id: string | number; - version: string; - macroId: string; -} diff --git a/src/server/parameters/getMembers.ts b/src/server/parameters/getMembers.ts deleted file mode 100644 index c2381edf..00000000 --- a/src/server/parameters/getMembers.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface GetMembers { - groupName: string; - expand?: string; - /** The start point of the collection to return */ - start?: number; - /** The limit of the number of items to return, this may be restricted by fixed system limits */ - limit?: number; -} diff --git a/src/server/parameters/getRestrictionsByOperation.ts b/src/server/parameters/getRestrictionsByOperation.ts deleted file mode 100644 index faeb8ce5..00000000 --- a/src/server/parameters/getRestrictionsByOperation.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetRestrictionsByOperation { - id: string | number; - /** A comma separated list of properties to expand on the content properties. Default value: group. */ - expand?: string; -} diff --git a/src/server/parameters/getRestrictionsForOperation.ts b/src/server/parameters/getRestrictionsForOperation.ts deleted file mode 100644 index 68545eb0..00000000 --- a/src/server/parameters/getRestrictionsForOperation.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface GetRestrictionsForOperation { - id: string | number; - operationKey: string; - /** A comma separated list of properties to expand on the content properties. Default value: group. */ - expand?: string; - /** Pagination start */ - start?: number; - /** Pagination limit */ - limit?: number; -} diff --git a/src/server/parameters/getSpace.ts b/src/server/parameters/getSpace.ts deleted file mode 100644 index aa862f69..00000000 --- a/src/server/parameters/getSpace.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetSpace { - spaceKey: string; - /** A comma separated list of properties to expand on the space */ - expand?: string; -} diff --git a/src/server/parameters/getSpaceProperties.ts b/src/server/parameters/getSpaceProperties.ts deleted file mode 100644 index 8702e781..00000000 --- a/src/server/parameters/getSpaceProperties.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface GetSpaceProperties { - spaceKey: string; - /** A comma separated list of properties to expand on the space properties. Default value: version. */ - expand?: string; - start: number; - limit: number; -} diff --git a/src/server/parameters/getSpaceProperty.ts b/src/server/parameters/getSpaceProperty.ts deleted file mode 100644 index 9d32fc44..00000000 --- a/src/server/parameters/getSpaceProperty.ts +++ /dev/null @@ -1,14 +0,0 @@ -export interface GetSpaceProperty { - /** The key of the space that the property is in. */ - spaceKey: string; - /** The key of the space property. */ - key: string; - /** - * A multi-value parameter indicating which properties of the space property to expand. By default, the `version` - * object is expanded. - * - * - `version` returns information about the version of the content. - * - `space` returns the space that the properties are in. - */ - expand?: string[]; -} diff --git a/src/server/parameters/getSpaces.ts b/src/server/parameters/getSpaces.ts deleted file mode 100644 index 7556704d..00000000 --- a/src/server/parameters/getSpaces.ts +++ /dev/null @@ -1,18 +0,0 @@ -export interface GetSpaces { - /** A list of space keys */ - spaceKey?: string; - /** Filter the list of spaces returned by type (global, personal) */ - type?: string; - /** Filter the list of spaces returned by status (current, archived) */ - status?: string; - /** Filter the list of spaces returned by label */ - label?: string; - /** Filter the list of spaces returned by favourites */ - favourite?: boolean; - /** A comma separated list of properties to expand on the spaces */ - expand?: string; - /** The start point of the collection to return */ - start?: number; - /** The limit of the number of spaces to return, this may be restricted by fixed system limits */ - limit?: number; -} diff --git a/src/server/parameters/getTask.ts b/src/server/parameters/getTask.ts deleted file mode 100644 index 4e6788c6..00000000 --- a/src/server/parameters/getTask.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetTask { - id: string | number; - /** A comma separated list of properties to expand on the task */ - expand?: string; -} diff --git a/src/server/parameters/getTasks.ts b/src/server/parameters/getTasks.ts deleted file mode 100644 index 0ec4179b..00000000 --- a/src/server/parameters/getTasks.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface GetTasks { - /** A comma separated list of properties to expand on the tasks */ - expand?: string; - start?: number; - limit?: number; -} diff --git a/src/server/parameters/getUser.ts b/src/server/parameters/getUser.ts deleted file mode 100644 index 4c971033..00000000 --- a/src/server/parameters/getUser.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface GetUser { - /** Userkey of the user to request from this resource */ - key?: string; - /** Username of the user to request from this resource */ - username?: string; - /** Properties to expand on the user */ - expand?: string; -} diff --git a/src/server/parameters/index.ts b/src/server/parameters/index.ts deleted file mode 100644 index 51152510..00000000 --- a/src/server/parameters/index.ts +++ /dev/null @@ -1,64 +0,0 @@ -export * from './addContentWatcher'; -export * from './addLabelsToContent'; -export * from './addSpaceWatch'; -export * from './convertContentBody'; -export * from './createAttachments'; -export * from './createAuditRecord'; -export * from './createContent'; -export * from './createContentProperty'; -export * from './createContentPropertyForKey'; -export * from './createPrivateSpace'; -export * from './createSpace'; -export * from './createSpaceProperty'; -export * from './createSpacePropertyForKey'; -export * from './deleteContent'; -export * from './deleteContentProperty'; -export * from './deleteLabel'; -export * from './deleteLabelWithQueryParam'; -export * from './deleteSpace'; -export * from './deleteSpaceProperty'; -export * from './exportAuditRecords'; -export * from './getAttachments'; -export * from './getAuditRecords'; -export * from './getAuditRecordsSince'; -export * from './getContent'; -export * from './getContentById'; -export * from './getContentByType'; -export * from './getContentChildren'; -export * from './getContentChildrenByType'; -export * from './getContentComments'; -export * from './getContentDescendants'; -export * from './getContentDescendantsOfType'; -export * from './getContentForSpace'; -export * from './getContentLabels'; -export * from './getContentProperties'; -export * from './getContentProperty'; -export * from './getContentWatchStatus'; -export * from './getCurrentUser'; -export * from './getGroup'; -export * from './getGroups'; -export * from './getHistory'; -export * from './getMacroBodyByHash'; -export * from './getMacroBodyByMacroId'; -export * from './getMembers'; -export * from './getRestrictionsByOperation'; -export * from './getRestrictionsForOperation'; -export * from './getSpace'; -export * from './getSpaceProperties'; -export * from './getSpaceProperty'; -export * from './getSpaces'; -export * from './getTask'; -export * from './getTasks'; -export * from './getUser'; -export * from './isWatchingSpace'; -export * from './publishLegacyDraft'; -export * from './publishSharedDraft'; -export * from './removeContentWatcher'; -export * from './removeSpaceWatch'; -export * from './searchContent'; -export * from './updateAttachmentData'; -export * from './updateAttachmentProperties'; -export * from './updateContent'; -export * from './updateContentProperty'; -export * from './updateSpace'; -export * from './updateSpaceProperty'; diff --git a/src/server/parameters/isWatchingSpace.ts b/src/server/parameters/isWatchingSpace.ts deleted file mode 100644 index 28b5ebf7..00000000 --- a/src/server/parameters/isWatchingSpace.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface IsWatchingSpace { - spaceKey: string; - /** Userkey of the user to check for watching state */ - key?: string; - /** Username of the user to check for watching state */ - username?: string; -} diff --git a/src/server/parameters/publishLegacyDraft.ts b/src/server/parameters/publishLegacyDraft.ts deleted file mode 100644 index ffa3f590..00000000 --- a/src/server/parameters/publishLegacyDraft.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface PublishLegacyDraft { - draftId: string; - status?: string; - expand?: string; -} diff --git a/src/server/parameters/publishSharedDraft.ts b/src/server/parameters/publishSharedDraft.ts deleted file mode 100644 index 3e9563fa..00000000 --- a/src/server/parameters/publishSharedDraft.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface PublishSharedDraft { - draftId: string; - status?: string; - expand?: string; -} diff --git a/src/server/parameters/removeContentWatcher.ts b/src/server/parameters/removeContentWatcher.ts deleted file mode 100644 index 6312a878..00000000 --- a/src/server/parameters/removeContentWatcher.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface RemoveContentWatcher { - contentId: string; - /** Userkey of the user to delete the watcher for */ - key?: string; - /** Username of the user to delete the watcher for */ - username?: string; -} diff --git a/src/server/parameters/removeSpaceWatch.ts b/src/server/parameters/removeSpaceWatch.ts deleted file mode 100644 index 1134fa42..00000000 --- a/src/server/parameters/removeSpaceWatch.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface RemoveSpaceWatch { - spaceKey: string; - /** Userkey of the user to delete the watcher for */ - key?: string; - /** Username of the user to delete the watcher for */ - username?: string; -} diff --git a/src/server/parameters/searchContent.ts b/src/server/parameters/searchContent.ts deleted file mode 100644 index 7dcc52a2..00000000 --- a/src/server/parameters/searchContent.ts +++ /dev/null @@ -1,19 +0,0 @@ -export interface SearchContent { - /** The CQL query see advanced searching in confluence using CQL */ - cql?: string; - /** - * The execution context for CQL functions, provides current space key and content id. If this is not provided some - * CQL functions will not be available. - */ - cqlcontext?: string; - /** The excerpt strategy to apply to the result, one of : indexed, highlight, none. This defaults to highlight. */ - excerpt?: string; - /** The properties to expand on the search result, this may cause database requests for some properties */ - expand?: string; - /** The start point of the collection to return */ - start?: number; - /** The limit of the number of items to return, this may be restricted by fixed system limits */ - limit?: number; - /** Whether to include content in archived spaces in the result, this defaults to false */ - includeArchivedSpaces?: boolean; -} diff --git a/src/server/parameters/updateAttachmentData.ts b/src/server/parameters/updateAttachmentData.ts deleted file mode 100644 index dbb0b70a..00000000 --- a/src/server/parameters/updateAttachmentData.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface UpdateAttachmentData { - /** The ID of the content that the attachment is attached to. */ - id: string; - /** The ID of the attachment to update. */ - attachmentId: string; - /** If `minorEdit` is set to 'true', no notification email or activity stream will be generated for the change. */ - minorEdit?: boolean; - /** A comment to be added to the attachment */ - comment?: string; - /** The actual file content to upload */ - file: Buffer; -} diff --git a/src/server/parameters/updateAttachmentProperties.ts b/src/server/parameters/updateAttachmentProperties.ts deleted file mode 100644 index 02f95d49..00000000 --- a/src/server/parameters/updateAttachmentProperties.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AttachmentUpdate } from '../models'; - -export interface UpdateAttachmentProperties extends AttachmentUpdate { - /** The ID of the content that the attachment is attached to. */ - id: string; - /** The ID of the attachment to update. */ - attachmentId: string; -} diff --git a/src/server/parameters/updateContent.ts b/src/server/parameters/updateContent.ts deleted file mode 100644 index 22ad3af7..00000000 --- a/src/server/parameters/updateContent.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface UpdateContent { - [key: string]: any; - - id: string | number; - /** The existing status of the content to be updated. */ - status?: string; - conflictPolicy?: string; -} diff --git a/src/server/parameters/updateContentProperty.ts b/src/server/parameters/updateContentProperty.ts deleted file mode 100644 index 6922e599..00000000 --- a/src/server/parameters/updateContentProperty.ts +++ /dev/null @@ -1,17 +0,0 @@ -export interface UpdateContentProperty { - id: string | number; - key: string; - - /** The value of the content property. This can be empty or a complex object. */ - value: any; - /** The version number of the property. */ - version: { - /** - * The new version for the updated content property. Set this to the current version number incremented by one. To - * get the current version number, use 'Get content property' and retrieve `version.number`. - */ - number: number; - /** If `minorEdit` is set to 'true', no notification email or activity stream will be generated for the change. */ - minorEdit?: boolean; - }; -} diff --git a/src/server/parameters/updateSpace.ts b/src/server/parameters/updateSpace.ts deleted file mode 100644 index 484b36c4..00000000 --- a/src/server/parameters/updateSpace.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { SpaceDescriptionCreate } from '../models'; - -export interface UpdateSpace { - /** The key of the space to update. */ - spaceKey: string; - /** The name of the space. */ - name?: string; - description?: SpaceDescriptionCreate; - /** The page to set as the homepage of the space. */ - homepage?: { - /** The ID of the page. */ - id: string; - }; -} diff --git a/src/server/parameters/updateSpaceProperty.ts b/src/server/parameters/updateSpaceProperty.ts deleted file mode 100644 index 25f98034..00000000 --- a/src/server/parameters/updateSpaceProperty.ts +++ /dev/null @@ -1,17 +0,0 @@ -export interface UpdateSpaceProperty { - /** The key of the space that the property is in. */ - spaceKey: string; - /** The key of the property to be updated. */ - key: string; - value: Record; - /** The version number of the property. */ - version: { - /** - * The new version for the updated space property. Set this to the current version number incremented by one. To get - * the current version number, use 'Get space property' and retrieve `version.number`. - */ - number: number; - /** If `minorEdit` is set to 'true', no notification email or activity stream will be generated for the change. */ - minorEdit?: boolean; - }; -} diff --git a/src/server/search.ts b/src/server/search.ts deleted file mode 100644 index 1b48476e..00000000 --- a/src/server/search.ts +++ /dev/null @@ -1,41 +0,0 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { Pagination } from '../pagination'; -import { RequestConfig } from '../requestConfig'; - -export class Search { - constructor(private client: Client) {} - - /** Search for entities in Confluence using the Confluence Query Language (CQL) */ - async search>( - parameters: Parameters.SearchContent | undefined, - callback: Callback, - ): Promise; - /** Search for entities in Confluence using the Confluence Query Language (CQL) */ - async search>( - parameters?: Parameters.SearchContent, - callback?: never, - ): Promise; - async search>( - parameters?: Parameters.SearchContent, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/search', - method: 'GET', - params: { - cql: parameters?.cql, - cqlcontext: parameters?.cqlcontext, - excerpt: parameters?.excerpt, - expand: parameters?.expand, - start: parameters?.start, - limit: parameters?.limit, - includeArchivedSpaces: parameters?.includeArchivedSpaces, - }, - }; - - return this.client.sendRequest(config, callback); - } -} diff --git a/src/server/space.ts b/src/server/space.ts deleted file mode 100644 index fc879ba1..00000000 --- a/src/server/space.ts +++ /dev/null @@ -1,363 +0,0 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { Pagination } from '../pagination'; -import { RequestConfig } from '../requestConfig'; - -export class Space { - constructor(private client: Client) {} - - /** Returns information about a number of spaces. */ - async getSpaces>( - parameters: Parameters.GetSpaces | undefined, - callback: Callback, - ): Promise; - /** Returns information about a number of spaces. */ - async getSpaces>(parameters?: Parameters.GetSpaces, callback?: never): Promise; - async getSpaces>( - parameters?: Parameters.GetSpaces, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/space', - method: 'GET', - params: { - spaceKey: parameters?.spaceKey, - type: parameters?.type, - status: parameters?.status, - label: parameters?.label, - favourite: parameters?.favourite, - expand: parameters?.expand, - start: parameters?.start, - limit: parameters?.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Creates a new Space. - * - * The incoming Space does not include an id, but must include a Key and Name, and should include a Description. - */ - async createSpace(parameters: Parameters.CreateSpace, callback: Callback): Promise; - /** - * Creates a new Space. - * - * The incoming Space does not include an id, but must include a Key and Name, and should include a Description. - */ - async createSpace(parameters: Parameters.CreateSpace, callback?: never): Promise; - async createSpace(parameters: Parameters.CreateSpace, callback?: Callback): Promise { - const config: RequestConfig = { - url: '/rest/api/space', - method: 'POST', - data: { - key: parameters.key, - name: parameters.name, - description: parameters.description, - permissions: parameters.permissions, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Creates a new private Space, viewable only by its creator. - * - * The incoming Space does not include an id, but must include a Key and Name, and should include a Description. - */ - async createPrivateSpace( - parameters: Parameters.CreatePrivateSpace, - callback: Callback, - ): Promise; - /** - * Creates a new private Space, viewable only by its creator. - * - * The incoming Space does not include an id, but must include a Key and Name, and should include a Description. - */ - async createPrivateSpace(parameters: Parameters.CreatePrivateSpace, callback?: never): Promise; - async createPrivateSpace( - parameters: Parameters.CreatePrivateSpace, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/space/_private', - method: 'POST', - data: { - key: parameters.key, - name: parameters.name, - description: parameters.description, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns information about a space. */ - async getSpace(parameters: Parameters.GetSpace, callback: Callback): Promise; - /** Returns information about a space. */ - async getSpace(parameters: Parameters.GetSpace, callback?: never): Promise; - async getSpace(parameters: Parameters.GetSpace, callback?: Callback): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}`, - method: 'GET', - params: { - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Updates a Space. Currently only the Space name, description and homepage can be updated. */ - async updateSpace(parameters: Parameters.UpdateSpace, callback: Callback): Promise; - /** Updates a Space. Currently only the Space name, description and homepage can be updated. */ - async updateSpace(parameters: Parameters.UpdateSpace, callback?: never): Promise; - async updateSpace(parameters: Parameters.UpdateSpace, callback?: Callback): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}`, - method: 'PUT', - data: { - name: parameters.name, - description: parameters.description, - homepage: parameters.homepage, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Deletes a Space. - * - * The space is deleted in a long running task, so the space cannot be considered deleted when this resource returns. - * Clients can follow the status link in the response and poll it until the task completes. Responses - */ - async deleteSpace(parameters: Parameters.DeleteSpace, callback: Callback): Promise; - /** - * Deletes a Space. - * - * The space is deleted in a long running task, so the space cannot be considered deleted when this resource returns. - * Clients can follow the status link in the response and poll it until the task completes. Responses - */ - async deleteSpace(parameters: Parameters.DeleteSpace, callback?: never): Promise; - async deleteSpace( - parameters: Parameters.DeleteSpace, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}`, - method: 'DELETE', - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns the content in this given space */ - async getContentForSpace>( - parameters: Parameters.GetContentForSpace, - callback: Callback, - ): Promise; - /** Returns the content in this given space */ - async getContentForSpace>( - parameters: Parameters.GetContentForSpace, - callback?: never, - ): Promise; - async getContentForSpace>( - parameters: Parameters.GetContentForSpace, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}/content`, - method: 'GET', - params: { - depth: parameters.depth, - expand: parameters.expand, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns the content in this given space with the given type */ - async getContentByType>( - parameters: Parameters.GetContentByType, - callback: Callback, - ): Promise; - /** Returns the content in this given space with the given type */ - async getContentByType>( - parameters: Parameters.GetContentByType, - callback?: never, - ): Promise; - async getContentByType>( - parameters: Parameters.GetContentByType, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}/content/${parameters.type}`, - method: 'GET', - params: { - depth: parameters.depth, - expand: parameters.expand, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns a paginated list of space properties. */ - async getSpaceProperties>( - parameters: Parameters.GetSpaceProperties, - callback: Callback, - ): Promise; - /** Returns a paginated list of space properties. */ - async getSpaceProperties>( - parameters: Parameters.GetSpaceProperties, - callback?: never, - ): Promise; - async getSpaceProperties>( - parameters: Parameters.GetSpaceProperties, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}/property`, - method: 'GET', - params: { - expand: parameters.expand, - start: parameters.start, - limit: parameters.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Creates a new space property. */ - async createSpaceProperty( - parameters: Parameters.CreateSpaceProperty, - callback: Callback, - ): Promise; - /** Creates a new space property. */ - async createSpaceProperty( - parameters: Parameters.CreateSpaceProperty, - callback?: never, - ): Promise; - async createSpaceProperty( - parameters: Parameters.CreateSpaceProperty, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}/property`, - method: 'POST', - data: { - key: parameters.key, - value: parameters.value, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Returns a paginated list of space properties. */ - async getSpaceProperty( - parameters: Parameters.GetSpaceProperty, - callback: Callback, - ): Promise; - /** Returns a paginated list of space properties. */ - async getSpaceProperty( - parameters: Parameters.GetSpaceProperty, - callback?: never, - ): Promise; - async getSpaceProperty( - parameters: Parameters.GetSpaceProperty, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}/property/${parameters.key}`, - method: 'GET', - params: { - expand: parameters.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Creates a new space property. */ - async createSpacePropertyForKey( - parameters: Parameters.CreateSpacePropertyForKey, - callback: Callback, - ): Promise; - /** Creates a new space property. */ - async createSpacePropertyForKey( - parameters: Parameters.CreateSpacePropertyForKey, - callback?: never, - ): Promise; - async createSpacePropertyForKey( - parameters: Parameters.CreateSpacePropertyForKey, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}/property/${parameters.key}`, - method: 'POST', - data: { - value: parameters.value, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Updates a space property. The body contains the representation of the space property. Must include new version - * number. If the given version number is 1, attempts to create a new space property, just like - * {@link #create(String, com.atlassian.confluence.api.model.content.JsonSpaceProperty)}. - */ - async updateSpaceProperty( - parameters: Parameters.UpdateSpaceProperty, - callback: Callback, - ): Promise; - /** - * Updates a space property. The body contains the representation of the space property. Must include new version - * number. If the given version number is 1, attempts to create a new space property, just like - * {@link #create(String, com.atlassian.confluence.api.model.content.JsonSpaceProperty)}. - */ - async updateSpaceProperty( - parameters: Parameters.UpdateSpaceProperty, - callback?: never, - ): Promise; - async updateSpaceProperty( - parameters: Parameters.UpdateSpaceProperty, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}/property/${parameters.key}`, - method: 'PUT', - }; - - return this.client.sendRequest(config, callback); - } - - /** Deletes a space property. */ - async deleteSpaceProperty(parameters: Parameters.DeleteSpaceProperty, callback: Callback): Promise; - /** Deletes a space property. */ - async deleteSpaceProperty(parameters: Parameters.DeleteSpaceProperty, callback?: never): Promise; - async deleteSpaceProperty( - parameters: Parameters.DeleteSpaceProperty, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/space/${parameters.spaceKey}/property/${parameters.key}`, - method: 'DELETE', - }; - - return this.client.sendRequest(config, callback); - } -} diff --git a/src/server/user.ts b/src/server/user.ts deleted file mode 100644 index ddbbe1c9..00000000 --- a/src/server/user.ts +++ /dev/null @@ -1,290 +0,0 @@ -import * as Models from './models'; -import * as Parameters from './parameters'; -import { Callback } from '../callback'; -import { Client } from '../clients'; -import { Pagination } from '../pagination'; -import { RequestConfig } from '../requestConfig'; - -export class User { - constructor(private client: Client) {} - - /** Get information about a user identified by either user key or username. */ - async getUser(parameters: Parameters.GetUser | undefined, callback: Callback): Promise; - /** Get information about a user identified by either user key or username. */ - async getUser(parameters?: Parameters.GetUser, callback?: never): Promise; - async getUser(parameters?: Parameters.GetUser, callback?: Callback): Promise { - const config: RequestConfig = { - url: '/rest/api/user', - method: 'GET', - params: { - key: parameters?.key, - username: parameters?.username, - expand: parameters?.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Get information about the how anonymous is represented in confluence */ - async getAnonymousUser(callback: Callback): Promise; - /** Get information about the how anonymous is represented in confluence */ - async getAnonymousUser(callback?: never): Promise; - async getAnonymousUser(callback?: Callback): Promise { - const config: RequestConfig = { - url: '/rest/api/user/anonymous', - method: 'GET', - }; - - return this.client.sendRequest(config, callback); - } - - /** Get information about the current logged-in user. */ - async getCurrentUser( - parameters: Parameters.GetCurrentUser | undefined, - callback: Callback, - ): Promise; - /** Get information about the current logged-in user. */ - async getCurrentUser(parameters?: Parameters.GetCurrentUser, callback?: never): Promise; - async getCurrentUser( - parameters?: Parameters.GetCurrentUser, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/user/current', - method: 'GET', - params: { - expand: parameters?.expand, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** Get a paginated collection of groups that the given user is a member of */ - async getGroupMembershipsForUser>( - parameters: Parameters.GetGroups | undefined, - callback: Callback, - ): Promise; - /** Get a paginated collection of groups that the given user is a member of */ - async getGroupMembershipsForUser>( - parameters?: Parameters.GetGroups, - callback?: never, - ): Promise; - async getGroupMembershipsForUser>( - parameters?: Parameters.GetGroups, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: '/rest/api/user/memberof', - method: 'GET', - params: { - key: parameters?.key, - username: parameters?.username, - expand: parameters?.expand, - start: parameters?.start, - limit: parameters?.limit, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Get information about whether a user is watching a specified content. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async getContentWatchStatus( - parameters: Parameters.GetContentWatchStatus, - callback: Callback, - ): Promise; - /** - * Get information about whether a user is watching a specified content. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async getContentWatchStatus( - parameters: Parameters.GetContentWatchStatus, - callback?: never, - ): Promise; - async getContentWatchStatus( - parameters: Parameters.GetContentWatchStatus, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/user/watch/content/${parameters.contentId}`, - method: 'GET', - params: { - key: parameters.key, - username: parameters.username, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Create a new watcher for the given user and content id. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async addContentWatcher(parameters: Parameters.AddContentWatcher, callback: Callback): Promise; - /** - * Create a new watcher for the given user and content id. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async addContentWatcher(parameters: Parameters.AddContentWatcher, callback?: never): Promise; - async addContentWatcher( - parameters: Parameters.AddContentWatcher, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/user/watch/content/${parameters.contentId}`, - method: 'POST', - params: { - key: parameters.key, - username: parameters.username, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Delete an existing watcher for the given user and content id. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async removeContentWatcher( - parameters: Parameters.RemoveContentWatcher, - callback: Callback, - ): Promise; - /** - * Delete an existing watcher for the given user and content id. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async removeContentWatcher(parameters: Parameters.RemoveContentWatcher, callback?: never): Promise; - async removeContentWatcher( - parameters: Parameters.RemoveContentWatcher, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/user/watch/content/${parameters.contentId}`, - method: 'DELETE', - params: { - key: parameters.key, - username: parameters.username, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Get information about whether a user is watching a specified space. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async isWatchingSpace( - parameters: Parameters.IsWatchingSpace, - callback: Callback, - ): Promise; - /** - * Get information about whether a user is watching a specified space. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async isWatchingSpace(parameters: Parameters.IsWatchingSpace, callback?: never): Promise; - async isWatchingSpace( - parameters: Parameters.IsWatchingSpace, - callback?: Callback, - ): Promise { - const config: RequestConfig = { - url: `/rest/api/user/watch/space/${parameters.spaceKey}`, - method: 'GET', - params: { - key: parameters.key, - username: parameters.username, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Create a new watcher for the given user and space key. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async addSpaceWatch(parameters: Parameters.AddSpaceWatch, callback: Callback): Promise; - /** - * Create a new watcher for the given user and space key. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async addSpaceWatch(parameters: Parameters.AddSpaceWatch, callback?: never): Promise; - async addSpaceWatch(parameters: Parameters.AddSpaceWatch, callback?: Callback): Promise { - const config: RequestConfig = { - url: `/rest/api/user/watch/space/${parameters.spaceKey}`, - method: 'POST', - params: { - key: parameters.key, - username: parameters.username, - }, - }; - - return this.client.sendRequest(config, callback); - } - - /** - * Delete an existing watcher for the given user and space key. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async removeSpaceWatch(parameters: Parameters.RemoveSpaceWatch, callback: Callback): Promise; - /** - * Delete an existing watcher for the given user and space key. - * - * User is optional. If not specified, currently logged-in user will be used. Otherwise, it can be specified by either - * user key or username. When a user is specified and is different from the logged-in user, the logged-in user needs - * to be a Confluence administrator. - */ - async removeSpaceWatch(parameters: Parameters.RemoveSpaceWatch, callback?: never): Promise; - async removeSpaceWatch(parameters: Parameters.RemoveSpaceWatch, callback?: Callback): Promise { - const config: RequestConfig = { - url: `/rest/api/user/watch/space/${parameters.spaceKey}`, - method: 'DELETE', - params: { - key: parameters.key, - username: parameters.username, - }, - }; - - return this.client.sendRequest(config, callback); - } -} diff --git a/src/services/authenticationService/authenticationService.ts b/src/services/authenticationService/authenticationService.ts index 02db9e23..7bb0615d 100644 --- a/src/services/authenticationService/authenticationService.ts +++ b/src/services/authenticationService/authenticationService.ts @@ -1,40 +1,33 @@ -import { Config } from '../../config'; +import type { Authentication } from '~/config'; import { createBasicAuthenticationToken, createJWTAuthentication, createOAuth2AuthenticationToken, - createPATAuthenticationToken, } from './authentications'; -export namespace AuthenticationService { - export async function getAuthenticationToken( - authentication: Config.Authentication | undefined, - requestData?: { - baseURL: string; - url: string; - method: string; - }, - ): Promise { - if (!authentication) { - return undefined; - } - - if (authentication.basic) { - return createBasicAuthenticationToken(authentication.basic); - } - - if (authentication.oauth2) { - return createOAuth2AuthenticationToken(authentication.oauth2); - } +export async function getAuthenticationToken( + authentication: Authentication | undefined, + requestData?: { + baseURL: string; + url: string; + method: string; + }, +): Promise { + if (!authentication) { + return undefined; + } - if (authentication.jwt) { - return createJWTAuthentication(authentication.jwt, requestData!); - } + if ('basic' in authentication) { + return createBasicAuthenticationToken(authentication); + } - if (authentication.personalAccessToken) { - return createPATAuthenticationToken(authentication.personalAccessToken); - } + if ('oauth2' in authentication) { + return createOAuth2AuthenticationToken(authentication); + } - return undefined; + if ('jwt' in authentication) { + return createJWTAuthentication(authentication, requestData!); } + + return undefined; } diff --git a/src/services/authenticationService/authentications/createBasicAuthenticationToken.ts b/src/services/authenticationService/authentications/createBasicAuthenticationToken.ts index cdfc7180..bed2946d 100644 --- a/src/services/authenticationService/authentications/createBasicAuthenticationToken.ts +++ b/src/services/authenticationService/authentications/createBasicAuthenticationToken.ts @@ -1,19 +1,8 @@ import { Base64Encoder } from '../base64Encoder'; -import { Config } from '../../../config'; +import type { Basic } from '~'; -export function createBasicAuthenticationToken(authenticationData: Config.Authentication.Basic) { - let login; - let secret; - - if ('username' in authenticationData) { - login = authenticationData.username; - secret = authenticationData.password; - } else { - login = authenticationData.email; - secret = authenticationData.apiToken; - } - - const token = Base64Encoder.encode(`${login}:${secret}`); +export function createBasicAuthenticationToken({ basic: { email, apiToken } }: Basic) { + const token = Base64Encoder.encode(`${email}:${apiToken}`); return `Basic ${token}`; } diff --git a/src/services/authenticationService/authentications/createJWTAuthentication.ts b/src/services/authenticationService/authentications/createJWTAuthentication.ts index 78e324e2..da8b8b32 100644 --- a/src/services/authenticationService/authentications/createJWTAuthentication.ts +++ b/src/services/authenticationService/authentications/createJWTAuthentication.ts @@ -1,8 +1,8 @@ import * as jwt from 'atlassian-jwt'; -import { Config } from '../../../config'; +import type { JWT } from '~'; export function createJWTAuthentication( - authenticationData: Config.Authentication.JWT, + { jwt: { issuer, secret, expiryTimeSeconds } }: JWT, requestData: { method: string; url: string; @@ -11,17 +11,17 @@ export function createJWTAuthentication( const { method, url } = requestData; const now = Math.floor(Date.now() / 1000); - const expire = now + 180; + const expire = now + (expiryTimeSeconds ?? 180); const request = jwt.fromMethodAndUrl(method, url); const tokenData = { - iss: authenticationData.issuer, + iss: issuer, qsh: jwt.createQueryStringHash(request), iat: now, exp: expire, }; - const token = jwt.encodeSymmetric(tokenData, authenticationData.secret); + const token = jwt.encodeSymmetric(tokenData, secret); return `JWT ${token}`; } diff --git a/src/services/authenticationService/authentications/createOAuth2AuthenticationToken.ts b/src/services/authenticationService/authentications/createOAuth2AuthenticationToken.ts index 4ebec852..5564180d 100644 --- a/src/services/authenticationService/authentications/createOAuth2AuthenticationToken.ts +++ b/src/services/authenticationService/authentications/createOAuth2AuthenticationToken.ts @@ -1,5 +1,5 @@ -import { Config } from '../../../config'; +import type { OAuth2 } from '~'; -export function createOAuth2AuthenticationToken(authenticationData: Config.Authentication.OAuth2) { - return `Bearer ${authenticationData.accessToken}`; +export function createOAuth2AuthenticationToken({ oauth2: { accessToken } }: OAuth2) { + return `Bearer ${accessToken}`; } diff --git a/src/services/authenticationService/authentications/createPATAuthenticationToken.ts b/src/services/authenticationService/authentications/createPATAuthenticationToken.ts deleted file mode 100644 index ea1f7e2d..00000000 --- a/src/services/authenticationService/authentications/createPATAuthenticationToken.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Config } from '../../../config'; - -export async function createPATAuthenticationToken(authenticationData: Config.Authentication.PersonalAccessToken) { - return `Bearer ${authenticationData}`; -} diff --git a/src/services/authenticationService/authentications/index.ts b/src/services/authenticationService/authentications/index.ts index 8b0efb80..4354127b 100644 --- a/src/services/authenticationService/authentications/index.ts +++ b/src/services/authenticationService/authentications/index.ts @@ -1,4 +1,3 @@ export * from './createBasicAuthenticationToken'; export * from './createJWTAuthentication'; export * from './createOAuth2AuthenticationToken'; -export * from './createPATAuthenticationToken'; diff --git a/src/services/index.ts b/src/services/index.ts new file mode 100644 index 00000000..920abd06 --- /dev/null +++ b/src/services/index.ts @@ -0,0 +1 @@ +export * from './authenticationService'; diff --git a/src/utilityTypes.ts b/src/utilityTypes.ts deleted file mode 100644 index 6fd5216e..00000000 --- a/src/utilityTypes.ts +++ /dev/null @@ -1,13 +0,0 @@ -export namespace UtilityTypes { - /** Mark some properties which only the former including as optional and set the value to never */ - export type Without = { [P in Exclude]?: never }; - - /** Get the XOR type which could make 2 types exclude each other */ - export type XOR = T | U extends object ? (Without & U) | (Without & T) : T | U; - - /** Get the XOR type which could make 3 types exclude each other */ - export type XOR3 = XOR>; - - /** Get the XOR type which could make 4 types exclude each other */ - export type XOR4 = XOR>; -} diff --git a/tests/integration/e2e.test.ts b/tests/integration/e2e.test.ts index 736c656f..ebd69926 100644 --- a/tests/integration/e2e.test.ts +++ b/tests/integration/e2e.test.ts @@ -1,181 +1,177 @@ +import { describe, it, expect } from 'vitest'; import * as fs from 'fs'; -import test from 'ava'; import { ConfluenceClient } from '../../src'; const HOST = process.env.HOST!; const EMAIL = process.env.EMAIL!; const API_TOKEN = process.env.API_TOKEN!; -let createdContentId: string; -let createdAttachmentId: string; - -const client = new ConfluenceClient({ - host: HOST, - telemetry: false, - newErrorHandling: true, - authentication: { - basic: { - email: EMAIL, - apiToken: API_TOKEN, +describe('ConfluenceClient E2E Tests', () => { + let createdContentId: string; + let createdAttachmentId: string; + const client = new ConfluenceClient({ + host: HOST, + authentication: { + basic: { + email: EMAIL, + apiToken: API_TOKEN, + }, }, - }, -}); - -test.serial('should create space', async t => { - const space = await client.space.createSpace({ - name: 'Auto testing software', - key: 'AUTOMATED', }); - t.truthy(!!space); - t.is(space.key, 'AUTOMATED'); - t.is(space.name, 'Auto testing software'); -}); - -test.serial('should create content', async t => { - const content = await client.content.createContent({ - title: 'Test page', - space: { + it('should create space', async () => { + const space = await client.space.createSpace({ + name: 'Auto testing software', key: 'AUTOMATED', - }, - type: 'page', - body: { - view: { - value: '', - representation: 'view', - }, - }, + }); + + expect(space).toBeTruthy(); + expect(space.key).toBe('AUTOMATED'); + expect(space.name).toBe('Auto testing software'); }); - createdContentId = content.id; + it('should create content', async () => { + const content = await client.content.createContent({ + title: 'Test page', + space: { + key: 'AUTOMATED', + }, + type: 'page', + body: { + view: { + value: '', + representation: 'view', + }, + }, + }); - t.truthy(!!content); - t.is(content.type, 'page'); - t.is(content.space?.key, 'AUTOMATED'); -}); + createdContentId = content.id; -test.serial('should add attachment', async t => { - const file = await fs.readFileSync('./tests/unit/clients/serverClient.test.ts'); - - const attachment = await client.contentAttachments.createAttachments({ - id: createdContentId, - attachments: { - file, - filename: 'serverApiClient.test.ts', - minorEdit: true, - comment: 'heh comment', - contentType: 'application/javascript', - }, + expect(content).toBeTruthy(); + expect(content.type).toBe('page'); + expect(content.space?.key).toBe('AUTOMATED'); }); - t.truthy(!!attachment); - t.truthy(attachment.results.length === 1); - t.is(attachment.results[0].title, 'serverApiClient.test.ts'); - t.is(attachment.results[0].metadata.mediaType, 'application/javascript'); - t.is(attachment.results[0].version.minorEdit, true); -}); + it('should add attachment', async () => { + const file = fs.readFileSync('./tests/unit/index.test.ts'); + + const attachment = await client.contentAttachments.createAttachments({ + id: createdContentId, + attachments: { + file, + filename: 'space.test.ts', + minorEdit: true, + comment: 'heh comment', + contentType: 'application/javascript', + }, + }); -test.serial('should get attachments', async t => { - const attachments = await client.contentAttachments.getAttachments({ - id: createdContentId, + expect(attachment).toBeTruthy(); + expect(attachment.results.length).toBe(1); + expect(attachment.results[0].title).toBe('space.test.ts'); + expect(attachment.results[0].metadata.mediaType).toBe('application/javascript'); + expect(attachment.results[0].version.minorEdit).toBe(true); }); - t.truthy(!!attachments); - t.truthy(attachments.results.length === 1); - t.is(attachments.results[0].title, 'serverApiClient.test.ts'); - t.is(attachments.results[0].metadata.mediaType, 'application/javascript'); -}); + it('should get attachments', async () => { + const attachments = await client.contentAttachments.getAttachments({ + id: createdContentId, + }); -test.serial('should update attachment', async t => { - const attachments = await client.contentAttachments.createOrUpdateAttachments({ - id: createdContentId, - attachments: { - file: 'testFileContent', - filename: 'serverApiClient.test.ts', - minorEdit: false, - comment: 'some changes', - contentType: 'application/javascript', - }, + expect(attachments).toBeTruthy(); + expect(attachments.results.length).toBe(1); + expect(attachments.results[0].title).toBe('space.test.ts'); + expect(attachments.results[0].metadata.mediaType).toBe('application/javascript'); }); - createdAttachmentId = attachments.results[0].id; - - t.truthy(!!attachments); - t.truthy(attachments.results.length === 1); - t.is(attachments.results[0].title, 'serverApiClient.test.ts'); - t.is(attachments.results[0].metadata.mediaType, 'application/javascript'); - t.is(attachments.results[0].version.minorEdit, false); - t.is(attachments.results[0].version.number, 2); - t.is(attachments.results[0].version.message, 'some changes'); -}); - -test.serial('should update attachment properties', async t => { - const attachment = await client.contentAttachments.updateAttachmentProperties({ - id: createdContentId, - attachmentId: createdAttachmentId, - update: { - id: createdAttachmentId, - version: { - number: 2, - }, - title: 'serverApiClient.test.ts', - type: 'attachment', - status: 'current', - metadata: { - mediaType: 'text/plain', + it('should update attachment', async () => { + const attachments = await client.contentAttachments.createOrUpdateAttachments({ + id: createdContentId, + attachments: { + file: 'testFileContent', + filename: 'space.test.ts', + minorEdit: false, + comment: 'some changes', + contentType: 'application/javascript', }, - }, - }); + }); - t.truthy(!!attachment); - t.is(attachment.title, 'serverApiClient.test.ts'); - t.is(attachment.metadata.mediaType, 'text/plain'); - t.is(attachment.version.minorEdit, false); - t.is(attachment.version.number, 2); - t.is(attachment.version.message, 'some changes'); -}); + createdAttachmentId = attachments.results[0].id; -test.serial('should update content attachment data', async t => { - const attachment = await client.contentAttachments.updateAttachmentData({ - id: createdContentId, - attachmentId: createdAttachmentId, - attachment: { - file: 'testFileContent', - filename: 'serverApiClient.test.ts', - minorEdit: true, - }, + expect(attachments).toBeTruthy(); + expect(attachments.results.length).toBe(1); + expect(attachments.results[0].title).toBe('space.test.ts'); + expect(attachments.results[0].metadata.mediaType).toBe('application/javascript'); + expect(attachments.results[0].version.minorEdit).toBe(false); + expect(attachments.results[0].version.number).toBe(2); + expect(attachments.results[0].version.message).toBe('some changes'); }); - t.truthy(!!attachment); - t.is(attachment.title, 'serverApiClient.test.ts'); - t.is(attachment.metadata.mediaType, 'video/mp2t'); - t.is(attachment.version.minorEdit, true); - t.is(attachment.version.number, 3); - t.is(attachment.version.message, undefined); -}); + it('should update attachment properties', async () => { + const attachment = await client.contentAttachments.updateAttachmentProperties({ + id: createdContentId, + attachmentId: createdAttachmentId, + update: { + id: createdAttachmentId, + version: { + number: 2, + }, + title: 'space.test.ts', + type: 'attachment', + status: 'current', + metadata: { + mediaType: 'text/plain', + }, + }, + }); + + expect(attachment).toBeTruthy(); + expect(attachment.title).toBe('space.test.ts'); + expect(attachment.metadata.mediaType).toBe('text/plain'); + expect(attachment.version.minorEdit).toBe(false); + expect(attachment.version.number).toBe(2); + expect(attachment.version.message).toBe('some changes'); + }); -test.serial('should download content attachment', async t => { - const attachment = await client.contentAttachments.downloadAttachment({ - id: createdContentId, - attachmentId: createdAttachmentId, + it('should update content attachment data', async () => { + const attachment = await client.contentAttachments.updateAttachmentData({ + id: createdContentId, + attachmentId: createdAttachmentId, + attachment: { + file: 'testFileContent', + filename: 'space.test.ts', + minorEdit: true, + }, + }); + + expect(attachment).toBeTruthy(); + expect(attachment.title).toBe('space.test.ts'); + expect(attachment.metadata.mediaType).toBe('video/mp2t'); + expect(attachment.version.minorEdit).toBe(true); + expect(attachment.version.number).toBe(3); + expect(attachment.version.message).toBeUndefined(); }); - t.truthy(!!attachment); - t.is(attachment.toString(), 'testFileContent'); -}); + it('should download content attachment', async () => { + const attachment = await client.contentAttachments.downloadAttachment({ + id: createdContentId, + attachmentId: createdAttachmentId, + }); -test.serial('should remove content', async t => { - await client.content.deleteContent({ - id: createdContentId, + expect(attachment).toBeTruthy(); + expect(attachment.toString()).toBe('testFileContent'); }); - t.pass(); -}); - -test.serial('should remove space', async t => { - const removedSpace = await client.space.deleteSpace({ - spaceKey: 'AUTOMATED', + it('should remove content', async () => { + await expect(client.content.deleteContent({ + id: createdContentId, + })).resolves.not.toThrow(); }); - t.truthy(!!removedSpace); + it('should remove space', async () => { + const removedSpace = await client.space.deleteSpace({ + spaceKey: 'AUTOMATED', + }); + expect(removedSpace).toBeTruthy(); + }); }); diff --git a/tests/tsconfig.json b/tests/tsconfig.json new file mode 100644 index 00000000..8a54666e --- /dev/null +++ b/tests/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./dist", + "noEmit": true, + "paths": { + "~/*": ["../src/*"], + } + }, + "include": ["integration", "unit"] +} diff --git a/tests/unit/api/space.test.ts b/tests/unit/api/space.test.ts deleted file mode 100644 index e96f64f1..00000000 --- a/tests/unit/api/space.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import * as sinon from 'sinon'; -import test from 'ava'; -import { ConfluenceClient } from '../../../src'; - -const config = { host: '' }; - -test('when spaceKey is not provided', t => { - const client = new ConfluenceClient(config); - const sendRequestStub = sinon.stub(client, 'sendRequest'); - - client.space.getSpaces({}); - - const callArgument = sendRequestStub.lastCall.args[0]; - - t.is(callArgument.params.spaceKey, undefined); -}); - -test('when spaceKey is empty array', t => { - const client = new ConfluenceClient(config); - const sendRequestStub = sinon.stub(client, 'sendRequest'); - - client.space.getSpaces({ spaceKey: [] }); - - const callArgument = sendRequestStub.lastCall.args[0]; - - t.is(callArgument.params.spaceKey, ''); -}); - -test('when spaceKey has one key', t => { - const client = new ConfluenceClient(config); - const sendRequestStub = sinon.stub(client, 'sendRequest'); - - client.space.getSpaces({ spaceKey: ['KEY1'] }); - - const callArgument = sendRequestStub.lastCall.args[0]; - - t.is(callArgument.params.spaceKey(), 'spaceKey=KEY1'); -}); - -test('when spaceKey has multiple keys', t => { - const client = new ConfluenceClient(config); - const sendRequestStub = sinon.stub(client, 'sendRequest'); - - client.space.getSpaces({ spaceKey: ['KEY1', 'KEY2'] }); - - const callArgument = sendRequestStub.lastCall.args[0]; - - t.is(callArgument.params.spaceKey(), 'spaceKey=KEY1&spaceKey=KEY2'); -}); diff --git a/tests/unit/clients/confluenceClient.test.ts b/tests/unit/clients/confluenceClient.test.ts deleted file mode 100644 index 75425bcf..00000000 --- a/tests/unit/clients/confluenceClient.test.ts +++ /dev/null @@ -1,9 +0,0 @@ -import test from 'ava'; -import { ConfluenceClient } from '../../../src'; - -test('Confluence Client properties should be defined', t => { - const client = new ConfluenceClient({ host: '' }); - - t.truthy(!!client.contentContentState); - t.truthy(!!client.contentStates); -}); diff --git a/tests/unit/clients/serverClient.test.ts b/tests/unit/clients/serverClient.test.ts deleted file mode 100644 index ce0a1be9..00000000 --- a/tests/unit/clients/serverClient.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -import * as sinon from 'sinon'; -import test from 'ava'; -import { ServerClient } from '../../../src'; - -const config = { - host: 'https://localhost', -}; - -test('should create correct url', t => { - const serverClient = new ServerClient(config); - - const stub = sinon.stub(serverClient, 'sendRequest'); - - serverClient.audit.createAuditRecord({ remoteAddress: '' }); - - const callArgument = stub.getCall(0).args[0]; - - // @ts-ignore - t.is(serverClient.instance.defaults.baseURL, 'https://localhost/'); - t.is(callArgument.url, '/rest/api/audit'); -}); - -test('should send the correct headers when creating attachments', t => { - const serverClient = new ServerClient(config); - - const buffer = Buffer.from('Testing attachment', 'utf-8'); - const stub = sinon.stub(serverClient, 'sendRequest'); - - serverClient.content.createAttachments({ - id: '1234567', - comment: 'testing', - file: buffer, - }); - - const callArgument = stub.getCall(0).args[0]; - - t.is(callArgument.url, '/rest/api/content/1234567/child/attachment'); - t.deepEqual(callArgument.headers, { - 'Content-Type': 'multipart/form-data', - 'X-Atlassian-Token': 'nocheck', - }); -}); - -test('should send the correct headers when updating attachments', t => { - const serverClient = new ServerClient(config); - - const buffer = Buffer.from('Testing attachment', 'utf-8'); - const stub = sinon.stub(serverClient, 'sendRequest'); - - serverClient.content.updateAttachmentData({ - id: '1234567', - attachmentId: '89101112', - comment: 'testing', - file: buffer, - }); - - const callArgument = stub.getCall(0).args[0]; - - t.is(callArgument.url, '/rest/api/content/1234567/child/attachment/89101112/data'); - t.deepEqual(callArgument.headers, { - 'Content-Type': 'multipart/form-data', - 'X-Atlassian-Token': 'nocheck', - }); -}); diff --git a/tests/unit/index.test.ts b/tests/unit/index.test.ts index f0744cfe..be88dbce 100644 --- a/tests/unit/index.test.ts +++ b/tests/unit/index.test.ts @@ -1,55 +1,54 @@ -import test from 'ava'; -import { - BaseClient, +import { describe, it, expect } from 'vitest'; +import type { Callback, Client, Config, - ConfluenceClient, - RequestConfig, + RequestConfig } from '../../src'; +import { + BaseClient, + ConfluenceClient } from '../../src'; -test('Callback should be defined', t => { - const callback: Callback = () => {}; - - t.truthy(!!callback); -}); - -test('RequestConfig should be defined', t => { - const requestConfig: RequestConfig = {}; - - t.truthy(!!requestConfig); -}); - -test('Config should be defined', t => { - const config: Config = { - host: '', - }; - - t.truthy(!!config); - t.is(config.host, ''); - t.is(typeof config.host, 'string'); -}); - -test('Client should be defined', async t => { - const client: Client = { - sendRequest(): Promise { - return Promise.resolve(undefined); - }, - }; - - t.truthy(!!client); - t.truthy(!!client.sendRequest); - t.falsy(!!(await client.sendRequest({}))); -}); - -test('BaseClient should be defined', t => { - const baseClient = new BaseClient({ host: '' }); - - t.truthy(!!baseClient); -}); - -test('ConfluenceClient should be defined', t => { - const confluenceClient = new ConfluenceClient({ host: '' }); - - t.truthy(!!confluenceClient); +describe('Type definitions', () => { + it('Callback should be defined', () => { + const callback: Callback = () => {}; + expect(!!callback).toBeTruthy(); + }); + + it('RequestConfig should be defined', () => { + const requestConfig: RequestConfig = {}; + expect(!!requestConfig).toBeTruthy(); + }); + + it('Config should be defined', () => { + const config: Config = { + host: 'http://localhost', + }; + + expect(!!config).toBeTruthy(); + expect(config.host).toBe('http://localhost'); + expect(typeof config.host).toBe('string'); + }); + + it('Client should be defined', async () => { + const client: Client = { + sendRequest(): Promise { + return Promise.resolve(undefined); + }, + }; + + expect(!!client).toBeTruthy(); + expect(!!client.sendRequest).toBeTruthy(); + expect(!!(await client.sendRequest({}))).toBeFalsy(); + }); + + it('BaseClient should be defined', () => { + const baseClient = new BaseClient({ host: 'http://localhost' }); + expect(!!baseClient).toBeTruthy(); + }); + + it('ConfluenceClient should be defined', () => { + const confluenceClient = new ConfluenceClient({ host: 'http://localhost' }); + expect(!!confluenceClient).toBeTruthy(); + }); }); diff --git a/tsconfig.json b/tsconfig.json index 7afa12f2..0c8ea0e8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,17 +1,21 @@ { "compilerOptions": { - "target": "ES6", - "module": "CommonJS", - "outDir": "out", + "target": "ES2022", + "outDir": "dist", + "module": "ESNext", + "moduleResolution": "bundler", "strict": true, - "sourceMap": true, "declaration": true, - "importHelpers": true, - "forceConsistentCasingInFileNames": true + "forceConsistentCasingInFileNames": true, + "baseUrl": "./", + "paths": { + "~": ["src"], + "~/*": ["src/*"] + } }, + "include": ["src", "rollup.config.ts"], "exclude": [ "node_modules", - "out", - "tests" + "dist", ] } diff --git a/tsconfig.lint.json b/tsconfig.lint.json deleted file mode 100644 index d1d732ca..00000000 --- a/tsconfig.lint.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [ - "src", - "tests" - ], - "exclude": [] -} diff --git a/vitest.config.mts b/vitest.config.mts new file mode 100644 index 00000000..0a979ec5 --- /dev/null +++ b/vitest.config.mts @@ -0,0 +1,17 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + typecheck: { + enabled: true, + tsconfig: 'tsconfig.lint.json', + }, + setupFiles: ['dotenv/config'], + }, + resolve: { + alias: { + '~': new URL('./src', import.meta.url).pathname, + '@tests': new URL('./tests', import.meta.url).pathname, + }, + }, +});