From bd6d37ee42e5a4f5b5f367063983de4a5e8e9771 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Wed, 24 Apr 2024 16:15:38 +0530 Subject: [PATCH 01/52] fix: read me image Signed-off-by: sarthakjdev --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index da30619..b4f1340 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- wapi.js + wapi.js

From e9f862ad6c87cc9f8ce7e4311ea02aeaf77bcb5f Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Sat, 27 Apr 2024 11:17:05 +0530 Subject: [PATCH 02/52] feat: add docs with nextjs Signed-off-by: sarthakjdev --- .eslintignore | 2 + .eslintrc.js | 106 +- .github/workflows/documentation.yaml | 2 +- .github/workflows/release.yaml | 60 +- .gitignore | 3 +- README.md | 1 - apps/website/.prettierrc.cjs | 11 - apps/website/.vitepress/config.ts | 207 -- apps/website/.vitepress/theme/custom.css | 8 - apps/website/.vitepress/theme/index.ts | 4 - apps/website/docs/concepts/architecture.md | 1 - apps/website/docs/concepts/core.md | 0 apps/website/docs/features.md | 0 .../docs/getting-started/installation.md | 27 - .../docs/getting-started/prerequisites.md | 0 .../docs/getting-started/quickstart.md | 0 apps/website/docs/guide/event-handling.md | 0 apps/website/docs/guide/message-handling.md | 0 apps/website/docs/guide/replying-message.md | 0 apps/website/docs/guide/sending-message.md | 0 apps/website/docs/guide/setup.md | 0 apps/website/docs/overview.md | 1 - apps/website/docs/status.md | 3 - apps/website/docs/troubleshoot/faq.md | 1 - apps/website/docs/troubleshoot/issues.md | 0 apps/website/index.md | 38 - apps/website/package.json | 19 - apps/website/public/logo.png | Bin 23081 -> 0 bytes package.json | 7 +- packages/wapi.js/.eslintrc.js | 4 + packages/wapi.js/src/client/index.ts | 27 +- packages/wapi.js/src/client/interface.ts | 1 - packages/wapi.js/src/client/request-client.ts | 3 +- packages/wapi.js/src/webhook/index.ts | 929 ++--- packages/wapi.js/src/webhook/interface.ts | 10 + packages/wapi.js/tsconfig-cjs.json | 5 +- packages/wapi.js/tsconfig.json | 2 +- pnpm-lock.yaml | 2981 +++++++++++++---- tsconfig.base.json | 13 - tsconfig.json | 4 +- 40 files changed, 2880 insertions(+), 1600 deletions(-) delete mode 100644 apps/website/.prettierrc.cjs delete mode 100644 apps/website/.vitepress/config.ts delete mode 100644 apps/website/.vitepress/theme/custom.css delete mode 100644 apps/website/.vitepress/theme/index.ts delete mode 100644 apps/website/docs/concepts/architecture.md delete mode 100644 apps/website/docs/concepts/core.md delete mode 100644 apps/website/docs/features.md delete mode 100644 apps/website/docs/getting-started/installation.md delete mode 100644 apps/website/docs/getting-started/prerequisites.md delete mode 100644 apps/website/docs/getting-started/quickstart.md delete mode 100644 apps/website/docs/guide/event-handling.md delete mode 100644 apps/website/docs/guide/message-handling.md delete mode 100644 apps/website/docs/guide/replying-message.md delete mode 100644 apps/website/docs/guide/sending-message.md delete mode 100644 apps/website/docs/guide/setup.md delete mode 100644 apps/website/docs/overview.md delete mode 100644 apps/website/docs/status.md delete mode 100644 apps/website/docs/troubleshoot/faq.md delete mode 100644 apps/website/docs/troubleshoot/issues.md delete mode 100644 apps/website/index.md delete mode 100644 apps/website/package.json delete mode 100644 apps/website/public/logo.png create mode 100644 packages/wapi.js/.eslintrc.js create mode 100644 packages/wapi.js/src/webhook/interface.ts delete mode 100644 tsconfig.base.json diff --git a/.eslintignore b/.eslintignore index 162a7a0..26bc28e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,3 +5,5 @@ dist/cjs/** dist/esm/** errors.log .eslintrc.js +packages +apps \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index 203249c..9fabf30 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,106 +1,4 @@ +/** @type {import("eslint").Linter.Config} */ module.exports = { - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:import/recommended", - "plugin:import/typescript", - "prettier", - ], - parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint", "import"], - parserOptions: { - project: ["./tsconfig.json", "./packages/**/tsconfig.json"], - // eslint-disable-next-line no-undef - tsconfigRootDir: __dirname, - sourceType: "module", - ecmaVersion: 2022, - }, - settings: { - "import/parsers": { - "@typescript-eslint/parser": [".ts", ".tsx"], - }, - "import/resolver": { - typescript: { - project: ["./tsconfig.json", "./packages/**/tsconfig.json"], - }, - node: true, - }, - }, - root: true, - rules: { - "no-restricted-globals": [ - "error", - "closed", - "event", - "fdescribe", - "name", - "length", - "location", - "parent", - "top", - ], - "no-empty-pattern": "off", - "no-inner-declarations": "off", - "no-console": "off", - "no-debugger": "error", - "no-alert": "error", - "no-useless-escape": "error", - "@typescript-eslint/require-await": "error", - "@typescript-eslint/no-misused-promises": "error", - "@typescript-eslint/naming-convention": [ - "error", - { - selector: ["variableLike"], - format: ["UPPER_CASE", "StrictPascalCase", "strictCamelCase"], - leadingUnderscore: "allow", - }, - { - selector: ["typeLike"], - format: ["StrictPascalCase"], - }, - ], - "@typescript-eslint/consistent-type-imports": [ - "error", - { - fixStyle: "inline-type-imports", - }, - ], - "import/default": "error", - "import/no-self-import": "error", - "import/no-cycle": [ - "error", - { - maxDepth: 10, - ignoreExternal: true, - }, - ], - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/ban-types": "error", - "@typescript-eslint/ban-ts-comment": "error", - "@typescript-eslint/no-non-null-asserted-optional-chain": "error", - "@typescript-eslint/no-inferrable-types": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/restrict-plus-operands": "error", - "no-multi-assign": "error", - "max-statements-per-line": [ - "error", - { - max: 1, - }, - ], - "no-case-declarations": "error", - "no-extra-boolean-cast": "error", - "prefer-const": "error", - "no-constant-condition": "error", - "@typescript-eslint/no-unsafe-return": "off", - "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/no-unsafe-argument": "off", - "import/no-named-as-default-member": "warn", - "import/no-named-as-default": "warn", - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/restrict-template-expressions": "error", - "@typescript-eslint/no-unsafe-call": "off", - "@typescript-eslint/no-unsafe-member-access": "off", - }, + extends: ["@wapijs/eslint-config/config.js"], }; diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml index 10d7ece..b580e7b 100644 --- a/.github/workflows/documentation.yaml +++ b/.github/workflows/documentation.yaml @@ -48,5 +48,5 @@ jobs: SLACK_ICON: https://github.com/rtCamp.png?size=48 SLACK_MESSAGE: "production deployment failed, check [HERE](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" SLACK_TITLE: "🚨🚨🚨 [WAPIJS.CO] MASTER BRANCH DEPLOYMENT FAILED 🚨🚨🚨" - SLACK_USERNAME: rtCamp + SLACK_USERNAME: sarthakjdev SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index bfa92d0..576f8fa 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -4,7 +4,7 @@ on: release: jobs: - lint: + npm-publish: timeout-minutes: 10 runs-on: ubuntu-latest steps: @@ -23,6 +23,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Lint + id: lint run: pnpm run lint - name: Linter Failed @@ -46,39 +47,38 @@ jobs: } else { throw new Error('Pull request data not found') } - build: - runs-on: ubuntu-latest - needs: [lint] - timeout-minutes: 15 - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Install Dependencies - run: pnpm install --frozen-lockfile + - name: Linter Failure Alert + if: ${{ failure() }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_CHANNEL: general + SLACK_COLOR: ${{ job.status }} + SLACK_ICON: https://github.com/rtCamp.png?size=48 + SLACK_MESSAGE: "Linter failed while releasing new version of wapi.js. Check [HERE](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" + SLACK_TITLE: "🚨🚨🚨 [WAPIJS.CO] MASTER BRANCH RELEASE FAILED 🚨🚨🚨" + SLACK_USERNAME: sarthakjdev + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} - name: Build the packages + if: ${{ success() && !failure()}} run: pnpm build - - name: Build Failed + - name: Build Failure Alert if: ${{ failure() }} - uses: actions/github-script@v6 - with: - script: | - const { data: pullRequestData } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ - owner: context.repo.owner, - repo: context.repo.repo, - commit_sha: context.payload.after - }) + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_CHANNEL: general + SLACK_COLOR: ${{ job.status }} + SLACK_ICON: https://github.com/rtCamp.png?size=48 + SLACK_MESSAGE: "Build failed while releasing new version of wapi.js. Check [HERE](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" + SLACK_TITLE: "🚨🚨🚨 [WAPIJS.CO] MASTER BRANCH BUILD FAILED 🚨🚨🚨" + SLACK_USERNAME: sarthakjdev + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} - if(pullRequestData[0]){ - await github.rest.issues.createComment({ - issue_number: pullRequestData[0].number, - owner: context.repo.owner, - repo: context.repo.repo, - body: `#### ❌ Build failed: - ` - }) - } else { - throw new Error('Pull request data not found') - } + + - name: publish-packages + lint: publish + env: + token: ${{ secrets.NPM_PUBLISH_TOKEN }} + diff --git a/.gitignore b/.gitignore index 129e78c..2455ecc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ yarn-error.log dist coverage .vscode/* -cache \ No newline at end of file +cache +.next \ No newline at end of file diff --git a/README.md b/README.md index b4f1340..4bb1549 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,6 @@ Wapi.js is a JavaScript module, written in TypeScript, designed to interact with - Zod based Schema parsing Capabilities - Message Sending Capabilities - Event Listener for Notifications -- Responding to notifications ## 💻 Installation diff --git a/apps/website/.prettierrc.cjs b/apps/website/.prettierrc.cjs deleted file mode 100644 index 5e75810..0000000 --- a/apps/website/.prettierrc.cjs +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - arrowParens: 'avoid', - trailingComma: 'none', - tabWidth: 4, - printWidth: 100, - semi: false, - useTabs: true, - bracketSpacing: true, - bracketSameLine: false, - singleQuote: true -} \ No newline at end of file diff --git a/apps/website/.vitepress/config.ts b/apps/website/.vitepress/config.ts deleted file mode 100644 index bd2f2fb..0000000 --- a/apps/website/.vitepress/config.ts +++ /dev/null @@ -1,207 +0,0 @@ -import { defineConfig } from 'vitepress' - -export default defineConfig({ - lang: 'en-US', - title: 'Wapi.js Docs', - description: 'build whatsapp cloud api based chat bots with ease', - sitemap: { - hostname: 'https://wapijs.co' - }, - themeConfig: { - sidebar: [ - { - text: 'Introduction', - collapsed: false, - items: [ - { - text: 'Overview?', - link: '/docs/overview' - }, - { - text: 'Features', - link: '/docs/features' - }, - { - text: 'Status', - link: '/docs/status' - } - ] - }, - { - text: 'Getting Started', - collapsed: false, - items: [ - { - text: 'Prerequisites', - link: '/docs/getting-started/prerequisites' - }, - { - text: 'Installation', - link: '/docs/getting-started/installation' - }, - { - text: 'Quickstart', - link: '/docs/getting-started/quickstart' - } - ] - }, - { - text: 'Concepts', - collapsed: false, - items: [ - { - text: 'Architecture', - link: '/docs/concepts/architecture' - }, - { - text: 'Core Components', - link: '/docs/concepts/core' - }, - { - text: 'How it works', - link: '/docs/concepts/working' - } - ] - }, - { - text: 'API Reference (auto-generated with JSDoc)', - collapsed: false, - items: [] - }, - { - text: 'Guides', - collapsed: false, - items: [ - { - text: 'Setup and Configuration', - link: '/docs/guide/setup' - }, - { - text: 'Message Handling', - link: '/docs/guide/message-handling' - }, - { - text: 'Sending messages', - link: '/docs/guide/sending-message' - }, - { - text: 'Replying to messages', - link: '/docs/guide/replying' - }, - { - text: 'Event Handling', - link: '/docs/guide/event-handling' - } - ] - }, - { - text: 'Troubleshoot', - collapsed: false, - items: [ - { - text: 'Issues', - link: '/docs/troubleshoot/issues' - }, - { - text: 'Frequently Asked Questions', - link: '/docs/troubleshoot/faq' - } - ] - }, - { - text: 'Contributing', - collapsed: false, - items: [ - { - text: 'Issues', - link: '/docs/troubleshoot/issues' - }, - { - text: 'Frequently Asked Questions', - link: '/docs/troubleshoot/faq' - } - ] - }, - { - text: 'References', - collapsed: false, - items: [ - { - text: 'Issues', - link: '/docs/troubleshoot/issues' - }, - { - text: 'Frequently Asked Questions', - link: '/docs/troubleshoot/faq' - } - ] - } - ], - - socialLinks: [{ icon: 'discord', link: 'https://discord.wapijs.co' }], - - nav: [ - { text: 'Quickstart', link: '/docs/getting-started/quickstart' }, - { text: 'Faqs', link: '/docs/troubleshoot/faq' } - ], - - siteTitle: 'Wapi.js', - logo: '/favicons/ms-icon-310x310.png', - - footer: { - message: 'Released under the Apache 2.0 License.', - copyright: `Copyright © wapi 2023-${new Date().getFullYear()} | All rights reserved.` - }, - - editLink: { - pattern: 'https://github.com/sarthakjdev/wapi.js/edit/main/:path', - text: 'Edit this page on GitHub' - }, - - search: { - provider: 'local' - } - }, - - markdown: { - lineNumbers: true - }, - - lastUpdated: true, - - cleanUrls: true, - - head: [ - [ - 'link', - { - rel: 'apple-touch-icon', - sizes: '180x180', - href: '/favicons/apple-icon-180x180.png' - } - ], - [ - 'link', - { - rel: 'icon', - type: 'image/png', - sizes: '32x32', - href: '/favicons/favicon-32x32.png' - } - ], - [ - 'link', - { - rel: 'icon', - type: 'image/png', - sizes: '16x16', - href: '/favicons/favicon-16x16.png' - } - ], - ['link', { rel: 'manifest', href: '/favicons/manifest.json' }], - ['link', { rel: 'shortcut icon', href: '/favicons/favicon.ico' }], - ['meta', { name: 'msapplication-TileColor', content: '#ffffff' }], - ['meta', { name: 'msapplication-config', content: '/favicons/browserconfig.xml' }], - ['meta', { name: 'theme-color', content: '#ffffff' }] - ] -}) diff --git a/apps/website/.vitepress/theme/custom.css b/apps/website/.vitepress/theme/custom.css deleted file mode 100644 index 971c642..0000000 --- a/apps/website/.vitepress/theme/custom.css +++ /dev/null @@ -1,8 +0,0 @@ -:root { - --vp-wapi-primary: #22c55e; - --vp-wapi-secondary: transparent; - --vp-home-hero-name-color: var(--vp-wapi-primary); - --vp-button-brand-bg: var(--vp-wapi-primary); - --vp-button-alt-bg: var(--vp-wapi-secondary); - --vp-local-search-highlight-bg: var(--vp-wapi-primary); -} diff --git a/apps/website/.vitepress/theme/index.ts b/apps/website/.vitepress/theme/index.ts deleted file mode 100644 index 42fe9a9..0000000 --- a/apps/website/.vitepress/theme/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import DefaultTheme from 'vitepress/theme' -import './custom.css' - -export default DefaultTheme diff --git a/apps/website/docs/concepts/architecture.md b/apps/website/docs/concepts/architecture.md deleted file mode 100644 index 52d2c6c..0000000 --- a/apps/website/docs/concepts/architecture.md +++ /dev/null @@ -1 +0,0 @@ -### Architecture of Wapi.js: diff --git a/apps/website/docs/concepts/core.md b/apps/website/docs/concepts/core.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/docs/features.md b/apps/website/docs/features.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/docs/getting-started/installation.md b/apps/website/docs/getting-started/installation.md deleted file mode 100644 index 5d0f6d5..0000000 --- a/apps/website/docs/getting-started/installation.md +++ /dev/null @@ -1,27 +0,0 @@ -### How to install wapi.js ? - -You can install Wapi.js using via following package managers: - -- yarn - -```sh - -``` - -- pnpm - -```sh - -``` - -- bun - -```sh - -``` - -- npm - -```sh - -``` diff --git a/apps/website/docs/getting-started/prerequisites.md b/apps/website/docs/getting-started/prerequisites.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/docs/getting-started/quickstart.md b/apps/website/docs/getting-started/quickstart.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/docs/guide/event-handling.md b/apps/website/docs/guide/event-handling.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/docs/guide/message-handling.md b/apps/website/docs/guide/message-handling.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/docs/guide/replying-message.md b/apps/website/docs/guide/replying-message.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/docs/guide/sending-message.md b/apps/website/docs/guide/sending-message.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/docs/guide/setup.md b/apps/website/docs/guide/setup.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/docs/overview.md b/apps/website/docs/overview.md deleted file mode 100644 index 0aa5d83..0000000 --- a/apps/website/docs/overview.md +++ /dev/null @@ -1 +0,0 @@ -## Overview \ No newline at end of file diff --git a/apps/website/docs/status.md b/apps/website/docs/status.md deleted file mode 100644 index ef42db9..0000000 --- a/apps/website/docs/status.md +++ /dev/null @@ -1,3 +0,0 @@ -# Status: - -:warning: Work in progress \ No newline at end of file diff --git a/apps/website/docs/troubleshoot/faq.md b/apps/website/docs/troubleshoot/faq.md deleted file mode 100644 index 87b9930..0000000 --- a/apps/website/docs/troubleshoot/faq.md +++ /dev/null @@ -1 +0,0 @@ -# Frequently Asked Questions \ No newline at end of file diff --git a/apps/website/docs/troubleshoot/issues.md b/apps/website/docs/troubleshoot/issues.md deleted file mode 100644 index e69de29..0000000 diff --git a/apps/website/index.md b/apps/website/index.md deleted file mode 100644 index cfd7a81..0000000 --- a/apps/website/index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -# https://vitepress.dev/reference/default-theme-home-page -layout: home - -hero: - name: "Wapi.js" - text: "official documentation of wapi.js" - tagline: chatbot with ease - - image: - src: /logo.png - alt: Wapi.js - actions: - - theme: brand - text: Install - link: /installation - - theme: alt - text: Docs - link: /docs - - theme: alt - text: Contribute - link: /contribute - -features: - - title: Object-Oriented Design - icon: 📐 - details: Utilize an intuitive object-oriented approach for straightforward API interaction. Get a clear view of the architecture with primary classes. - - title: Single Client Interaction - icon: 🔄 - details: Interact with the WhatsApp cloud API efficiently using a unified client interface. Simplify session management and error handling. - - title: Advanced Messaging Capabilities - icon: 💬 - details: Dive Easily send and manage messages. Harness the power of event listeners for prompt responses to incoming notifications. - - title: Component Builder Utility - icon: 🛠️ - details: Use the component classes to effortlessly create WhatsApp cloud API payloads, ensuring accuracy and efficiency. ---- - diff --git a/apps/website/package.json b/apps/website/package.json deleted file mode 100644 index 5ccb687..0000000 --- a/apps/website/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "wapijs.co", - "version": "0.0.0", - "private": true, - "type": "module", - "main": "index.js", - "license": "Apache-2.0", - "scripts": { - "dev": "vitepress dev --port 3002 --host", - "build": "vitepress build", - "serve": "vitepress serve", - "preview": "vitepress preview" - }, - "dependencies": { - "vitepress": "^1.0.0-beta.2", - "vue": "^3.3.4" - }, - "packageManager": "pnpm@8.7.0" -} diff --git a/apps/website/public/logo.png b/apps/website/public/logo.png deleted file mode 100644 index 34fe29d35f2ad0b05716e54d8f88bccf418f6b6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23081 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 diff --git a/package.json b/package.json index d943553..68fd5ad 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,10 @@ "tsup": "^7.2.0", "turbo": "^1.10.13", "typescript": "^5.2.2", - "vitest": "^0.34.6" + "vitest": "^0.34.6", + "@wapijs/eslint-config": "workspace:*", + "@wapijs/prettier-config": "workspace:*", + "@wapijs/typescript-config": "workspace:*" }, "packageManager": "pnpm@8.7.0" -} \ No newline at end of file +} diff --git a/packages/wapi.js/.eslintrc.js b/packages/wapi.js/.eslintrc.js new file mode 100644 index 0000000..2a53b20 --- /dev/null +++ b/packages/wapi.js/.eslintrc.js @@ -0,0 +1,4 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ['@wapijs/eslint-config/config..node.js'] +} diff --git a/packages/wapi.js/src/client/index.ts b/packages/wapi.js/src/client/index.ts index 464e296..5e0df26 100644 --- a/packages/wapi.js/src/client/index.ts +++ b/packages/wapi.js/src/client/index.ts @@ -9,42 +9,42 @@ import { MessageManager } from '../manager/message' import { type WapiEventDataMap } from '../webhook/type' /** - * wapi client + * The * @implements {ClientInterface} * @extends {EventEmitter} * @class */ export class Client extends EventEmitter implements ClientInterface { /** - * phone number manager to verify phone numbers for your + * Phone number manager to verify phone numbers for your * @type {PhoneNumberManager} * @memberof Client */ phone: PhoneNumberManager /** - * media manager to upload, get and media via whatsapp cloud api + * Media manager to upload, get and media via whatsapp cloud api * @type {MediaManager} * @memberof Client */ media: MediaManager /** - * webhook manager to handle the incoming message and event listening + * Webhook manager to handle the incoming message and event listening * @type {Webhook} * @memberof Client */ webhook: Webhook /** - * message manager allows to send various type of messages and reply to incoming messages + * Message manager to manage the outgoing messaging operations. * @type {MessageManager} * @memberof Client */ message: MessageManager /** - * status of the client + * Status of the client * @type {ClientStatusEnum} * @memberof Client */ @@ -54,27 +54,36 @@ export class Client extends EventEmitter implements ClientInterface { * Unix Timestamp at which client gets into {@link ClientStatusEnum.Ready} state * @type {number} * @memberof Client + * @readonly */ readyAtTimeStamp: number | null = null /** - * requester is an internal utility to communicate with Whatsapp cloud api + * Requester is an internal utility to communicate with Whatsapp cloud api * @type {RequestClient} * @memberof Client */ requester: RequestClient /** + * The base url of the whatsapp cloud api * @ignore * @private + * @static + * @readonly + * @type {string} */ - private static baseUrl = 'graph.facebook.com' + private static readonly baseUrl = 'graph.facebook.com' /** + * The API version of whatsapp cloud api to use * @ignore * @private + * @static + * @readonly + * @type {string} */ - private static apiVersion = 'v19.0' + private static readonly apiVersion = 'v19.0' /** * @param {object} params diff --git a/packages/wapi.js/src/client/interface.ts b/packages/wapi.js/src/client/interface.ts index 47dc9e3..c39e0a4 100644 --- a/packages/wapi.js/src/client/interface.ts +++ b/packages/wapi.js/src/client/interface.ts @@ -7,7 +7,6 @@ import { type Client } from './index' import { type RequestClient } from './request-client' /** - * Main client interface * @interface */ export interface ClientInterface { diff --git a/packages/wapi.js/src/client/request-client.ts b/packages/wapi.js/src/client/request-client.ts index ad8bfaa..105aa70 100644 --- a/packages/wapi.js/src/client/request-client.ts +++ b/packages/wapi.js/src/client/request-client.ts @@ -4,6 +4,7 @@ import { type RequestClientInterface, type RequestClientConfigOptions } from './ /** * Request client use to communicate with whatsapp cloud api using http request * @class + * @implements {RequestClientInterface} */ export class RequestClient implements RequestClientInterface { host: string @@ -36,7 +37,7 @@ export class RequestClient implements RequestClientInterface { method = 'POST' }: { path: string - body?: any + body?: string method?: 'GET' | 'POST' | 'DELETE' }) { try { diff --git a/packages/wapi.js/src/webhook/index.ts b/packages/wapi.js/src/webhook/index.ts index 244da34..dd787dc 100644 --- a/packages/wapi.js/src/webhook/index.ts +++ b/packages/wapi.js/src/webhook/index.ts @@ -2,7 +2,7 @@ import * as EventEmitter from 'events' import { type Client } from '../client' import { WhatsappApiNotificationPayloadSchemaType } from './schema' import * as express from 'express' -import { type Express, json as expressJson } from 'express' +import { type Express, json as expressJson, type Request, type Response } from 'express' import { InteractionNotificationTypeEnum, NotificationMessageTypeEnum, @@ -46,18 +46,30 @@ import { Order, ProductItem } from '../structures/order' import { StickerMessageEvent } from './events/sticker' import { LocationMessageEvent } from './events/location' import { ProductInquiryEvent } from './events/product-inquiry' +import { type WebhookInterface } from './interface' /** + * The webhook client for listening to incoming event notifications * @class * @extends {EventEmitter} + * @implements {WebhookInterface} */ -export class Webhook extends EventEmitter { +export class Webhook extends EventEmitter implements WebhookInterface { private endpoint: string private port = 3000 private server: Express private listening = false private webhookSecret: string private client: Client + + /** + * @constructor + * @param params + * @param {Client} params.client + * @param {string} params.webhookSecret + * @param {string} params.webhookEndpoint + * @param {number} params.port + */ constructor(params: { client: Client webhookSecret: string @@ -72,387 +84,340 @@ export class Webhook extends EventEmitter { this.server = express() this.server.use(expressJson()) this.server.get(this.endpoint, (request, response) => { - const queryToken = request.query['hub.verify_token'] - if (typeof queryToken === 'string') { - if (queryToken === this.webhookSecret) { - response.send(request.query['hub.challenge']) - } else { - response.status(400).send() - } - } else { - // ignore this request - } + this._getRequestHandler(request, response) }) this.server.post(this.endpoint, (request, response) => { - const parsedPayload = WhatsappApiNotificationPayloadSchemaType.safeParse(request.body) - if (parsedPayload.success) { - if (parsedPayload.data.entry.length) { - parsedPayload.data.entry.forEach(entry => { - entry.changes.forEach(change => { - const messages = change.value.messages - const statuses = change.value.statuses - - if (statuses) { - statuses.forEach(status => { - switch (status.status) { - case 'delivered': { - this.client.emit( - 'MessageDelivered', - new MessageDeliveryEvent({ - client: this.client, - data: { - from: status.recipient_id, - timestamp: status.timestamp - } - }) - ) + this._postRequestHandler(request, response) + }) + } - return - } + private _getRequestHandler(request: Request, response: Response) { + const queryToken = request.query['hub.verify_token'] + if (typeof queryToken === 'string') { + if (queryToken === this.webhookSecret) { + response.send(request.query['hub.challenge']) + } else { + response.status(400).send() + } + } else { + // ignore this request + } + } - case 'sent': { - this.client.emit( - 'MessageSent', - new MessageSentEvent({ - client: this.client, - data: { - from: status.recipient_id, - timestamp: status.timestamp - } - }) - ) + public _postRequestHandler(request: Request, response: Response) { + const parsedPayload = WhatsappApiNotificationPayloadSchemaType.safeParse(request.body) + if (parsedPayload.success) { + if (parsedPayload.data.entry.length) { + parsedPayload.data.entry.forEach(entry => { + entry.changes.forEach(change => { + const messages = change.value.messages + const statuses = change.value.statuses + + if (statuses) { + statuses.forEach(status => { + switch (status.status) { + case 'delivered': { + this.client.emit( + 'MessageDelivered', + new MessageDeliveryEvent({ + client: this.client, + data: { + from: status.recipient_id, + timestamp: status.timestamp + } + }) + ) - return - } + return + } - case 'read': { - this.client.emit( - 'MessageRead', - new MessageReadEvent({ - client: this.client, - data: { - from: status.recipient_id, - timestamp: status.timestamp - } - }) - ) + case 'sent': { + this.client.emit( + 'MessageSent', + new MessageSentEvent({ + client: this.client, + data: { + from: status.recipient_id, + timestamp: status.timestamp + } + }) + ) - return - } + return + } - case 'failed': { - if (status.errors) { - if ( - status.errors.find(err => err.code === 130472) - ) { - this.client.emit( - 'MessageUndelivered', - new MessageUndeliveredEvent({ - client: this.client, - data: { - from: status.recipient_id, - timestamp: status.timestamp - } - }) - ) - } else { - this.client.emit( - 'MessageFailed', - new MessageFailedEvent({ - client: this.client, - data: { - from: status.recipient_id, - timestamp: status.timestamp, - // ! TODO: consider the whole array here - failReason: status.errors[0].message - } - }) - ) + case 'read': { + this.client.emit( + 'MessageRead', + new MessageReadEvent({ + client: this.client, + data: { + from: status.recipient_id, + timestamp: status.timestamp } - } else { - // do nothing - } - - return - } + }) + ) - default: - break + return } - }) - } - - if (messages) { - messages.forEach(message => { - switch (message.type) { - case NotificationMessageTypeEnum.Text: { - if (message.context?.referred_product) { - this.client.emit( - 'ProductInquiry', - new ProductInquiryEvent({ - client: this.client, - data: { - text: message.text.body, - from: message.from, - id: message.id, - timestamp: message.timestamp, - catalogId: - message.context.referred_product - .catalog_id, - productId: - message.context.referred_product - .product_retailer_id, - isForwarded: - message.context?.forwarded || false - } - }) - ) - } else if (message.referral) { + + case 'failed': { + if (status.errors) { + if (status.errors.find(err => err.code === 130472)) { this.client.emit( - 'AdInteraction', - new AdInteractionEvent({ + 'MessageUndelivered', + new MessageUndeliveredEvent({ client: this.client, data: { - text: message.text.body, - from: message.from, - id: message.id, - timestamp: message.timestamp, - isForwarded: - message.context?.forwarded || false, - source: { - ctwaClid: - message.referral.ctwa_clid, - description: message.referral.body, - id: message.referral.source_id, - thumbnailUrl: - message.referral.thumbnail_url, - title: message.referral.headline, - type: message.referral.source_type, - url: message.referral.source_url, - mediaType: - message.referral.media_type, - mediaUrl: - message.referral.image_url || - message.referral.video_url - } + from: status.recipient_id, + timestamp: status.timestamp } }) ) } else { this.client.emit( - 'TextMessage', - new TextMessageEvent({ + 'MessageFailed', + new MessageFailedEvent({ client: this.client, data: { - text: new TextMessage({ - text: message.text.body - }), - from: message.from, - messageId: message.id, - timestamp: message.timestamp, - isForwarded: - message.context?.forwarded || false + from: status.recipient_id, + timestamp: status.timestamp, + // ! TODO: consider the whole array here + failReason: status.errors[0].message } }) ) } - - return + } else { + // do nothing } - case NotificationMessageTypeEnum.Audio: { + return + } + + default: + break + } + }) + } + + if (messages) { + messages.forEach(message => { + switch (message.type) { + case NotificationMessageTypeEnum.Text: { + if (message.context?.referred_product) { this.client.emit( - 'AudioMessage', - new AudioMessageEvent({ + 'ProductInquiry', + new ProductInquiryEvent({ client: this.client, data: { + text: message.text.body, from: message.from, - messageId: message.id, - audio: new AudioMessage({ - id: message.audio.id - }), + id: message.id, timestamp: message.timestamp, - mimeType: message.audio.mime_type, - sha256: message.audio.sha256, - mediaId: message.audio.id, + catalogId: + message.context.referred_product + .catalog_id, + productId: + message.context.referred_product + .product_retailer_id, isForwarded: message.context?.forwarded || false } }) ) - - return - } - - case NotificationMessageTypeEnum.Video: { + } else if (message.referral) { this.client.emit( - 'VideoMessage', - new VideoMessageEvent({ + 'AdInteraction', + new AdInteractionEvent({ client: this.client, data: { + text: message.text.body, from: message.from, - messageId: message.id, - video: new VideoMessage({ - id: message.id - }), - mediaId: message.video.id, - mimeType: message.video.mime_type, - sha256: message.video.sha256, + id: message.id, timestamp: message.timestamp, isForwarded: - message.context?.forwarded || false + message.context?.forwarded || false, + source: { + ctwaClid: message.referral.ctwa_clid, + description: message.referral.body, + id: message.referral.source_id, + thumbnailUrl: + message.referral.thumbnail_url, + title: message.referral.headline, + type: message.referral.source_type, + url: message.referral.source_url, + mediaType: message.referral.media_type, + mediaUrl: + message.referral.image_url || + message.referral.video_url + } } }) ) - return - } - - case NotificationMessageTypeEnum.Image: { + } else { this.client.emit( - 'ImageMessage', - new ImageMessageEvent({ + 'TextMessage', + new TextMessageEvent({ client: this.client, data: { + text: new TextMessage({ + text: message.text.body + }), from: message.from, messageId: message.id, - image: new ImageMessage({ - id: message.id - }), - mediaId: message.image.id, timestamp: message.timestamp, - mimeType: message.image.mime_type, - sha256: message.image.sha256, isForwarded: message.context?.forwarded || false } }) ) - - return } - case NotificationMessageTypeEnum.Document: { - this.client.emit( - 'DocumentMessage', - new DocumentMessageEvent({ - client: this.client, - data: { - from: message.from, - messageId: message.id, - document: new DocumentMessage({ - id: message.id, - caption: message.document.caption, - filename: message.document.filename - }), - timestamp: message.timestamp, - mediaId: message.document.id, - mimeType: message.document.mime_type, - sha256: message.document.sha256, - isForwarded: - message.context?.forwarded || false - } - }) - ) + return + } - return - } + case NotificationMessageTypeEnum.Audio: { + this.client.emit( + 'AudioMessage', + new AudioMessageEvent({ + client: this.client, + data: { + from: message.from, + messageId: message.id, + audio: new AudioMessage({ + id: message.audio.id + }), + timestamp: message.timestamp, + mimeType: message.audio.mime_type, + sha256: message.audio.sha256, + mediaId: message.audio.id, + isForwarded: message.context?.forwarded || false + } + }) + ) - case NotificationMessageTypeEnum.Contacts: { - const contacts = message.contacts.map(contact => { - const contactToReturn = new Contact({ - name: contact.name - }) - contact.addresses?.forEach(add => - contactToReturn.addAddress(add) - ) - contact.urls?.forEach(url => - contactToReturn.addUrl(url) - ) - contact.phones?.forEach(phone => - contactToReturn.addPhone(phone) - ) - contact.emails?.forEach(email => - contactToReturn.addEmail(email) - ) - return contactToReturn + return + } + + case NotificationMessageTypeEnum.Video: { + this.client.emit( + 'VideoMessage', + new VideoMessageEvent({ + client: this.client, + data: { + from: message.from, + messageId: message.id, + video: new VideoMessage({ + id: message.id + }), + mediaId: message.video.id, + mimeType: message.video.mime_type, + sha256: message.video.sha256, + timestamp: message.timestamp, + isForwarded: message.context?.forwarded || false + } }) + ) + return + } - this.client.emit( - 'ContactsMessage', - new ContactMessageEvent({ - client: this.client, - data: { - from: message.from, - messageId: message.id, - contact: new ContactMessage({ - contacts: contacts - }), - timestamp: message.timestamp, - isForwarded: - message.context?.forwarded || false - } - }) - ) + case NotificationMessageTypeEnum.Image: { + this.client.emit( + 'ImageMessage', + new ImageMessageEvent({ + client: this.client, + data: { + from: message.from, + messageId: message.id, + image: new ImageMessage({ + id: message.id + }), + mediaId: message.image.id, + timestamp: message.timestamp, + mimeType: message.image.mime_type, + sha256: message.image.sha256, + isForwarded: message.context?.forwarded || false + } + }) + ) - return - } + return + } - case NotificationMessageTypeEnum.Interactive: { - if ( - message.interactive.type === - InteractionNotificationTypeEnum.ListReply - ) { - this.client.emit( - 'ListInteraction', - new ListInteractionEvent({ - client: this.client, - data: { - from: message.from, - messageId: message.id, - timestamp: message.timestamp, - isForwarded: - message.context?.forwarded || false, - description: - message.interactive.list_reply - .description, - title: message.interactive.list_reply - .title, - listId: message.interactive.list_reply - .id - } - }) - ) - } else if ( - message.interactive.type === - InteractionNotificationTypeEnum.ButtonReply - ) { - this.client.emit( - 'ReplyButtonInteraction', - new ReplyButtonInteractionEvent({ - client: this.client, - data: { - from: message.from, - messageId: message.id, - timestamp: message.timestamp, - isForwarded: - message.context?.forwarded || false, - title: message.interactive.button_reply - .title, - buttonId: - message.interactive.button_reply.id - } - }) - ) - } + case NotificationMessageTypeEnum.Document: { + this.client.emit( + 'DocumentMessage', + new DocumentMessageEvent({ + client: this.client, + data: { + from: message.from, + messageId: message.id, + document: new DocumentMessage({ + id: message.id, + caption: message.document.caption, + filename: message.document.filename + }), + timestamp: message.timestamp, + mediaId: message.document.id, + mimeType: message.document.mime_type, + sha256: message.document.sha256, + isForwarded: message.context?.forwarded || false + } + }) + ) - return - } + return + } + + case NotificationMessageTypeEnum.Contacts: { + const contacts = message.contacts.map(contact => { + const contactToReturn = new Contact({ + name: contact.name + }) + contact.addresses?.forEach(add => + contactToReturn.addAddress(add) + ) + contact.urls?.forEach(url => + contactToReturn.addUrl(url) + ) + contact.phones?.forEach(phone => + contactToReturn.addPhone(phone) + ) + contact.emails?.forEach(email => + contactToReturn.addEmail(email) + ) + return contactToReturn + }) + + this.client.emit( + 'ContactsMessage', + new ContactMessageEvent({ + client: this.client, + data: { + from: message.from, + messageId: message.id, + contact: new ContactMessage({ + contacts: contacts + }), + timestamp: message.timestamp, + isForwarded: message.context?.forwarded || false + } + }) + ) - case NotificationMessageTypeEnum.Button: { + return + } + + case NotificationMessageTypeEnum.Interactive: { + if ( + message.interactive.type === + InteractionNotificationTypeEnum.ListReply + ) { this.client.emit( - 'QuickReplyButtonInteraction', - new QuickReplyButtonInteractionEvent({ + 'ListInteraction', + new ListInteractionEvent({ client: this.client, data: { from: message.from, @@ -460,190 +425,229 @@ export class Webhook extends EventEmitter { timestamp: message.timestamp, isForwarded: message.context?.forwarded || false, - buttonPayload: message.button.payload, - buttonText: message.button.text + description: + message.interactive.list_reply + .description, + title: message.interactive.list_reply.title, + listId: message.interactive.list_reply.id } }) ) - return - } - - case NotificationMessageTypeEnum.Order: { + } else if ( + message.interactive.type === + InteractionNotificationTypeEnum.ButtonReply + ) { this.client.emit( - 'OrderReceived', - new OrderMessageEvent({ + 'ReplyButtonInteraction', + new ReplyButtonInteractionEvent({ client: this.client, data: { from: message.from, messageId: message.id, timestamp: message.timestamp, - order: new Order({ - catalogId: message.order.catalog_id, - productItems: - message.order.product_items.map( - item => - new ProductItem({ - currency: item.currency, - itemPrice: - item.item_price, - productRetailerId: - item.product_retailer_id, - quantity: item.quantity - }) - ), - text: message.text - }), isForwarded: - message.context?.forwarded || false + message.context?.forwarded || false, + title: message.interactive.button_reply + .title, + buttonId: + message.interactive.button_reply.id } }) ) - return } - case NotificationMessageTypeEnum.System: { - if ( - message.system.type === - SystemNotificationTypeEnum.CustomerNumberChange - ) { - this.client.emit( - 'CustomerNumberChanged', - new CustomerNumberChangeEvent({ - client: this.client, - changeDescription: message.system.body, - newWaId: message.system.wa_id, - timestamp: message.timestamp, - oldWaId: message.system.customer - }) - ) - } else if ( - message.system.type === - SystemNotificationTypeEnum.CustomerIdentityChange - ) { - this.client.emit( - 'CustomerIdentityChanged', - new CustomerIdentityChangeEvent({ - client: this.client, - creationTimestamp: - message.identity.created_timestamp, - hash: message.identity.hash, - acknowledged: message.identity.acknowledged, - timestamp: message.timestamp - }) - ) - } else { - // ! TOOD: warning here - } - return - } + return + } - case NotificationMessageTypeEnum.Reaction: { - this.client.emit( - 'Reaction', - new ReactionEvent({ - client: this.client, - data: { - from: message.from, - id: message.id, - reaction: new ReactionMessage({ - emoji: message.reaction.emoji, - messageId: message.reaction.message_id - }), - timestamp: message.timestamp, - isForwarded: - message.context?.forwarded || false - } - }) - ) - return - } + case NotificationMessageTypeEnum.Button: { + this.client.emit( + 'QuickReplyButtonInteraction', + new QuickReplyButtonInteractionEvent({ + client: this.client, + data: { + from: message.from, + messageId: message.id, + timestamp: message.timestamp, + isForwarded: + message.context?.forwarded || false, + buttonPayload: message.button.payload, + buttonText: message.button.text + } + }) + ) + return + } - case NotificationMessageTypeEnum.Location: { - this.client.emit( - 'LocationMessage', - new LocationMessageEvent({ - client: this.client, - data: { - from: message.from, - location: new LocationMessage({ - address: message.location.address, - latitude: message.location.latitude, - longitude: message.location.latitude, - name: message.location.name - }), - messageId: message.id, - timestamp: message.timestamp, - isForwarded: - message.context?.forwarded || false - } - }) - ) - return - } + case NotificationMessageTypeEnum.Order: { + this.client.emit( + 'OrderReceived', + new OrderMessageEvent({ + client: this.client, + data: { + from: message.from, + messageId: message.id, + timestamp: message.timestamp, + order: new Order({ + catalogId: message.order.catalog_id, + productItems: + message.order.product_items.map( + item => + new ProductItem({ + currency: item.currency, + itemPrice: item.item_price, + productRetailerId: + item.product_retailer_id, + quantity: item.quantity + }) + ), + text: message.text + }), + isForwarded: message.context?.forwarded || false + } + }) + ) + return + } - case NotificationMessageTypeEnum.Sticker: { + case NotificationMessageTypeEnum.System: { + if ( + message.system.type === + SystemNotificationTypeEnum.CustomerNumberChange + ) { this.client.emit( - 'StickerMessage', - new StickerMessageEvent({ + 'CustomerNumberChanged', + new CustomerNumberChangeEvent({ client: this.client, - data: { - from: message.from, - sticker: new StickerMessage({ - id: message.sticker.id - }), - messageId: message.id, - timestamp: message.timestamp, - mediaId: message.sticker.id, - mimeType: message.sticker.mime_type, - sha256: message.sticker.sha256, - isForwarded: - message.context?.forwarded || false - } + changeDescription: message.system.body, + newWaId: message.system.wa_id, + timestamp: message.timestamp, + oldWaId: message.system.customer }) ) - return - } - case NotificationMessageTypeEnum.Unknown: { + } else if ( + message.system.type === + SystemNotificationTypeEnum.CustomerIdentityChange + ) { this.client.emit( - 'UnknownEvent', - new UnknownEvent({ - code: String(message.errors?.[0].code || ''), - message: message.errors?.[0].message || '', - title: message.errors?.[0].title || '' + 'CustomerIdentityChanged', + new CustomerIdentityChangeEvent({ + client: this.client, + creationTimestamp: + message.identity.created_timestamp, + hash: message.identity.hash, + acknowledged: message.identity.acknowledged, + timestamp: message.timestamp }) ) - return + } else { + // ! TOOD: warning here } + return + } - default: - break + case NotificationMessageTypeEnum.Reaction: { + this.client.emit( + 'Reaction', + new ReactionEvent({ + client: this.client, + data: { + from: message.from, + id: message.id, + reaction: new ReactionMessage({ + emoji: message.reaction.emoji, + messageId: message.reaction.message_id + }), + timestamp: message.timestamp, + isForwarded: message.context?.forwarded || false + } + }) + ) + return } - }) - } - }) - }) - } - response.status(200).send() - } else { - console.error({ parsedPayloadError: JSON.stringify(parsedPayload.error) }) - this.client.emit('Error', new Error('Notification payload parsing failed')) - response.status(500).send() + case NotificationMessageTypeEnum.Location: { + this.client.emit( + 'LocationMessage', + new LocationMessageEvent({ + client: this.client, + data: { + from: message.from, + location: new LocationMessage({ + address: message.location.address, + latitude: message.location.latitude, + longitude: message.location.latitude, + name: message.location.name + }), + messageId: message.id, + timestamp: message.timestamp, + isForwarded: message.context?.forwarded || false + } + }) + ) + return + } + + case NotificationMessageTypeEnum.Sticker: { + this.client.emit( + 'StickerMessage', + new StickerMessageEvent({ + client: this.client, + data: { + from: message.from, + sticker: new StickerMessage({ + id: message.sticker.id + }), + messageId: message.id, + timestamp: message.timestamp, + mediaId: message.sticker.id, + mimeType: message.sticker.mime_type, + sha256: message.sticker.sha256, + isForwarded: message.context?.forwarded || false + } + }) + ) + return + } + case NotificationMessageTypeEnum.Unknown: { + this.client.emit( + 'UnknownEvent', + new UnknownEvent({ + code: String(message.errors?.[0].code || ''), + message: message.errors?.[0].message || '', + title: message.errors?.[0].title || '' + }) + ) + return + } + + default: + break + } + }) + } + }) + }) } - }) + + response.status(200).send() + } else { + console.error({ parsedPayloadError: JSON.stringify(parsedPayload.error) }) + this.client.emit('Error', new Error('Notification payload parsing failed')) + response.status(500).send() + } } /** - * Returns current configured webhook endpoint - * @returns {string} endpoint + * Getter for the webhook endpoint + * @returns {string} */ - getEndpoint() { + getEndpoint(): string { return this.endpoint } /** * Set new webhook endpoint (this will replace the previously set webhook endpoint) - * @param {path} string + * @param {string} */ setEndpoint(path: string) { this.endpoint = path @@ -651,7 +655,7 @@ export class Webhook extends EventEmitter { /** * Returns current configured webhook port - * @returns {number} port + * @returns {number} */ getPort() { return this.port @@ -659,7 +663,7 @@ export class Webhook extends EventEmitter { /** * Set new webhook port (this will replace the previously set webhook port) - * @param {number} port + * @param {number} */ setPort(port: number) { this.port = port @@ -667,7 +671,7 @@ export class Webhook extends EventEmitter { /** * Returns if webhooks is listening - * @returns {boolean} listening + * @returns {boolean} */ isListening(): boolean { return this.listening @@ -683,6 +687,7 @@ export class Webhook extends EventEmitter { // ! TODO: emit the error with JS error here // this.client.emit('Error', ) }) + this.listening = true } } diff --git a/packages/wapi.js/src/webhook/interface.ts b/packages/wapi.js/src/webhook/interface.ts new file mode 100644 index 0000000..6a3c1f7 --- /dev/null +++ b/packages/wapi.js/src/webhook/interface.ts @@ -0,0 +1,10 @@ +import type EventEmitter from 'events' + +export interface WebhookInterface extends EventEmitter { + getEndpoint(): string + setEndpoint: (path: string) => void + getPort: () => number + setPort: (port: number) => void + isListening: () => boolean + listen: (cb: () => void) => void +} diff --git a/packages/wapi.js/tsconfig-cjs.json b/packages/wapi.js/tsconfig-cjs.json index 282d739..97123e3 100644 --- a/packages/wapi.js/tsconfig-cjs.json +++ b/packages/wapi.js/tsconfig-cjs.json @@ -1,9 +1,10 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@wapijs/typescript-config/node.base.json", "compilerOptions": { "module": "CommonJS", "outDir": "dist/cjs" }, "include": ["src/", "*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "lib": ["ESNext"] } diff --git a/packages/wapi.js/tsconfig.json b/packages/wapi.js/tsconfig.json index 9cc2d4f..a5b768d 100644 --- a/packages/wapi.js/tsconfig.json +++ b/packages/wapi.js/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "@wapijs/typescript-config/node.base.json", "include": ["src/", "*.ts"], "compilerOptions": { "module": "ESNext", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c86bf6..796f348 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,6 +26,15 @@ importers: '@vitest/coverage-v8': specifier: ^0.34.6 version: 0.34.6(vitest@0.34.6) + '@wapijs/eslint-config': + specifier: workspace:* + version: link:packages/eslint-config + '@wapijs/prettier-config': + specifier: workspace:* + version: link:packages/prettier-config + '@wapijs/typescript-config': + specifier: workspace:* + version: link:packages/typescript-config concurrently: specifier: ^8.2.1 version: 8.2.2 @@ -69,14 +78,181 @@ importers: specifier: ^0.34.6 version: 0.34.6 - apps/website: + apps/wapijs.co: dependencies: - vitepress: - specifier: ^1.0.0-beta.2 - version: 1.0.0-rc.24(@algolia/client-search@4.20.0)(@types/node@20.8.7)(search-insights@2.9.0)(typescript@5.2.2) - vue: - specifier: ^3.3.4 - version: 3.3.7(typescript@5.2.2) + clsx: + specifier: ^2.1.0 + version: 2.1.1 + next: + specifier: 14.2.3 + version: 14.2.3(react-dom@18.3.0)(react@18.3.0) + react: + specifier: ^18 + version: 18.3.0 + react-dom: + specifier: ^18 + version: 18.3.0(react@18.3.0) + react-wrap-balancer: + specifier: ^1.1.0 + version: 1.1.0(react@18.3.0) + devDependencies: + '@types/node': + specifier: ^20 + version: 20.8.7 + '@types/react': + specifier: ^18 + version: 18.3.0 + '@types/react-dom': + specifier: ^18 + version: 18.3.0 + '@wapijs/eslint-config': + specifier: workspace:* + version: link:../../packages/eslint-config + '@wapijs/prettier-config': + specifier: workspace:* + version: link:../../packages/prettier-config + '@wapijs/tailwind-config': + specifier: workspace:* + version: link:../../packages/tailwind-config + '@wapijs/typescript-config': + specifier: workspace:* + version: link:../../packages/typescript-config + '@wapijs/ui': + specifier: workspace:* + version: link:../../packages/ui + eslint: + specifier: ^8 + version: 8.52.0 + eslint-config-next: + specifier: 14.2.3 + version: 14.2.3(eslint@8.52.0)(typescript@5.2.2) + postcss: + specifier: ^8 + version: 8.4.31 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.3(ts-node@10.9.1) + typescript: + specifier: ^5 + version: 5.2.2 + + packages/eslint-config: + devDependencies: + '@typescript-eslint/eslint-plugin': + specifier: ^7.3.1 + version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': + specifier: ^7.3.1 + version: 7.7.1(eslint@8.57.0)(typescript@5.4.5) + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-config-next: + specifier: ^14.1.4 + version: 14.2.3(eslint@8.57.0)(typescript@5.4.5) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-nibble: + specifier: ^8.1.0 + version: 8.1.0(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + + packages/prettier-config: + devDependencies: + prettier: + specifier: ^3.2.5 + version: 3.2.5 + prettier-plugin-tailwindcss: + specifier: ^0.5.12 + version: 0.5.14(prettier@3.2.5) + + packages/tailwind-config: + dependencies: + '@headlessui/tailwindcss': + specifier: ^0.2.0 + version: 0.2.0(tailwindcss@3.4.3) + '@tailwindcss/typography': + specifier: ^0.5.10 + version: 0.5.12(tailwindcss@3.4.3) + devDependencies: + '@wapijs/prettier-config': + specifier: workspace:* + version: link:../prettier-config + autoprefixer: + specifier: ^10.4.14 + version: 10.4.19(postcss@8.4.31) + postcss: + specifier: ^8.4.21 + version: 8.4.31 + tailwindcss: + specifier: ^3.3.1 + version: 3.4.3(ts-node@10.9.1) + + packages/typescript-config: {} + + packages/ui: + dependencies: + '@headlessui/react': + specifier: ^1.7.17 + version: 1.7.19(react-dom@18.3.0)(react@18.3.0) + '@heroicons/react': + specifier: ^2.1.1 + version: 2.1.3(react@18.3.0) + '@radix-ui/react-scroll-area': + specifier: ^1.0.5 + version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.0 + version: 2.1.1 + framer-motion: + specifier: ^10.17.6 + version: 10.18.0(react-dom@18.3.0)(react@18.3.0) + next: + specifier: 14.1.0 + version: 14.1.0(react-dom@18.3.0)(react@18.3.0) + react-icons: + specifier: ^4.12.0 + version: 4.12.0(react@18.3.0) + tailwind-merge: + specifier: ^2.2.0 + version: 2.3.0 + devDependencies: + '@types/react': + specifier: ^18.2.61 + version: 18.3.0 + '@types/react-dom': + specifier: ^18.2.19 + version: 18.3.0 + '@wapijs/eslint-config': + specifier: workspace:* + version: link:../eslint-config + '@wapijs/prettier-config': + specifier: workspace:* + version: link:../prettier-config + '@wapijs/typescript-config': + specifier: workspace:* + version: link:../typescript-config + eslint: + specifier: ^8.57.0 + version: 8.57.0 + react: + specifier: ^18.3.0 + version: 18.3.0 + tsup: + specifier: ^8.0.2 + version: 8.0.2(ts-node@10.9.1)(typescript@5.4.5) + typescript: + specifier: ^5.3.3 + version: 5.4.5 packages/wapi.js: dependencies: @@ -140,139 +316,9 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.9.0): - resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.9.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - dev: false - - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.9.0): - resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} - peerDependencies: - search-insights: '>= 1 < 3' - dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - search-insights: 2.9.0 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - dev: false - - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): - resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - '@algolia/client-search': 4.20.0 - algoliasearch: 4.20.0 - dev: false - - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): - resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/client-search': 4.20.0 - algoliasearch: 4.20.0 - dev: false - - /@algolia/cache-browser-local-storage@4.20.0: - resolution: {integrity: sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==} - dependencies: - '@algolia/cache-common': 4.20.0 - dev: false - - /@algolia/cache-common@4.20.0: - resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} - dev: false - - /@algolia/cache-in-memory@4.20.0: - resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} - dependencies: - '@algolia/cache-common': 4.20.0 - dev: false - - /@algolia/client-account@4.20.0: - resolution: {integrity: sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==} - dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/client-search': 4.20.0 - '@algolia/transporter': 4.20.0 - dev: false - - /@algolia/client-analytics@4.20.0: - resolution: {integrity: sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==} - dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/client-search': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 - dev: false - - /@algolia/client-common@4.20.0: - resolution: {integrity: sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==} - dependencies: - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 - dev: false - - /@algolia/client-personalization@4.20.0: - resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} - dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 - dev: false - - /@algolia/client-search@4.20.0: - resolution: {integrity: sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==} - dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 - dev: false - - /@algolia/logger-common@4.20.0: - resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} - dev: false - - /@algolia/logger-console@4.20.0: - resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} - dependencies: - '@algolia/logger-common': 4.20.0 - dev: false - - /@algolia/requester-browser-xhr@4.20.0: - resolution: {integrity: sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==} - dependencies: - '@algolia/requester-common': 4.20.0 - dev: false - - /@algolia/requester-common@4.20.0: - resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} - dev: false - - /@algolia/requester-node-http@4.20.0: - resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} - dependencies: - '@algolia/requester-common': 4.20.0 - dev: false - - /@algolia/transporter@4.20.0: - resolution: {integrity: sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==} - dependencies: - '@algolia/cache-common': 4.20.0 - '@algolia/logger-common': 4.20.0 - '@algolia/requester-common': 4.20.0 - dev: false + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} @@ -296,14 +342,10 @@ packages: chalk: 2.4.2 dev: true - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} - engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + dev: true /@babel/highlight@7.22.20: resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} @@ -314,28 +356,17 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser@7.23.0: - resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.0 - dev: false - /@babel/runtime@7.23.2: resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 - dev: true - /@babel/types@7.23.0: - resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + /@babel/runtime@7.24.4: + resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 + regenerator-runtime: 0.14.0 dev: false /@bcoe/v8-coverage@0.2.3: @@ -431,13 +462,13 @@ packages: '@types/node': 20.5.1 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.2.2) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@5.2.2) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@5.4.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 ts-node: 10.9.1(@types/node@20.8.7)(typescript@5.2.2) - typescript: 5.2.2 + typescript: 5.4.5 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -515,50 +546,29 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@docsearch/css@3.5.2: - resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} - dev: false - - /@docsearch/js@3.5.2(@algolia/client-search@4.20.0)(search-insights@2.9.0): - resolution: {integrity: sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==} + /@emotion/is-prop-valid@0.8.8: + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + requiresBuild: true dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(search-insights@2.9.0) - preact: 10.18.1 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - react - - react-dom - - search-insights + '@emotion/memoize': 0.7.4 dev: false + optional: true - /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(search-insights@2.9.0): - resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - search-insights: '>= 1 < 3' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - search-insights: - optional: true - dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.9.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - '@docsearch/css': 3.5.2 - algoliasearch: 4.20.0 - search-insights: 2.9.0 - transitivePeerDependencies: - - '@algolia/client-search' + /@emotion/memoize@0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + requiresBuild: true dev: false + optional: true + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} @@ -566,6 +576,16 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true optional: true /@esbuild/android-arm@0.18.20: @@ -574,6 +594,16 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true optional: true /@esbuild/android-x64@0.18.20: @@ -582,6 +612,16 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true optional: true /@esbuild/darwin-arm64@0.18.20: @@ -590,6 +630,16 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true /@esbuild/darwin-x64@0.18.20: @@ -598,6 +648,16 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true /@esbuild/freebsd-arm64@0.18.20: @@ -606,6 +666,16 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true optional: true /@esbuild/freebsd-x64@0.18.20: @@ -614,6 +684,16 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true /@esbuild/linux-arm64@0.18.20: @@ -622,6 +702,16 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true /@esbuild/linux-arm@0.18.20: @@ -630,6 +720,16 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true /@esbuild/linux-ia32@0.18.20: @@ -638,6 +738,16 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64@0.18.20: @@ -646,6 +756,16 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true /@esbuild/linux-mips64el@0.18.20: @@ -654,6 +774,16 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true /@esbuild/linux-ppc64@0.18.20: @@ -662,6 +792,16 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true /@esbuild/linux-riscv64@0.18.20: @@ -670,6 +810,16 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true /@esbuild/linux-s390x@0.18.20: @@ -678,6 +828,16 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true /@esbuild/linux-x64@0.18.20: @@ -686,6 +846,16 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true /@esbuild/netbsd-x64@0.18.20: @@ -694,6 +864,16 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true /@esbuild/openbsd-x64@0.18.20: @@ -702,6 +882,16 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true /@esbuild/sunos-x64@0.18.20: @@ -710,6 +900,16 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true /@esbuild/win32-arm64@0.18.20: @@ -718,6 +918,16 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true /@esbuild/win32-ia32@0.18.20: @@ -726,6 +936,16 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true /@esbuild/win32-x64@0.18.20: @@ -734,6 +954,16 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): @@ -746,6 +976,21 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + /@eslint-community/regexpp@4.9.1: resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -768,11 +1013,63 @@ packages: - supports-color dev: true + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /@eslint/js@8.52.0: resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@headlessui/react@1.7.19(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} + engines: {node: '>=10'} + peerDependencies: + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + dependencies: + '@tanstack/react-virtual': 3.4.0(react-dom@18.3.0)(react@18.3.0) + client-only: 0.0.1 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + + /@headlessui/tailwindcss@0.2.0(tailwindcss@3.4.3): + resolution: {integrity: sha512-fpL830Fln1SykOCboExsWr3JIVeQKieLJ3XytLe/tt1A0XzqUthOftDmjcCYLW62w7mQI7wXcoPXr3tZ9QfGxw==} + engines: {node: '>=10'} + peerDependencies: + tailwindcss: ^3.0 + dependencies: + tailwindcss: 3.4.3(ts-node@10.9.1) + dev: false + + /@heroicons/react@2.1.3(react@18.3.0): + resolution: {integrity: sha512-fEcPfo4oN345SoqdlCDdSa4ivjaKbk0jTd+oubcgNxnNgAfzysfwWfQUr+51wigiWHQQRiZNd1Ao0M5Y3M2EGg==} + peerDependencies: + react: '>= 16' + dependencies: + react: 18.3.0 + dev: false + /@humanwhocodes/config-array@0.11.13: resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} @@ -784,6 +1081,17 @@ packages: - supports-color dev: true + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -793,6 +1101,10 @@ packages: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + dev: true + /@ianvs/eslint-stats@2.0.0: resolution: {integrity: sha512-DnIVVAiXR4tfWERTiQxr1Prrs/uFEbC1C4gTGORMvbF4k7ENyVQeLcoUfNyhlAj2MB/OeorCrN3wSnYuDOUS6Q==} engines: {node: '>=8.0.0'} @@ -801,6 +1113,18 @@ packages: lodash: 4.17.21 dev: true + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -820,17 +1144,14 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.9 - dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -847,7 +1168,14 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true + + /@next/env@14.1.0: + resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} + dev: false + + /@next/env@14.2.3: + resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} + dev: false /@next/eslint-plugin-next@13.5.6: resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==} @@ -855,18 +1183,184 @@ packages: glob: 7.1.7 dev: true + /@next/eslint-plugin-next@14.2.3: + resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==} + dependencies: + glob: 10.3.10 + dev: true + + /@next/swc-darwin-arm64@14.1.0: + resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-arm64@14.2.3: + resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.1.0: + resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.2.3: + resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.1.0: + resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.2.3: + resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.1.0: + resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.2.3: + resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.1.0: + resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.2.3: + resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.1.0: + resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.2.3: + resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.1.0: + resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.2.3: + resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.1.0: + resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.2.3: + resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.1.0: + resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.2.3: + resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -874,31 +1368,374 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - dev: true - /@rushstack/eslint-patch@1.5.1: - resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true dev: true + optional: true - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true + /@radix-ui/number@1.0.1: + resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + dependencies: + '@babel/runtime': 7.23.2 + dev: false + + /@radix-ui/primitive@1.0.1: + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + dependencies: + '@babel/runtime': 7.23.2 + dev: false + + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@radix-ui/react-context@1.0.1(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@radix-ui/react-direction@1.0.1(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + '@types/react-dom': 18.3.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + '@types/react-dom': 18.3.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + + /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + '@types/react-dom': 18.3.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + + /@radix-ui/react-slot@1.0.2(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@rollup/rollup-android-arm-eabi@4.16.4: + resolution: {integrity: sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.16.4: + resolution: {integrity: sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.16.4: + resolution: {integrity: sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.16.4: + resolution: {integrity: sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.16.4: + resolution: {integrity: sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.16.4: + resolution: {integrity: sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.16.4: + resolution: {integrity: sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.16.4: + resolution: {integrity: sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.16.4: + resolution: {integrity: sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.16.4: + resolution: {integrity: sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.16.4: + resolution: {integrity: sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.16.4: + resolution: {integrity: sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.16.4: + resolution: {integrity: sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.16.4: + resolution: {integrity: sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.16.4: + resolution: {integrity: sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.16.4: + resolution: {integrity: sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rushstack/eslint-patch@1.5.1: + resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false + + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + dependencies: + '@swc/counter': 0.1.3 + tslib: 2.6.2 + dev: false + + /@tailwindcss/typography@0.5.12(tailwindcss@3.4.3): + resolution: {integrity: sha512-CNwpBpconcP7ppxmuq3qvaCxiRWnbhANpY/ruH4L5qs2GCiVDJXde/pjj2HWPV1+Q4G9+V/etrwUYopdcjAlyg==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.3(ts-node@10.9.1) + dev: false + + /@tanstack/react-virtual@3.4.0(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-GZN4xn/Tg5w7gvYeVcMVCeL4pEyUhvg+Cp6KX2Z01C4FRNxIWMgIQ9ibgMarNQfo+gt0PVLcEER4A9sNv/jlow==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@tanstack/virtual-core': 3.4.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + + /@tanstack/virtual-core@3.4.0: + resolution: {integrity: sha512-75jXqXxqq5M5Veb9KP1STi8kA5u408uOOAefk2ftHDGCpUk3RP6zX++QqfbmHJTBiU72NQ+ghgCZVts/Wocz8Q==} + dev: false /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true /@tsconfig/node16@1.0.4: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true /@types/body-parser@1.19.4: resolution: {integrity: sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==} @@ -923,6 +1760,10 @@ packages: '@types/node': 20.8.7 dev: true + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + /@types/express-serve-static-core@4.17.39: resolution: {integrity: sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==} dependencies: @@ -953,25 +1794,14 @@ packages: resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} dev: true + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/linkify-it@3.0.4: - resolution: {integrity: sha512-hPpIeeHb/2UuCw06kSNAOVWgehBLXEo0/fUs0mw3W2qhqX89PI2yvok83MnuctYGCPrabGIoi0fFso4DQ+sNUQ==} - dev: false - - /@types/markdown-it@13.0.5: - resolution: {integrity: sha512-QhJP7hkq3FCrFNx0szMNCT/79CXfcEgUIA3jc5GBfeXqoKsk3R8JZm2wRXJ2DiyjbPE4VMFOSDemLFcUTZmHEQ==} - dependencies: - '@types/linkify-it': 3.0.4 - '@types/mdurl': 1.0.4 - dev: false - - /@types/mdurl@1.0.4: - resolution: {integrity: sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A==} - dev: false - /@types/mime@1.3.4: resolution: {integrity: sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==} dev: true @@ -997,6 +1827,9 @@ packages: resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==} dev: true + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + /@types/qs@6.9.9: resolution: {integrity: sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==} dev: true @@ -1005,10 +1838,25 @@ packages: resolution: {integrity: sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==} dev: true + /@types/react-dom@18.3.0: + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + dependencies: + '@types/react': 18.3.0 + + /@types/react@18.3.0: + resolution: {integrity: sha512-DiUcKjzE6soLyln8NNZmyhcQjVv+WsUIFSqetMN0p8927OztKT4VTfFTqsbAi5oAGIcgOmOajlfBqyptDDjZRw==} + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.2 + /@types/semver@7.5.4: resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + /@types/send@0.17.3: resolution: {integrity: sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==} dependencies: @@ -1024,10 +1872,6 @@ packages: '@types/node': 20.8.7 dev: true - /@types/web-bluetooth@0.0.18: - resolution: {integrity: sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==} - dev: false - /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} engines: {node: ^16.0.0 || >=18.0.0} @@ -1057,6 +1901,35 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.1 + debug: 4.3.4 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@6.8.0(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -1078,14 +1951,64 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.8.0: - resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} + /@typescript-eslint/parser@6.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.1 + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.8.0: + resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: '@typescript-eslint/types': 6.8.0 '@typescript-eslint/visitor-keys': 6.8.0 dev: true + /@typescript-eslint/scope-manager@7.7.1: + resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 + dev: true + /@typescript-eslint/type-utils@6.8.0(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} engines: {node: ^16.0.0 || >=18.0.0} @@ -1106,11 +2029,36 @@ packages: - supports-color dev: true + /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + debug: 4.3.4 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types@6.8.0: resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true + /@typescript-eslint/types@7.7.1: + resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + /@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2): resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -1132,6 +2080,49 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@6.8.0(typescript@5.4.5): + resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5): + resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@6.8.0(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} engines: {node: ^16.0.0 || >=18.0.0} @@ -1151,6 +2142,25 @@ packages: - typescript dev: true + /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys@6.8.0: resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -1159,21 +2169,18 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@typescript-eslint/visitor-keys@7.7.1: + resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.7.1 + eslint-visitor-keys: 3.4.3 + dev: true + /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitejs/plugin-vue@4.3.1(vite@4.5.0)(vue@3.3.7): - resolution: {integrity: sha512-tUBEtWcF7wFtII7ayNiLNDTCE1X1afySEo+XNVMNkFXaThENyCowIEX095QqbJZGTgoOcSVDJGlnde2NG4jtbQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.0.0 - vue: ^3.2.25 - dependencies: - vite: 4.5.0(@types/node@20.8.7) - vue: 3.3.7(typescript@5.2.2) - dev: false - /@vitest/coverage-v8@0.34.6(vitest@0.34.6): resolution: {integrity: sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==} peerDependencies: @@ -1233,168 +2240,6 @@ packages: pretty-format: 29.7.0 dev: true - /@vue/compiler-core@3.3.7: - resolution: {integrity: sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==} - dependencies: - '@babel/parser': 7.23.0 - '@vue/shared': 3.3.7 - estree-walker: 2.0.2 - source-map-js: 1.0.2 - dev: false - - /@vue/compiler-dom@3.3.7: - resolution: {integrity: sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==} - dependencies: - '@vue/compiler-core': 3.3.7 - '@vue/shared': 3.3.7 - dev: false - - /@vue/compiler-sfc@3.3.7: - resolution: {integrity: sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==} - dependencies: - '@babel/parser': 7.23.0 - '@vue/compiler-core': 3.3.7 - '@vue/compiler-dom': 3.3.7 - '@vue/compiler-ssr': 3.3.7 - '@vue/reactivity-transform': 3.3.7 - '@vue/shared': 3.3.7 - estree-walker: 2.0.2 - magic-string: 0.30.5 - postcss: 8.4.31 - source-map-js: 1.0.2 - dev: false - - /@vue/compiler-ssr@3.3.7: - resolution: {integrity: sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==} - dependencies: - '@vue/compiler-dom': 3.3.7 - '@vue/shared': 3.3.7 - dev: false - - /@vue/devtools-api@6.5.1: - resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} - dev: false - - /@vue/reactivity-transform@3.3.7: - resolution: {integrity: sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==} - dependencies: - '@babel/parser': 7.23.0 - '@vue/compiler-core': 3.3.7 - '@vue/shared': 3.3.7 - estree-walker: 2.0.2 - magic-string: 0.30.5 - dev: false - - /@vue/reactivity@3.3.7: - resolution: {integrity: sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==} - dependencies: - '@vue/shared': 3.3.7 - dev: false - - /@vue/runtime-core@3.3.7: - resolution: {integrity: sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==} - dependencies: - '@vue/reactivity': 3.3.7 - '@vue/shared': 3.3.7 - dev: false - - /@vue/runtime-dom@3.3.7: - resolution: {integrity: sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==} - dependencies: - '@vue/runtime-core': 3.3.7 - '@vue/shared': 3.3.7 - csstype: 3.1.2 - dev: false - - /@vue/server-renderer@3.3.7(vue@3.3.7): - resolution: {integrity: sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==} - peerDependencies: - vue: 3.3.7 - dependencies: - '@vue/compiler-ssr': 3.3.7 - '@vue/shared': 3.3.7 - vue: 3.3.7(typescript@5.2.2) - dev: false - - /@vue/shared@3.3.7: - resolution: {integrity: sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==} - dev: false - - /@vueuse/core@10.5.0(vue@3.3.7): - resolution: {integrity: sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==} - dependencies: - '@types/web-bluetooth': 0.0.18 - '@vueuse/metadata': 10.5.0 - '@vueuse/shared': 10.5.0(vue@3.3.7) - vue-demi: 0.14.6(vue@3.3.7) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - - /@vueuse/integrations@10.5.0(focus-trap@7.5.4)(vue@3.3.7): - resolution: {integrity: sha512-fm5sXLCK0Ww3rRnzqnCQRmfjDURaI4xMsx+T+cec0ngQqHx/JgUtm8G0vRjwtonIeTBsH1Q8L3SucE+7K7upJQ==} - peerDependencies: - async-validator: '*' - axios: '*' - change-case: '*' - drauu: '*' - focus-trap: '*' - fuse.js: '*' - idb-keyval: '*' - jwt-decode: '*' - nprogress: '*' - qrcode: '*' - sortablejs: '*' - universal-cookie: '*' - peerDependenciesMeta: - async-validator: - optional: true - axios: - optional: true - change-case: - optional: true - drauu: - optional: true - focus-trap: - optional: true - fuse.js: - optional: true - idb-keyval: - optional: true - jwt-decode: - optional: true - nprogress: - optional: true - qrcode: - optional: true - sortablejs: - optional: true - universal-cookie: - optional: true - dependencies: - '@vueuse/core': 10.5.0(vue@3.3.7) - '@vueuse/shared': 10.5.0(vue@3.3.7) - focus-trap: 7.5.4 - vue-demi: 0.14.6(vue@3.3.7) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - - /@vueuse/metadata@10.5.0: - resolution: {integrity: sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==} - dev: false - - /@vueuse/shared@10.5.0(vue@3.3.7): - resolution: {integrity: sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==} - dependencies: - vue-demi: 0.14.6(vue@3.3.7) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -1422,13 +2267,11 @@ packages: /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -1448,25 +2291,6 @@ packages: uri-js: 4.4.1 dev: true - /algoliasearch@4.20.0: - resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} - dependencies: - '@algolia/cache-browser-local-storage': 4.20.0 - '@algolia/cache-common': 4.20.0 - '@algolia/cache-in-memory': 4.20.0 - '@algolia/client-account': 4.20.0 - '@algolia/client-analytics': 4.20.0 - '@algolia/client-common': 4.20.0 - '@algolia/client-personalization': 4.20.0 - '@algolia/client-search': 4.20.0 - '@algolia/logger-common': 4.20.0 - '@algolia/logger-console': 4.20.0 - '@algolia/requester-browser-xhr': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/requester-node-http': 4.20.0 - '@algolia/transporter': 4.20.0 - dev: false - /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -1503,6 +2327,7 @@ packages: /ansi-sequence-parser@1.1.1: resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} + dev: true /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} @@ -1535,7 +2360,6 @@ packages: /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: true /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -1543,11 +2367,12 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1663,6 +2488,22 @@ packages: has-symbols: 1.0.3 dev: true + /autoprefixer@10.4.19(postcss@8.4.31): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001612 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -1681,7 +2522,6 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1690,7 +2530,6 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -1725,7 +2564,6 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -1738,6 +2576,16 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001612 + electron-to-chromium: 1.4.749 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true /buffer@5.7.1: @@ -1757,6 +2605,23 @@ packages: load-tsconfig: 0.2.5 dev: true + /bundle-require@4.0.2(esbuild@0.19.12): + resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + dependencies: + esbuild: 0.19.12 + load-tsconfig: 0.2.5 + dev: true + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -1779,6 +2644,10 @@ packages: engines: {node: '>=6'} dev: true + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} @@ -1793,6 +2662,9 @@ packages: engines: {node: '>=6'} dev: true + /caniuse-lite@1.0.30001612: + resolution: {integrity: sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==} + /chai@4.3.10: resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} engines: {node: '>=4'} @@ -1862,7 +2734,12 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: true + + /class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + dependencies: + clsx: 2.0.0 + dev: false /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} @@ -1896,6 +2773,10 @@ packages: engines: {node: '>= 10'} dev: true + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -1910,6 +2791,16 @@ packages: engines: {node: '>=0.8'} dev: true + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: false + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1943,7 +2834,6 @@ packages: /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - dev: true /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -1954,7 +2844,6 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true /concurrently@8.2.2: resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} @@ -2022,7 +2911,7 @@ packages: engines: {node: '>= 0.6'} dev: false - /cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@5.2.2): + /cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@5.4.5): resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} engines: {node: '>=v14.21.3'} peerDependencies: @@ -2034,7 +2923,7 @@ packages: '@types/node': 20.5.1 cosmiconfig: 8.3.6(typescript@5.2.2) ts-node: 10.9.1(@types/node@20.8.7)(typescript@5.2.2) - typescript: 5.2.2 + typescript: 5.4.5 dev: true /cosmiconfig@8.3.6(typescript@5.2.2): @@ -2055,7 +2944,6 @@ packages: /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -2066,9 +2954,13 @@ packages: which: 2.0.2 dev: true + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - dev: false /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -2186,6 +3078,9 @@ packages: engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: false + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2194,7 +3089,6 @@ packages: /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: true /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -2203,6 +3097,9 @@ packages: path-type: 4.0.0 dev: true + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -2232,6 +3129,10 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false + /electron-to-chromium@1.4.749: + resolution: {integrity: sha512-LRMMrM9ITOvue0PoBrvNIraVmuDbJV5QC9ierz/z5VilMdPOVMjOtpICNld3PuXuTZ3CHH/UPxX9gHhAPwi+0Q==} + dev: true + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true @@ -2375,6 +3276,38 @@ packages: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 + dev: true + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -2420,6 +3353,56 @@ packages: - supports-color dev: true + /eslint-config-next@14.2.3(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 14.2.3 + '@rushstack/eslint-patch': 1.5.1 + '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + eslint: 8.52.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.52.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.52.0) + eslint-plugin-react: 7.33.2(eslint@8.52.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.52.0) + typescript: 5.2.2 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-config-next@14.2.3(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 14.2.3 + '@rushstack/eslint-patch': 1.5.1 + '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.57.0) + eslint-plugin-react: 7.33.2(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + typescript: 5.4.5 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-config-prettier@9.0.0(eslint@8.52.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true @@ -2429,6 +3412,15 @@ packages: eslint: 8.52.0 dev: true + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + /eslint-filtered-fix@0.3.0(eslint@8.52.0): resolution: {integrity: sha512-UMHOza9epEn9T+yVT8RiCFf0JdALpVzmoH62Ez/zvxM540IyUNAkr7aH2Frkv6zlm9a/gbmq/sc7C4SvzZQXcA==} hasBin: true @@ -2439,6 +3431,16 @@ packages: optionator: 0.9.3 dev: true + /eslint-filtered-fix@0.3.0(eslint@8.57.0): + resolution: {integrity: sha512-UMHOza9epEn9T+yVT8RiCFf0JdALpVzmoH62Ez/zvxM540IyUNAkr7aH2Frkv6zlm9a/gbmq/sc7C4SvzZQXcA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + optionator: 0.9.3 + dev: true + /eslint-formatter-friendly@7.0.0: resolution: {integrity: sha512-WXg2D5kMHcRxIZA3ulxdevi8/BGTXu72pfOO5vXHqcAfClfIWDSlOljROjCSOCcKvilgmHz1jDWbvFCZHjMQ5w==} engines: {node: '>=0.10.0'} @@ -2483,55 +3485,271 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.57.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.8.0)(eslint-plugin-import@2.28.1)(eslint@8.52.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.52.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.57.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + debug: 3.2.7 + eslint: 8.52.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-plugin-import@2.28.1)(eslint@8.52.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.4.5) + debug: 3.2.7 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + debug: 3.2.7 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-nibble@8.1.0(eslint@8.52.0): + resolution: {integrity: sha512-x9H/1oeuKdC0HsaWeBarOryqNLC+7QZfAZIAP0HnGcmiiPktFIQq/D0e+iiCSyqYLSaui3UwvH56sXMrf5oQhw==} + engines: {node: '>=12.0.0'} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@ianvs/eslint-stats': 2.0.0 + chalk: 4.1.2 + eslint: 8.52.0 + eslint-filtered-fix: 0.3.0(eslint@8.52.0) + eslint-formatter-friendly: 7.0.0 + eslint-summary: 1.0.0 + inquirer: 8.2.6 + optionator: 0.9.3 + dev: true + + /eslint-nibble@8.1.0(eslint@8.57.0): + resolution: {integrity: sha512-x9H/1oeuKdC0HsaWeBarOryqNLC+7QZfAZIAP0HnGcmiiPktFIQq/D0e+iiCSyqYLSaui3UwvH56sXMrf5oQhw==} + engines: {node: '>=12.0.0'} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@ianvs/eslint-stats': 2.0.0 + chalk: 4.1.2 + eslint: 8.57.0 + eslint-filtered-fix: 0.3.0(eslint@8.57.0) + eslint-formatter-friendly: 7.0.0 + eslint-summary: 1.0.0 + inquirer: 8.2.6 + optionator: 0.9.3 + dev: true + + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + 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: 8.52.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) + has: 1.0.4 + 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.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 peerDependenciesMeta: '@typescript-eslint/parser': optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.4.5) + 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 - eslint: 8.52.0 + doctrine: 2.1.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.52.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.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 transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack - supports-color dev: true - /eslint-nibble@8.1.0(eslint@8.52.0): - resolution: {integrity: sha512-x9H/1oeuKdC0HsaWeBarOryqNLC+7QZfAZIAP0HnGcmiiPktFIQq/D0e+iiCSyqYLSaui3UwvH56sXMrf5oQhw==} - engines: {node: '>=12.0.0'} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - '@ianvs/eslint-stats': 2.0.0 - chalk: 4.1.2 - eslint: 8.52.0 - eslint-filtered-fix: 0.3.0(eslint@8.52.0) - eslint-formatter-friendly: 7.0.0 - eslint-summary: 1.0.0 - inquirer: 8.2.6 - optionator: 0.9.3 - dev: true - - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0): - resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2540,17 +3758,17 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) 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: 8.52.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) - has: 1.0.4 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 @@ -2558,7 +3776,7 @@ packages: object.groupby: 1.0.1 object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -2590,6 +3808,31 @@ packages: semver: 6.3.1 dev: true + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.57.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.23.2 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.7 + axe-core: 4.8.2 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.57.0 + has: 1.0.4 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + semver: 6.3.1 + dev: true + /eslint-plugin-react-hooks@4.6.0(eslint@8.52.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -2599,6 +3842,15 @@ packages: eslint: 8.52.0 dev: true + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.57.0 + dev: true + /eslint-plugin-react@7.33.2(eslint@8.52.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} @@ -2624,6 +3876,31 @@ packages: string.prototype.matchall: 4.0.10 dev: true + /eslint-plugin-react@7.33.2(eslint@8.57.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.57.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2692,6 +3969,53 @@ packages: - supports-color dev: true + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.9.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.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + 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.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + 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 + transitivePeerDependencies: + - supports-color + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2720,10 +4044,6 @@ packages: engines: {node: '>=4.0'} dev: true - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false - /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2833,7 +4153,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -2847,7 +4166,6 @@ packages: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - dev: true /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} @@ -2868,7 +4186,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} @@ -2914,23 +4231,47 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true - /focus-trap@7.5.4: - resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} - dependencies: - tabbable: 6.2.0 - dev: false - /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} dev: false + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /framer-motion@10.18.0(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + tslib: 2.6.2 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + dev: false + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -2947,7 +4288,6 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -3026,13 +4366,23 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.2 dev: true /glob@7.1.6: @@ -3044,7 +4394,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} @@ -3108,7 +4457,6 @@ packages: /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -3228,6 +4576,11 @@ packages: engines: {node: '>= 4'} dev: true + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -3251,7 +4604,6 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -3325,7 +4677,6 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: true /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -3344,7 +4695,6 @@ packages: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 - dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -3356,7 +4706,6 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} @@ -3386,7 +4735,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} @@ -3412,7 +4760,6 @@ packages: /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} @@ -3558,6 +4905,19 @@ packages: set-function-name: 2.0.1 dev: true + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + /joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -3565,7 +4925,6 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -3603,6 +4962,7 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -3659,11 +5019,9 @@ packages: /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - dev: true /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true /lint-staged@14.0.1: resolution: {integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==} @@ -3730,13 +5088,16 @@ packages: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true + /lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: false + /lodash.isfunction@3.0.9: resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: true /lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} @@ -3744,7 +5105,6 @@ packages: /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} @@ -3798,7 +5158,6 @@ packages: hasBin: true dependencies: js-tokens: 4.0.0 - dev: true /loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} @@ -3806,6 +5165,11 @@ packages: get-func-name: 2.0.2 dev: true + /lru-cache@10.2.1: + resolution: {integrity: sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==} + engines: {node: 14 || >=16.14} + dev: true + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -3822,6 +5186,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -3832,7 +5197,6 @@ packages: /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} @@ -3844,10 +5208,6 @@ packages: engines: {node: '>=8'} dev: true - /mark.js@8.11.1: - resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} - dev: false - /marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} @@ -3887,7 +5247,6 @@ packages: /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} @@ -3900,7 +5259,6 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -3939,7 +5297,6 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -3948,6 +5305,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -3961,9 +5325,10 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minisearch@6.1.0: - resolution: {integrity: sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==} - dev: false + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} @@ -3995,7 +5360,6 @@ packages: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - dev: true /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} @@ -4011,6 +5375,91 @@ packages: engines: {node: '>= 0.6'} dev: false + /next@14.1.0(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.1.0 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001612 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + styled-jsx: 5.1.1(react@18.3.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.1.0 + '@next/swc-darwin-x64': 14.1.0 + '@next/swc-linux-arm64-gnu': 14.1.0 + '@next/swc-linux-arm64-musl': 14.1.0 + '@next/swc-linux-x64-gnu': 14.1.0 + '@next/swc-linux-x64-musl': 14.1.0 + '@next/swc-win32-arm64-msvc': 14.1.0 + '@next/swc-win32-ia32-msvc': 14.1.0 + '@next/swc-win32-x64-msvc': 14.1.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /next@14.2.3(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.2.3 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001612 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + styled-jsx: 5.1.1(react@18.3.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.3 + '@next/swc-darwin-x64': 14.2.3 + '@next/swc-linux-arm64-gnu': 14.2.3 + '@next/swc-linux-arm64-musl': 14.2.3 + '@next/swc-linux-x64-gnu': 14.2.3 + '@next/swc-linux-x64-musl': 14.2.3 + '@next/swc-win32-arm64-msvc': 14.2.3 + '@next/swc-win32-ia32-msvc': 14.2.3 + '@next/swc-win32-x64-msvc': 14.2.3 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -4033,6 +5482,10 @@ packages: /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} dev: true /npm-run-path@4.0.1: @@ -4052,7 +5505,10 @@ packages: /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: true + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} @@ -4126,7 +5582,6 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -4244,7 +5699,6 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -4258,6 +5712,13 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.1 + minipass: 7.0.4 dev: true /path-to-regexp@0.1.7: @@ -4283,7 +5744,6 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} @@ -4291,10 +5751,13 @@ packages: hasBin: true dev: true + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - dev: true /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} @@ -4304,7 +5767,27 @@ packages: pathe: 1.1.1 dev: true - /postcss-load-config@4.0.1(ts-node@10.9.1): + /postcss-import@15.1.0(postcss@8.4.31): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + /postcss-js@4.0.1(postcss@8.4.31): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.31 + + /postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -4317,9 +5800,36 @@ packages: optional: true dependencies: lilconfig: 2.1.0 + postcss: 8.4.31 ts-node: 10.9.1(@types/node@20.8.7)(typescript@5.2.2) yaml: 2.3.1 - dev: true + + /postcss-nested@6.0.1(postcss@8.4.31): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.16 + + /postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} @@ -4329,21 +5839,78 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact@10.18.1: - resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==} - dev: false - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true + /prettier-plugin-tailwindcss@0.5.14(prettier@3.2.5): + resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + dependencies: + prettier: 3.2.5 + dev: true + /prettier@3.0.3: resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: true + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true + /pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4383,7 +5950,6 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} @@ -4405,6 +5971,24 @@ packages: unpipe: 1.0.0 dev: false + /react-dom@18.3.0(react@18.3.0): + resolution: {integrity: sha512-zaKdLBftQJnvb7FtDIpZtsAIb2MZU087RM8bRDZU8LVCCFYjPTsDZJNFUWPcVz3HFSN1n/caxi0ca4B/aaVQGQ==} + peerDependencies: + react: ^18.3.0 + dependencies: + loose-envify: 1.4.0 + react: 18.3.0 + scheduler: 0.23.1 + dev: false + + /react-icons@4.12.0(react@18.3.0): + resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==} + peerDependencies: + react: '*' + dependencies: + react: 18.3.0 + dev: false + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true @@ -4413,6 +5997,25 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /react-wrap-balancer@1.1.0(react@18.3.0): + resolution: {integrity: sha512-EhF3jOZm5Fjx+Cx41e423qOv2c2aOvXAtym2OHqrGeMUnwERIyNsRBgnfT3plB170JmuYvts8K2KSPEIerKr5A==} + peerDependencies: + react: '>=16.8.0 || ^17.0.0 || ^18' + dependencies: + react: 18.3.0 + dev: false + + /react@18.3.0: + resolution: {integrity: sha512-RPutkJftSAldDibyrjuku7q11d3oy6wKOyPe5K1HA/HwwrXcEqBdHsLypkC2FFYjP7bPUa6gbzSBhw4sY2JcDg==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -4446,7 +6049,6 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -4470,7 +6072,6 @@ packages: /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - dev: true /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} @@ -4519,7 +6120,6 @@ packages: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} @@ -4549,7 +6149,6 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} @@ -4568,6 +6167,33 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: true + + /rollup@4.16.4: + resolution: {integrity: sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.16.4 + '@rollup/rollup-android-arm64': 4.16.4 + '@rollup/rollup-darwin-arm64': 4.16.4 + '@rollup/rollup-darwin-x64': 4.16.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.16.4 + '@rollup/rollup-linux-arm-musleabihf': 4.16.4 + '@rollup/rollup-linux-arm64-gnu': 4.16.4 + '@rollup/rollup-linux-arm64-musl': 4.16.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.16.4 + '@rollup/rollup-linux-riscv64-gnu': 4.16.4 + '@rollup/rollup-linux-s390x-gnu': 4.16.4 + '@rollup/rollup-linux-x64-gnu': 4.16.4 + '@rollup/rollup-linux-x64-musl': 4.16.4 + '@rollup/rollup-win32-arm64-msvc': 4.16.4 + '@rollup/rollup-win32-ia32-msvc': 4.16.4 + '@rollup/rollup-win32-x64-msvc': 4.16.4 + fsevents: 2.3.3 + dev: true /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -4578,7 +6204,6 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -4610,8 +6235,10 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /search-insights@2.9.0: - resolution: {integrity: sha512-bkWW9nIHOFkLwjQ1xqVaMbjjO5vhP26ERsH9Y3pKr8imthofEFIxlnOabkmGcw6ksRj9jWidcI65vvjJH/nTGg==} + /scheduler@0.23.1: + resolution: {integrity: sha512-5GKS5JGfiah1O38Vfa9srZE4s3wdHbwjlCrvIookrg2FO9aIwKLOJXuJQFlEfNcVSOXuaL2hzDeY20uVXcUtrw==} + dependencies: + loose-envify: 1.4.0 dev: false /semver@5.7.2: @@ -4632,6 +6259,14 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -4710,6 +6345,7 @@ packages: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 + dev: true /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -4726,6 +6362,11 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4800,6 +6441,11 @@ packages: resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} dev: true + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -4929,6 +6575,23 @@ packages: acorn: 8.10.0 dev: true + /styled-jsx@5.1.1(react@18.3.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: 0.0.1 + react: 18.3.0 + dev: false + /sucrase@3.34.0: resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} engines: {node: '>=8'} @@ -4941,7 +6604,6 @@ packages: mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 - dev: true /supports-color@2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} @@ -4972,12 +6634,43 @@ packages: /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true - /tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + /tailwind-merge@2.3.0: + resolution: {integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==} + dependencies: + '@babel/runtime': 7.24.4 dev: false + /tailwindcss@3.4.3(ts-node@10.9.1): + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.1 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-import: 15.1.0(postcss@8.4.31) + postcss-js: 4.0.1(postcss@8.4.31) + postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1) + postcss-nested: 6.0.1(postcss@8.4.31) + postcss-selector-parser: 6.0.16 + resolve: 1.22.8 + sucrase: 3.34.0 + transitivePeerDependencies: + - ts-node + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -5006,13 +6699,11 @@ packages: engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - dev: true /thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 - dev: true /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} @@ -5045,17 +6736,11 @@ packages: os-tmpdir: 1.0.2 dev: true - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: false - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} @@ -5087,6 +6772,24 @@ packages: typescript: 5.2.2 dev: true + /ts-api-utils@1.0.3(typescript@5.4.5): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.4.5 + dev: true + + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.4.5 + dev: true + /ts-enum-utils@1.0.3: resolution: {integrity: sha512-RX46pmBjxDJNsiXd58whBNbLAMjbfHxF6doJXmg7f52rg6JWSNP7VIS1qDcePhzdHtetAenC81PbPRA2eJIU5g==} dependencies: @@ -5095,7 +6798,6 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true /ts-node@10.9.1(@types/node@20.8.7)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} @@ -5126,7 +6828,6 @@ packages: typescript: 5.2.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} @@ -5137,9 +6838,17 @@ packages: strip-bom: 3.0.0 dev: true + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true /tsup@7.2.0(ts-node@10.9.1)(typescript@5.2.2): resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} @@ -5165,7 +6874,7 @@ packages: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(ts-node@10.9.1) + postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1) resolve-from: 5.0.0 rollup: 3.29.4 source-map: 0.8.0-beta.0 @@ -5177,6 +6886,45 @@ packages: - ts-node dev: true + /tsup@8.0.2(ts-node@10.9.1)(typescript@5.4.5): + resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 4.0.2(esbuild@0.19.12) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.19.12 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1) + resolve-from: 5.0.0 + rollup: 4.16.4 + source-map: 0.8.0-beta.0 + sucrase: 3.34.0 + tree-kill: 1.2.2 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + /turbo-darwin-64@1.10.16: resolution: {integrity: sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg==} cpu: [x64] @@ -5350,6 +7098,12 @@ packages: engines: {node: '>=14.17'} hasBin: true + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /ufo@1.3.1: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true @@ -5376,6 +7130,17 @@ packages: engines: {node: '>= 0.8'} dev: false + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -5384,7 +7149,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} @@ -5393,7 +7157,6 @@ packages: /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true /v8-to-istanbul@9.1.3: resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} @@ -5472,59 +7235,7 @@ packages: rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 - - /vitepress@1.0.0-rc.24(@algolia/client-search@4.20.0)(@types/node@20.8.7)(search-insights@2.9.0)(typescript@5.2.2): - resolution: {integrity: sha512-RpnL8cnOGwiRlBbrYQUm9sYkJbtyOt/wYXk2diTcokY4yvks/5lq9LuSt+MURWB6ZqwpSNHvTmxgaSfLoG0/OA==} - hasBin: true - peerDependencies: - markdown-it-mathjax3: ^4.3.2 - postcss: ^8.4.31 - peerDependenciesMeta: - markdown-it-mathjax3: - optional: true - postcss: - optional: true - dependencies: - '@docsearch/css': 3.5.2 - '@docsearch/js': 3.5.2(@algolia/client-search@4.20.0)(search-insights@2.9.0) - '@types/markdown-it': 13.0.5 - '@vitejs/plugin-vue': 4.3.1(vite@4.5.0)(vue@3.3.7) - '@vue/devtools-api': 6.5.1 - '@vueuse/core': 10.5.0(vue@3.3.7) - '@vueuse/integrations': 10.5.0(focus-trap@7.5.4)(vue@3.3.7) - focus-trap: 7.5.4 - mark.js: 8.11.1 - minisearch: 6.1.0 - shiki: 0.14.5 - vite: 4.5.0(@types/node@20.8.7) - vue: 3.3.7(typescript@5.2.2) - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - - '@types/react' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - less - - lightningcss - - nprogress - - qrcode - - react - - react-dom - - sass - - search-insights - - sortablejs - - stylus - - sugarss - - terser - - typescript - - universal-cookie - dev: false + dev: true /vitest@0.34.6: resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} @@ -5593,40 +7304,11 @@ packages: /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true /vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - - /vue-demi@0.14.6(vue@3.3.7): - resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - dependencies: - vue: 3.3.7(typescript@5.2.2) - dev: false - - /vue@3.3.7(typescript@5.2.2): - resolution: {integrity: sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@vue/compiler-dom': 3.3.7 - '@vue/compiler-sfc': 3.3.7 - '@vue/runtime-dom': 3.3.7 - '@vue/server-renderer': 3.3.7(vue@3.3.7) - '@vue/shared': 3.3.7 - typescript: 5.2.2 - dev: false + dev: true /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -5740,7 +7422,6 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} @@ -5754,7 +7435,6 @@ packages: /yaml@2.3.1: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} - dev: true /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} @@ -5782,7 +7462,6 @@ packages: /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: true /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} diff --git a/tsconfig.base.json b/tsconfig.base.json deleted file mode 100644 index d6fcb57..0000000 --- a/tsconfig.base.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "strictNullChecks": true, - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true, - "strict": true, - "declaration": true, - "newLine": "lf", - "target": "ESNext", - "noImplicitAny": true - }, - "lib": ["ESNext"] -} diff --git a/tsconfig.json b/tsconfig.json index ffcbb94..9f218d8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,5 @@ { - "extends": "./tsconfig.base.json" + "extends": "@wapijs/typescript-config/node.base.json", + "include": ["."], + "exclude": ["packages", "apps", "node_modules", "dist", "build"] } From 3833d6fa9b46ca3ea998079b0805c2347a3dbcf5 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Sat, 27 Apr 2024 11:25:10 +0530 Subject: [PATCH 03/52] feat: WIP Signed-off-by: sarthakjdev --- .github/workflows/release.yaml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 576f8fa..a4d4709 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -75,10 +75,3 @@ jobs: SLACK_TITLE: "🚨🚨🚨 [WAPIJS.CO] MASTER BRANCH BUILD FAILED 🚨🚨🚨" SLACK_USERNAME: sarthakjdev SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} - - - - name: publish-packages - lint: publish - env: - token: ${{ secrets.NPM_PUBLISH_TOKEN }} - From 187be619d3f9165ce6717c088eef6945d5520519 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Sat, 27 Apr 2024 13:11:39 +0530 Subject: [PATCH 04/52] feat: WIP Signed-off-by: sarthakjdev --- .eslintignore | 4 +-- apps/wapijs.co/.eslintrc.js | 5 +++ apps/wapijs.co/.gitignore | 36 +++++++++++++++++++ apps/wapijs.co/README.md | 36 +++++++++++++++++++ apps/wapijs.co/next.config.mjs | 4 +++ apps/wapijs.co/package.json | 34 ++++++++++++++++++ apps/wapijs.co/postcss.config.js | 1 + apps/wapijs.co/prettier.config.js | 1 + .../public/assets/logo/logo-dark.svg | 11 ++++++ .../public/assets/logo/logo-light.svg | 4 +++ .../src/app/docs/[version]/[item]/page.tsx | 5 +++ .../wapijs.co/src/app/docs/[version]/page.tsx | 5 +++ apps/wapijs.co/src/app/error.tsx | 27 ++++++++++++++ apps/wapijs.co/src/app/globals.css | 27 ++++++++++++++ apps/wapijs.co/src/app/layout.tsx | 22 ++++++++++++ apps/wapijs.co/src/app/manifest.ts | 21 +++++++++++ apps/wapijs.co/src/app/not-found.tsx | 35 ++++++++++++++++++ apps/wapijs.co/src/app/page.tsx | 34 ++++++++++++++++++ apps/wapijs.co/src/constant.ts | 1 + apps/wapijs.co/tailwind.config.js | 29 +++++++++++++++ apps/wapijs.co/tsconfig.json | 19 ++++++++++ packages/wapi.js/.eslintrc.js | 2 +- packages/wapi.js/src/webhook/index.ts | 9 ++--- packages/wapi.js/tsconfig-cjs.json | 2 +- packages/wapi.js/tsconfig.json | 2 +- pnpm-lock.yaml | 5 ++- tsconfig.json | 2 +- 27 files changed, 372 insertions(+), 11 deletions(-) create mode 100644 apps/wapijs.co/.eslintrc.js create mode 100644 apps/wapijs.co/.gitignore create mode 100644 apps/wapijs.co/README.md create mode 100644 apps/wapijs.co/next.config.mjs create mode 100644 apps/wapijs.co/package.json create mode 100644 apps/wapijs.co/postcss.config.js create mode 100644 apps/wapijs.co/prettier.config.js create mode 100644 apps/wapijs.co/public/assets/logo/logo-dark.svg create mode 100644 apps/wapijs.co/public/assets/logo/logo-light.svg create mode 100644 apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx create mode 100644 apps/wapijs.co/src/app/docs/[version]/page.tsx create mode 100644 apps/wapijs.co/src/app/error.tsx create mode 100644 apps/wapijs.co/src/app/globals.css create mode 100644 apps/wapijs.co/src/app/layout.tsx create mode 100644 apps/wapijs.co/src/app/manifest.ts create mode 100644 apps/wapijs.co/src/app/not-found.tsx create mode 100644 apps/wapijs.co/src/app/page.tsx create mode 100644 apps/wapijs.co/src/constant.ts create mode 100644 apps/wapijs.co/tailwind.config.js create mode 100644 apps/wapijs.co/tsconfig.json diff --git a/.eslintignore b/.eslintignore index 26bc28e..3e15f6a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,5 +5,5 @@ dist/cjs/** dist/esm/** errors.log .eslintrc.js -packages -apps \ No newline at end of file +packages/** +apps/** \ No newline at end of file diff --git a/apps/wapijs.co/.eslintrc.js b/apps/wapijs.co/.eslintrc.js new file mode 100644 index 0000000..20c1d45 --- /dev/null +++ b/apps/wapijs.co/.eslintrc.js @@ -0,0 +1,5 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + root: true, + extends: ['@wapijs/eslint-config/config.js'] +} diff --git a/apps/wapijs.co/.gitignore b/apps/wapijs.co/.gitignore new file mode 100644 index 0000000..fd3dbb5 --- /dev/null +++ b/apps/wapijs.co/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/apps/wapijs.co/README.md b/apps/wapijs.co/README.md new file mode 100644 index 0000000..c403366 --- /dev/null +++ b/apps/wapijs.co/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/apps/wapijs.co/next.config.mjs b/apps/wapijs.co/next.config.mjs new file mode 100644 index 0000000..4678774 --- /dev/null +++ b/apps/wapijs.co/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/apps/wapijs.co/package.json b/apps/wapijs.co/package.json new file mode 100644 index 0000000..3f26088 --- /dev/null +++ b/apps/wapijs.co/package.json @@ -0,0 +1,34 @@ +{ + "name": "wapijs.co", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@heroicons/react": "^2.1.3", + "clsx": "^2.1.0", + "next": "14.2.3", + "react": "^18", + "react-dom": "^18", + "react-wrap-balancer": "^1.1.0" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "@wapijs/eslint-config": "workspace:*", + "@wapijs/prettier-config": "workspace:*", + "@wapijs/tailwind-config": "workspace:*", + "@wapijs/typescript-config": "workspace:*", + "@wapijs/ui": "workspace:*", + "eslint": "^8", + "eslint-config-next": "14.2.3", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } +} diff --git a/apps/wapijs.co/postcss.config.js b/apps/wapijs.co/postcss.config.js new file mode 100644 index 0000000..20bb527 --- /dev/null +++ b/apps/wapijs.co/postcss.config.js @@ -0,0 +1 @@ +module.exports = require("@wapijs/tailwind-config/postcss.config.js") \ No newline at end of file diff --git a/apps/wapijs.co/prettier.config.js b/apps/wapijs.co/prettier.config.js new file mode 100644 index 0000000..462161a --- /dev/null +++ b/apps/wapijs.co/prettier.config.js @@ -0,0 +1 @@ +module.exports = require("@wapijs/prettier-config/config"); diff --git a/apps/wapijs.co/public/assets/logo/logo-dark.svg b/apps/wapijs.co/public/assets/logo/logo-dark.svg new file mode 100644 index 0000000..1b018cb --- /dev/null +++ b/apps/wapijs.co/public/assets/logo/logo-dark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/apps/wapijs.co/public/assets/logo/logo-light.svg b/apps/wapijs.co/public/assets/logo/logo-light.svg new file mode 100644 index 0000000..7520587 --- /dev/null +++ b/apps/wapijs.co/public/assets/logo/logo-light.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx b/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx new file mode 100644 index 0000000..bbc60fe --- /dev/null +++ b/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx @@ -0,0 +1,5 @@ +const LibraryItem = () => { + return

; +}; + +export default LibraryItem; diff --git a/apps/wapijs.co/src/app/docs/[version]/page.tsx b/apps/wapijs.co/src/app/docs/[version]/page.tsx new file mode 100644 index 0000000..a295771 --- /dev/null +++ b/apps/wapijs.co/src/app/docs/[version]/page.tsx @@ -0,0 +1,5 @@ +const VersionHomePage = () => { + return
; +}; + +export default VersionHomePage; diff --git a/apps/wapijs.co/src/app/error.tsx b/apps/wapijs.co/src/app/error.tsx new file mode 100644 index 0000000..e245871 --- /dev/null +++ b/apps/wapijs.co/src/app/error.tsx @@ -0,0 +1,27 @@ +'use client' + +import Link from 'next/link' +import { Button } from '@wapijs/ui' +import { ArrowPathIcon, ChatBubbleBottomCenterIcon } from '@heroicons/react/24/solid' + +export default function Error({ reset, error }: { error: Error; reset: () => void }) { + console.log({ error: error }) + return ( +
+

+ Oops! Something went wrong{' '} +

+
+ + + + +
+
+ ) +} diff --git a/apps/wapijs.co/src/app/globals.css b/apps/wapijs.co/src/app/globals.css new file mode 100644 index 0000000..5188d6b --- /dev/null +++ b/apps/wapijs.co/src/app/globals.css @@ -0,0 +1,27 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + } +} + +body { + color: rgb(var(--foreground-rgb)); +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/apps/wapijs.co/src/app/layout.tsx b/apps/wapijs.co/src/app/layout.tsx new file mode 100644 index 0000000..523a272 --- /dev/null +++ b/apps/wapijs.co/src/app/layout.tsx @@ -0,0 +1,22 @@ +import type { Metadata } from 'next' +import { League_Spartan } from 'next/font/google' +import './globals.css' +import { clsx } from 'clsx' + +const roboto = League_Spartan({ subsets: ['latin'] }) + +export const metadata: Metadata = { + title: 'Build whatsapp chat bot with ease - Wapi.js' +} + +export default function RootLayout({ + children +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + + {children} + + ) +} diff --git a/apps/wapijs.co/src/app/manifest.ts b/apps/wapijs.co/src/app/manifest.ts new file mode 100644 index 0000000..c44fcf5 --- /dev/null +++ b/apps/wapijs.co/src/app/manifest.ts @@ -0,0 +1,21 @@ +import { type MetadataRoute } from 'next' +import { metaDescription } from '~/constant' + +export default function manifest(): MetadataRoute.Manifest { + return { + name: 'Softlancer', + short_name: 'Softlancer', + description: metaDescription, + start_url: '/', + display: 'standalone', + background_color: '#fff', + theme_color: '#f16232', + icons: [ + { + src: '/favicon.ico', + sizes: 'any', + type: 'image/x-icon' + } + ] + } +} diff --git a/apps/wapijs.co/src/app/not-found.tsx b/apps/wapijs.co/src/app/not-found.tsx new file mode 100644 index 0000000..3f5246e --- /dev/null +++ b/apps/wapijs.co/src/app/not-found.tsx @@ -0,0 +1,35 @@ +import { type Metadata } from 'next' +import Link from 'next/link' +import { Button } from '@wapijs/ui' +import { ChatBubbleBottomCenterIcon } from '@heroicons/react/24/solid' + +export const metadata: Metadata = { robots: 'noindex, nofollow' } + +export default function NotFoundPage() { + return ( +
+
+

404

+

+ Page not found +

+

+ Sorry, we couldn’t find the page you’re looking for. +

+
+ + + + + + + +
+
+
+ ) +} diff --git a/apps/wapijs.co/src/app/page.tsx b/apps/wapijs.co/src/app/page.tsx new file mode 100644 index 0000000..edb3f1f --- /dev/null +++ b/apps/wapijs.co/src/app/page.tsx @@ -0,0 +1,34 @@ +import { Balancer } from 'react-wrap-balancer' +import { Button, ClipboardCopy } from '@wapijs/ui' +import Link from 'next/link' + +export default function Home() { + return ( +
+
+ +

+ Build WhatsApp Chat Bots + Easily. Fast +

+
+
+ +
+
+ + + + + + + +
+ +
+ +
+
+
+ ) +} diff --git a/apps/wapijs.co/src/constant.ts b/apps/wapijs.co/src/constant.ts new file mode 100644 index 0000000..785434a --- /dev/null +++ b/apps/wapijs.co/src/constant.ts @@ -0,0 +1 @@ +export const metaDescription = "" \ No newline at end of file diff --git a/apps/wapijs.co/tailwind.config.js b/apps/wapijs.co/tailwind.config.js new file mode 100644 index 0000000..ad5e645 --- /dev/null +++ b/apps/wapijs.co/tailwind.config.js @@ -0,0 +1,29 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const config = require('@wapijs/tailwind-config/tailwind.config') +const { default: flattenColorPalette } = require('tailwindcss/lib/util/flattenColorPalette') + +console.log({ config }) + +module.exports = { + ...config, + content: [ + './src/pages/**/*.{js,ts,jsx,tsx,mdx}', + './src/components/**/*.{js,ts,jsx,tsx,mdx}', + './src/ui-components/**/*.{js,ts,jsx,tsx,mdx}', + './src/app/**/*.{js,ts,jsx,tsx,mdx}', + '../../packages/ui/src/**/*.{ts,tsx}' + ], + darkMode: 'class', + plugins: [addVariablesForColors] +} + +function addVariablesForColors({ addBase, theme }) { + let allColors = flattenColorPalette(theme('colors')) + let newVars = Object.fromEntries( + Object.entries(allColors).map(([key, val]) => [`--${key}`, val]) + ) + + addBase({ + ':root': newVars + }) +} diff --git a/apps/wapijs.co/tsconfig.json b/apps/wapijs.co/tsconfig.json new file mode 100644 index 0000000..7616a94 --- /dev/null +++ b/apps/wapijs.co/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "@wapijs/typescript-config/next.base.json", + "compilerOptions": { + "paths": { + "~/*": ["./src/*"], + "root/*": ["./*"] + } + }, + "include": [ + "next-env.d.ts", + "next.config.js", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + "tailwind.config.js", + ".eslintrc.js" + ], + "exclude": ["node_modules"] +} diff --git a/packages/wapi.js/.eslintrc.js b/packages/wapi.js/.eslintrc.js index 2a53b20..0863f56 100644 --- a/packages/wapi.js/.eslintrc.js +++ b/packages/wapi.js/.eslintrc.js @@ -1,4 +1,4 @@ /** @type {import("eslint").Linter.Config} */ module.exports = { - extends: ['@wapijs/eslint-config/config..node.js'] + extends: ['@wapijs/eslint-config/config.node.js'] } diff --git a/packages/wapi.js/src/webhook/index.ts b/packages/wapi.js/src/webhook/index.ts index dd787dc..6869a3c 100644 --- a/packages/wapi.js/src/webhook/index.ts +++ b/packages/wapi.js/src/webhook/index.ts @@ -5,6 +5,7 @@ import * as express from 'express' import { type Express, json as expressJson, type Request, type Response } from 'express' import { InteractionNotificationTypeEnum, + MessageStatusEnum, NotificationMessageTypeEnum, SystemNotificationTypeEnum } from './type' @@ -117,7 +118,7 @@ export class Webhook extends EventEmitter implements WebhookInterface { if (statuses) { statuses.forEach(status => { switch (status.status) { - case 'delivered': { + case MessageStatusEnum.Delivered: { this.client.emit( 'MessageDelivered', new MessageDeliveryEvent({ @@ -132,7 +133,7 @@ export class Webhook extends EventEmitter implements WebhookInterface { return } - case 'sent': { + case MessageStatusEnum.Sent: { this.client.emit( 'MessageSent', new MessageSentEvent({ @@ -147,7 +148,7 @@ export class Webhook extends EventEmitter implements WebhookInterface { return } - case 'read': { + case MessageStatusEnum.Read: { this.client.emit( 'MessageRead', new MessageReadEvent({ @@ -162,7 +163,7 @@ export class Webhook extends EventEmitter implements WebhookInterface { return } - case 'failed': { + case MessageStatusEnum.Failed: { if (status.errors) { if (status.errors.find(err => err.code === 130472)) { this.client.emit( diff --git a/packages/wapi.js/tsconfig-cjs.json b/packages/wapi.js/tsconfig-cjs.json index 97123e3..bf9c829 100644 --- a/packages/wapi.js/tsconfig-cjs.json +++ b/packages/wapi.js/tsconfig-cjs.json @@ -4,7 +4,7 @@ "module": "CommonJS", "outDir": "dist/cjs" }, - "include": ["src/", "*.ts"], + "include": ["src/", "*.ts", "./eslintrc.js"], "exclude": ["node_modules", "dist"], "lib": ["ESNext"] } diff --git a/packages/wapi.js/tsconfig.json b/packages/wapi.js/tsconfig.json index a5b768d..9e5da70 100644 --- a/packages/wapi.js/tsconfig.json +++ b/packages/wapi.js/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "@wapijs/typescript-config/node.base.json", - "include": ["src/", "*.ts"], + "include": ["src/", "*.ts", "./.eslintrc.js"], "compilerOptions": { "module": "ESNext", "outDir": "dist/esm" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 796f348..05589ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,6 +80,9 @@ importers: apps/wapijs.co: dependencies: + '@heroicons/react': + specifier: ^2.1.3 + version: 2.1.3(react@18.3.0) clsx: specifier: ^2.1.0 version: 2.1.1 @@ -202,7 +205,7 @@ importers: specifier: ^1.7.17 version: 1.7.19(react-dom@18.3.0)(react@18.3.0) '@heroicons/react': - specifier: ^2.1.1 + specifier: ^2.1.3 version: 2.1.3(react@18.3.0) '@radix-ui/react-scroll-area': specifier: ^1.0.5 diff --git a/tsconfig.json b/tsconfig.json index 9f218d8..11409a8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { "extends": "@wapijs/typescript-config/node.base.json", - "include": ["."], + "include": ["./"], "exclude": ["packages", "apps", "node_modules", "dist", "build"] } From 9aa826a8c2fcc9cfafbde284c16aa00a34dbd26d Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Sat, 27 Apr 2024 13:11:46 +0530 Subject: [PATCH 05/52] feat: WIP Signed-off-by: sarthakjdev --- .github/workflows/documentation-preview.yaml | 90 ++++++++ packages/eslint-config/config.next.js | 138 +++++++++++++ packages/eslint-config/config.node.js | 143 +++++++++++++ packages/eslint-config/package.json | 19 ++ packages/prettier-config/config.js | 12 ++ packages/prettier-config/package.json | 12 ++ packages/tailwind-config/package.json | 19 ++ packages/tailwind-config/postcss.config.js | 6 + packages/tailwind-config/prettier.config.js | 1 + packages/tailwind-config/tailwind.config.js | 204 +++++++++++++++++++ packages/typescript-config/next.base.json | 40 ++++ packages/typescript-config/node.base.json | 13 ++ packages/typescript-config/package.json | 13 ++ packages/ui/.eslintignore | 8 + packages/ui/.eslintrc.js | 4 + packages/ui/package.json | 40 ++++ packages/ui/prettier.config.js | 1 + packages/ui/src/button.tsx | 129 ++++++++++++ packages/ui/src/clipboard-copy.tsx | 35 ++++ packages/ui/src/index.tsx | 2 + packages/ui/tsconfig.json | 5 + 21 files changed, 934 insertions(+) create mode 100644 .github/workflows/documentation-preview.yaml create mode 100644 packages/eslint-config/config.next.js create mode 100644 packages/eslint-config/config.node.js create mode 100644 packages/eslint-config/package.json create mode 100644 packages/prettier-config/config.js create mode 100644 packages/prettier-config/package.json create mode 100644 packages/tailwind-config/package.json create mode 100644 packages/tailwind-config/postcss.config.js create mode 100644 packages/tailwind-config/prettier.config.js create mode 100644 packages/tailwind-config/tailwind.config.js create mode 100644 packages/typescript-config/next.base.json create mode 100644 packages/typescript-config/node.base.json create mode 100644 packages/typescript-config/package.json create mode 100644 packages/ui/.eslintignore create mode 100644 packages/ui/.eslintrc.js create mode 100644 packages/ui/package.json create mode 100644 packages/ui/prettier.config.js create mode 100644 packages/ui/src/button.tsx create mode 100644 packages/ui/src/clipboard-copy.tsx create mode 100644 packages/ui/src/index.tsx create mode 100644 packages/ui/tsconfig.json diff --git a/.github/workflows/documentation-preview.yaml b/.github/workflows/documentation-preview.yaml new file mode 100644 index 0000000..2084f0d --- /dev/null +++ b/.github/workflows/documentation-preview.yaml @@ -0,0 +1,90 @@ +name: Preview Deploy Documentation + +on: + workflow_dispatch: {} + push: + branches-ignore: + - "master" + paths: ["apps/website/**"] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + docs: + environment: Preview + timeout-minutes: 15 + runs-on: ubuntu-latest + env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: User Node.js LTS + uses: actions/setup-node@v2 + + - name: Install pnpm + uses: pnpm/action-setup@v2.2.4 + + - name: Install Vercel CLI + run: pnpm -g add vercel@canary + + - name: Install Dependencies + run: pnpm install --frozen-lockfile + working-directory: apps/website + + - name: Trigger Staging Deployment + run: vercel deploy -y --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt + + - name: Deployment Success + if: ${{ success() }} + uses: actions/github-script@v6 + with: + script: | + const fs = require("fs") + const path = require("path") + const { data: pullRequestData } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ + owner: context.repo.owner, + repo: context.repo.repo, + commit_sha: context.payload.after + }) + + const deploymentUrl = fs.readFileSync(path.resolve(path.resolve(), './deployment-url.txt'), 'utf8') + + if(pullRequestData[0]){ + await github.rest.issues.createComment({ + issue_number: pullRequestData[0].number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `#### 🟢 Deployment success: + Deployed Url: ${deploymentUrl}` + }) + } else { + throw new Error('Pull request data not found') + } + + - name: Deployment Failure + if: ${{ failure() }} + uses: actions/github-script@v5 + with: + script: | + const { data: pullRequestData } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ + owner: context.repo.owner, + repo: context.repo.repo, + commit_sha: context.payload.after + }) + + if(pullRequestData[0]){ + await github.rest.issues.createComment({ + issue_number: pullRequestData[0].number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `#### ❌ Deployment failed: + ` + }) + } else { + throw new Error('Pull request data not found') + } diff --git a/packages/eslint-config/config.next.js b/packages/eslint-config/config.next.js new file mode 100644 index 0000000..2fb040b --- /dev/null +++ b/packages/eslint-config/config.next.js @@ -0,0 +1,138 @@ +const { resolve } = require("node:path"); + +const project = resolve(process.cwd(), "tsconfig.json"); + +module.exports = { + extends: [ + "next/core-web-vitals", + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:import/recommended", + "plugin:import/typescript", + "prettier", + ], + ignorePatterns: "**/*.d.ts", + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint", "import"], + parserOptions: { + project, + tsconfigRootDir: __dirname, + sourceType: "module", + }, + + settings: { + "import/parsers": { + "@typescript-eslint/parser": [".ts", ".tsx"], + }, + "import/resolver": { + typescript: { + project: ["./tsconfig.json"], + }, + node: true, + }, + }, + root: true, + rules: { + // Disallow legacy globals like `length`: https://github.com/microsoft/TypeScript/issues/18433 + "no-restricted-globals": [ + "error", + "closed", + "event", + "fdescribe", + "name", + "length", + "location", + "parent", + "top", + ], + "@typescript-eslint/no-restricted-imports": [ + "error", + { + paths: [ + { + name: "dayjs", + message: "Please use dayjs from ~/util/dayjs instead.", + allowTypeImports: true, + }, + ], + }, + ], + + "react/no-unescaped-entities": "off", + "react-hooks/exhaustive-deps": "error", + + "no-empty-pattern": "off", + "no-debugger": "error", + + "@typescript-eslint/naming-convention": [ + "warn", + { + selector: ["variableLike"], + format: ["UPPER_CASE", "StrictPascalCase", "strictCamelCase"], + leadingUnderscore: "allow", + }, + { + selector: ["typeLike"], + format: ["StrictPascalCase"], + }, + ], + + "@typescript-eslint/consistent-type-imports": [ + "error", + { + fixStyle: "inline-type-imports", + }, + ], + + "import/default": "off", + "import/no-self-import": "error", + "import/no-cycle": [ + "warn", + { + maxDepth: 1, + ignoreExternal: true, + }, + ], + + "@typescript-eslint/no-unnecessary-condition": "off", + "no-restricted-imports": "error", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/ban-types": "warn", + "@typescript-eslint/ban-ts-comment": "warn", + "@typescript-eslint/no-inferrable-types": "warn", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unnecessary-type-assertion": "warn", + "@typescript-eslint/no-unsafe-return": "warn", + "@typescript-eslint/restrict-plus-operands": "warn", + "@typescript-eslint/no-floating-promises": "warn", + "@typescript-eslint/no-misused-promises": "warn", + "@typescript-eslint/require-await": "warn", + "@typescript-eslint/unbound-method": "off", + "@typescript-eslint/no-empty-function": "warn", + "@typescript-eslint/no-empty-interface": "warn", + "@typescript-eslint/triple-slash-reference": "warn", + "no-multi-assign": "warn", + "no-useless-escape": "warn", + "max-statements-per-line": [ + "warn", + { + max: 1, + }, + ], + "import/no-named-as-default": "error", + "import/no-named-as-default-member": "error", + "no-case-declarations": "warn", + "no-extra-boolean-cast": "warn", + "prefer-const": "warn", + "no-constant-condition": "warn", + "no-inner-declarations": "warn", + "no-alert": "warn", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-call": "off", + }, +}; diff --git a/packages/eslint-config/config.node.js b/packages/eslint-config/config.node.js new file mode 100644 index 0000000..c2e085e --- /dev/null +++ b/packages/eslint-config/config.node.js @@ -0,0 +1,143 @@ +const { resolve } = require("node:path"); + +const project = resolve(process.cwd(), "tsconfig.json"); +module.exports = { + extends: [ + "next/core-web-vitals", + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:import/recommended", + "plugin:import/typescript", + "prettier", + ], + ignorePatterns: "**/*.d.ts", + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint", "import"], + parserOptions: { + project: project, + tsconfigRootDir: __dirname, + sourceType: "module", + }, + settings: { + "import/parsers": { + "@typescript-eslint/parser": [".ts", ".tsx"], + }, + "import/resolver": { + typescript: { + project: project, + }, + node: true, + }, + }, + root: true, + rules: { + // Disallow legacy globals like `length`: https://github.com/microsoft/TypeScript/issues/18433 + "no-restricted-globals": [ + "error", + "closed", + "event", + "fdescribe", + "name", + "length", + "location", + "parent", + "top", + ], + + "react/no-unescaped-entities": "off", + "react-hooks/exhaustive-deps": "error", + + "no-empty-pattern": "off", + "no-debugger": "error", + + "@typescript-eslint/naming-convention": [ + "warn", + { + selector: ["variableLike"], + format: ["UPPER_CASE", "StrictPascalCase", "strictCamelCase"], + leadingUnderscore: "allow", + }, + { + selector: ["typeLike"], + format: ["StrictPascalCase"], + }, + ], + + "@typescript-eslint/consistent-type-imports": [ + "error", + { + fixStyle: "inline-type-imports", + }, + ], + + "import/default": "off", + "import/no-self-import": "error", + "import/no-cycle": [ + "warn", + { + maxDepth: 1, + ignoreExternal: true, + }, + ], + + "@typescript-eslint/no-unnecessary-condition": "off", + "@typescript-eslint/no-restricted-imports": [ + "error", + { + paths: [ + { + name: "use-local-storage-state", + message: + "Please use useLocalStorage form ~/hooks/use-local-storage instead", + allowTypeImports: true, + }, + { + name: "dayjs", + message: "Please use dayjs from ~/util/dayjs instead.", + allowTypeImports: true, + }, + ], + }, + ], + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/ban-types": "warn", + "@typescript-eslint/ban-ts-comment": "warn", + "@typescript-eslint/no-inferrable-types": "warn", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unnecessary-type-assertion": "warn", + "@typescript-eslint/no-unsafe-return": "warn", + "@typescript-eslint/restrict-plus-operands": "warn", + "@typescript-eslint/no-floating-promises": "warn", + "@typescript-eslint/no-misused-promises": "warn", + "@typescript-eslint/require-await": "warn", + "@typescript-eslint/unbound-method": "off", // we don't use "this" anyway in the codebase. this adds unnecessary eslint warnings + "@typescript-eslint/no-empty-function": "warn", + "@typescript-eslint/no-empty-interface": "warn", + "@typescript-eslint/triple-slash-reference": "warn", + "no-multi-assign": "warn", + "no-useless-escape": "warn", + "max-statements-per-line": [ + "warn", + { + max: 1, + }, + ], + "import/no-named-as-default": "error", + "import/no-named-as-default-member": "error", + "no-case-declarations": "warn", + "no-extra-boolean-cast": "warn", + "prefer-const": "warn", + "no-constant-condition": "warn", + "no-inner-declarations": "warn", + "no-alert": "warn", + + // ! turn it on later + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-call": "off", + }, +}; diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json new file mode 100644 index 0000000..740b73a --- /dev/null +++ b/packages/eslint-config/package.json @@ -0,0 +1,19 @@ +{ + "name": "@wapijs/eslint-config", + "version": "0.0.0", + "private": true, + "files": [ + "config.next.js", + "config.node.js" + ], + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^7.3.1", + "@typescript-eslint/parser": "^7.3.1", + "eslint": "^8.57.0", + "eslint-config-next": "^14.1.4", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-nibble": "^8.1.0", + "eslint-plugin-import": "^2.29.1" + } +} diff --git a/packages/prettier-config/config.js b/packages/prettier-config/config.js new file mode 100644 index 0000000..8f33e72 --- /dev/null +++ b/packages/prettier-config/config.js @@ -0,0 +1,12 @@ +module.exports = { + arrowParens: "avoid", + trailingComma: "none", + tabWidth: 4, + printWidth: 100, + semi: false, + useTabs: true, + bracketSpacing: true, + bracketSameLine: false, + singleQuote: true, + plugins: ["prettier-plugin-tailwindcss"], +}; diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json new file mode 100644 index 0000000..0cf07d4 --- /dev/null +++ b/packages/prettier-config/package.json @@ -0,0 +1,12 @@ +{ + "name": "@wapijs/prettier-config", + "version": "0.0.0", + "private": true, + "files": [ + "config.js" + ], + "devDependencies": { + "prettier": "^3.2.5", + "prettier-plugin-tailwindcss": "^0.5.12" + } +} diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json new file mode 100644 index 0000000..9daa7b1 --- /dev/null +++ b/packages/tailwind-config/package.json @@ -0,0 +1,19 @@ +{ + "name": "@wapijs/tailwind-config", + "version": "1.0.0", + "private": true, + "files": [ + "tailwind.config.js", + "postcss.config.js" + ], + "devDependencies": { + "@wapijs/prettier-config": "workspace:*", + "autoprefixer": "^10.4.14", + "postcss": "^8.4.21", + "tailwindcss": "^3.3.1" + }, + "dependencies": { + "@headlessui/tailwindcss": "^0.2.0", + "@tailwindcss/typography": "^0.5.10" + } +} diff --git a/packages/tailwind-config/postcss.config.js b/packages/tailwind-config/postcss.config.js new file mode 100644 index 0000000..941cff2 --- /dev/null +++ b/packages/tailwind-config/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +} diff --git a/packages/tailwind-config/prettier.config.js b/packages/tailwind-config/prettier.config.js new file mode 100644 index 0000000..462161a --- /dev/null +++ b/packages/tailwind-config/prettier.config.js @@ -0,0 +1 @@ +module.exports = require("@wapijs/prettier-config/config"); diff --git a/packages/tailwind-config/tailwind.config.js b/packages/tailwind-config/tailwind.config.js new file mode 100644 index 0000000..bddd9b7 --- /dev/null +++ b/packages/tailwind-config/tailwind.config.js @@ -0,0 +1,204 @@ +const colors = require('tailwindcss/colors') + +module.exports = { + content: [ + '../../apps/**/*.{js,ts,jsx,tsx}', + '../../packages/**/*.{js,ts,jsx,tsx}', + './src/**/*.{js,ts,jsx,tsx}' + ], + darkMode: 'class', + theme: { + extend: { + screens: { + sm: '640px', + md: '768px', + lg: '1024px', + xl: '1280px', + '2xl': '1536px' + }, + backgroundImage: { + 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', + 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))' + }, + animation: { + spotlight: 'spotlight 2s ease .75s 1 forwards', + scroll: 'scroll var(--animation-duration, 40s) var(--animation-direction, forwards) linear infinite', + scrollFast: + 'scroll var(--animation-duration, 5s) var(--animation-direction, forwards) linear infinite', + scrollY: + 'scrollY var(--animation-duration, 40s) var(--animation-direction, forwards) linear infinite', + slide: 'slide 70s linear infinite' + }, + keyframes: { + spotlight: { + '0%': { + opacity: 0, + transform: 'translate(-72%, -62%) scale(0.5)' + }, + '100%': { + opacity: 0.5, + transform: 'translate(-50%,-40%) scale(1)' + } + }, + scroll: { + to: { + transform: 'translate(calc(-50% - 0.5rem))' + } + }, + scrollFast: { + to: { + transform: 'translate(calc(-50% - 0.5rem))' + } + }, + scrollY: { + to: { + transform: 'translateY(-50%)' + } + }, + slide: { + '0%': { transform: 'translate3d(0,0,0)' }, + '100%': { transform: 'translate3d(-100%,0,0)' } + } + }, + colors: { + primary: { + 50: '#25D366', + 100: '#25D366', + 200: '#25D366', + 300: '#25D366', + 400: '#25D366', + 500: '#25D366', + 600: '#25D366', + 700: '#25D366', + 800: '#25D366', + 900: '#25D366', + 950: '#25D366' + }, + secondary: colors.gray, + destructive: colors.red, + tremor: { + brand: { + faint: '#eff6ff', // blue-50 + muted: '#bfdbfe', // blue-200 + subtle: '#60a5fa', // blue-400 + DEFAULT: '#3b82f6', // blue-500 + emphasis: '#1d4ed8', // blue-700 + inverted: '#ffffff' // white + }, + background: { + muted: '#f9fafb', // gray-50 + subtle: '#f3f4f6', // gray-100 + DEFAULT: '#ffffff', // white + emphasis: '#374151' // gray-700 + }, + border: { + DEFAULT: '#e5e7eb' // gray-200 + }, + ring: { + DEFAULT: '#e5e7eb' // gray-200 + }, + content: { + subtle: '#9ca3af', // gray-400 + DEFAULT: '#6b7280', // gray-500 + emphasis: '#374151', // gray-700 + strong: '#111827', // gray-900 + inverted: '#ffffff' // white + } + }, + // dark mode + 'dark-tremor': { + brand: { + faint: '#0B1229', // custom + muted: '#172554', // blue-950 + subtle: '#1e40af', // blue-800 + DEFAULT: '#3b82f6', // blue-500 + emphasis: '#60a5fa', // blue-400 + inverted: '#030712' // gray-950 + }, + background: { + muted: '#131A2B', // custom + subtle: '#1f2937', // gray-800 + DEFAULT: '#111827', // gray-900 + emphasis: '#d1d5db' // gray-300 + }, + border: { + DEFAULT: '#1f2937' // gray-800 + }, + ring: { + DEFAULT: '#1f2937' // gray-800 + }, + content: { + subtle: '#4b5563', // gray-600 + DEFAULT: '#6b7280', // gray-500 + emphasis: '#e5e7eb', // gray-200 + strong: '#f9fafb', // gray-50 + inverted: '#000000' // black + } + } + } + } + }, + boxShadow: { + // light + 'tremor-input': '0 1px 2px 0 rgb(0 0 0 / 0.05)', + 'tremor-card': '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)', + 'tremor-dropdown': '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)', + // dark + 'dark-tremor-input': '0 1px 2px 0 rgb(0 0 0 / 0.05)', + 'dark-tremor-card': '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)', + 'dark-tremor-dropdown': '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)' + }, + borderRadius: { + 'tremor-small': '0.375rem', + 'tremor-default': '0.5rem', + 'tremor-full': '9999px' + }, + fontSize: { + 'tremor-label': ['0.75rem'], + 'tremor-default': ['0.875rem', { lineHeight: '1.25rem' }], + 'tremor-title': ['1.125rem', { lineHeight: '1.75rem' }], + 'tremor-metric': ['1.875rem', { lineHeight: '2.25rem' }] + }, + safelist: [ + { + pattern: + /^(bg-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/, + variants: ['hover', 'ui-selected'] + }, + { + pattern: + /^(text-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/, + variants: ['hover', 'ui-selected'] + }, + { + pattern: + /^(border-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/, + variants: ['hover', 'ui-selected'] + }, + { + pattern: + /^(ring-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/ + }, + { + pattern: + /^(stroke-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/ + }, + { + pattern: + /^(fill-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/ + } + ], + plugins: [require('@headlessui/tailwindcss'), addVariablesForColors] +} + +function addVariablesForColors({ addBase, theme }) { + let allColors = flattenColorPalette(theme('colors')) + let newVars = Object.fromEntries( + Object.entries(allColors).map(([key, val]) => [`--${key}`, val]) + ) + + addBase({ + ':root': newVars + }) +} + diff --git a/packages/typescript-config/next.base.json b/packages/typescript-config/next.base.json new file mode 100644 index 0000000..50940ac --- /dev/null +++ b/packages/typescript-config/next.base.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "~/*": ["./src/*"], + "root/*": ["./*"] + } + }, + "include": [ + "next-env.d.ts", + "lint-staged.config.js", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".eslintrc.js", + "prettier.config.js", + "next.config.js", + "postcss.config.js", + "src/*", + "tailwind.config.ts" + ], + "exclude": ["node_modules"] +} diff --git a/packages/typescript-config/node.base.json b/packages/typescript-config/node.base.json new file mode 100644 index 0000000..d6fcb57 --- /dev/null +++ b/packages/typescript-config/node.base.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "strictNullChecks": true, + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true, + "strict": true, + "declaration": true, + "newLine": "lf", + "target": "ESNext", + "noImplicitAny": true + }, + "lib": ["ESNext"] +} diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json new file mode 100644 index 0000000..406d9ac --- /dev/null +++ b/packages/typescript-config/package.json @@ -0,0 +1,13 @@ +{ + "name": "@wapijs/typescript-config", + "version": "0.0.0", + "private": true, + "license": "MIT", + "files": [ + "next.base.json", + "node.base.json" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/packages/ui/.eslintignore b/packages/ui/.eslintignore new file mode 100644 index 0000000..0775f65 --- /dev/null +++ b/packages/ui/.eslintignore @@ -0,0 +1,8 @@ +generated.ts +.eslintrc.js +packages +apps +dist +build +node_modules +src/icons diff --git a/packages/ui/.eslintrc.js b/packages/ui/.eslintrc.js new file mode 100644 index 0000000..99b38aa --- /dev/null +++ b/packages/ui/.eslintrc.js @@ -0,0 +1,4 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ['@wapijs/eslint-config/config.next.js'] +} diff --git a/packages/ui/package.json b/packages/ui/package.json new file mode 100644 index 0000000..03a38cb --- /dev/null +++ b/packages/ui/package.json @@ -0,0 +1,40 @@ +{ + "name": "@wapijs/ui", + "version": "0.0.0", + "sideEffects": false, + "license": "MIT", + "main": "./src/index.tsx", + "types": "./src/index.tsx", + "files": [ + "types.ts" + ], + "scripts": { + "lint": "eslint . --max-warnings 10", + "pretty": "pnpm prettier --write \"src/**/*.{ts,tsx,css}\"" + }, + "devDependencies": { + "@types/react": "^18.2.61", + "@types/react-dom": "^18.2.19", + "@wapijs/eslint-config": "workspace:*", + "@wapijs/prettier-config": "workspace:*", + "@wapijs/typescript-config": "workspace:*", + "eslint": "^8.57.0", + "react": "^18.3.0", + "tsup": "^8.0.2", + "typescript": "^5.3.3" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@headlessui/react": "^1.7.17", + "@heroicons/react": "^2.1.3", + "@radix-ui/react-scroll-area": "^1.0.5", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.0", + "framer-motion": "^10.17.6", + "next": "14.1.0", + "react-icons": "^4.12.0", + "tailwind-merge": "^2.2.0" + } +} diff --git a/packages/ui/prettier.config.js b/packages/ui/prettier.config.js new file mode 100644 index 0000000..d8233e5 --- /dev/null +++ b/packages/ui/prettier.config.js @@ -0,0 +1 @@ +module.exports = require("@wapijs/prettier-config/config.js"); diff --git a/packages/ui/src/button.tsx b/packages/ui/src/button.tsx new file mode 100644 index 0000000..eaed76a --- /dev/null +++ b/packages/ui/src/button.tsx @@ -0,0 +1,129 @@ +import { type FC, type ButtonHTMLAttributes, type DetailedHTMLProps } from 'react' +import { cva, type VariantProps } from 'class-variance-authority' +import { clsx } from 'clsx' + +const buttonClassVariants = cva( + 'inline-flex min-w-max items-center gap-2 flex-shrink-0 dark:ring-offset-secondary-900 border border-transparent font-semibold focus:outline-none disabled:shadow-none disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer', + { + variants: { + intent: { + primary: 'focus:ring-primary-500', + secondary: 'focus:ring-secondary-500', + glass: 'focus:ring-primary-500', + destructive: 'focus:ring-destructive-500', + animate: 'bg-white text-primary-500 border-none' + }, + size: { + small: 'rounded-full px-2.5 py-1.5 text-xs', + medium: 'rounded-full px-5 py-2.5 text-sm', + large: 'rounded-full px-4 py-2.5 text-base', + xLarge: 'rounded-full px-6 py-3.5 text-lg' + }, + variant: { + filled: 'focus:ring-2 focus:ring-offset-2 shadow', + outline: 'focus:ring-2 focus:ring-offset-2 shadow', + text: 'bg-transparent border-none' + }, + fullWidth: { + true: 'w-full justify-center' + } + }, + compoundVariants: [ + // Filled + { + intent: 'primary', + variant: 'filled', + className: + // 'bg-primary-500text-white hover:bg-primary-700 dark:bg-accent-500 dark:text-secondary-900 dark:hover:bg-accent-400' + 'bg-primary-500 text-white hover:bg-primary-600 transition-colors ' + }, + { + intent: 'secondary', + variant: 'filled', + className: + 'bg-black text-white hover:bg-transparent border border-black hover:text-primary-500 transition-colors dark:bg-secondary-500 dark:hover:bg-secondary-400 dark:text-secondary-900' + }, + { + intent: 'glass', + variant: 'filled', + className: + 'bg-gray-500 text-secondary-900 dark:bg-gray-300 dark:text-gray-100 dark:border-gray-300/30 !bg-opacity-10 bg-clip-padding backdrop-blur-xl backdrop-filter hover:!bg-opacity-20' + }, + { + intent: 'destructive', + variant: 'filled', + className: 'bg-destructive-600 text-white hover:bg-destructive-700' + }, + + // Outline + { + intent: 'primary', + variant: 'outline', + className: + // 'bg-transparent hover:bg-primary-50 border-primary-500 text-primary-500 hover:text-primary-700 dark:text-accent-500 dark:border-accent-600 dark:hover:bg-accent-900 dark:hover:text-accent-400' + 'bg-transparent hover:bg-primary-50 border-primary-500 text-primary-500 hover:text-primary-700' + }, + { + intent: 'secondary', + variant: 'outline', + className: + 'bg-transparent hover:bg-secondary-50 border-secondary-500 text-secondary-600 hover:text-secondary-900 dark:text-secondary-700 dark:border-secondary-600 dark:hover:bg-secondary-900 dark:hover:text-secondary-400' + }, + { + intent: 'glass', + variant: 'outline', + className: + 'bg-gray-300 text-gray-800 border-gray-700/30 dark:bg-gray-800 dark:text-gray-200 dark:border-gray-300/30 !bg-opacity-10 bg-clip-padding backdrop-blur-xl backdrop-filter hover:!bg-opacity-20' + }, + { + intent: 'destructive', + variant: 'outline', + className: + 'bg-transparent hover:bg-destructive-50 border-destructive-500 text-destructive-600 hover:text-destructive-700' + }, + + // Text + { + intent: 'primary', + variant: 'text', + className: + // 'bg-transparent text-primary-500 hover:text-primary-700 dark:text-accent-500 dark:hover:text-accent-400' + 'bg-transparent text-primary-500 hover:text-primary-700' + }, + { + intent: 'secondary', + variant: 'text', + className: + 'bg-transparent text-secondary-600 hover:text-secondary-900 dark:text-secondary-700 dark:hover:text-secondary-400' + }, + { + intent: 'glass', + variant: 'text', + className: + 'bg-transparent text-secondary-700 dark:text-gray-400 text-opacity-90 hover:text-opacity-100' + }, + { + intent: 'destructive', + variant: 'text', + className: 'bg-transparent text-destructive-600 hover:text-destructive-700' + } + ], + defaultVariants: { + intent: 'primary', + variant: 'filled', + size: 'medium' + } + } +) + +interface ButtonProps + extends DetailedHTMLProps, HTMLButtonElement>, + VariantProps {} + +const Button: FC = ({ intent, size, variant, fullWidth, className, ...props }) => { + const classes = clsx(buttonClassVariants({ intent, size, variant, fullWidth, className })) + + return
+ -
-
- - - + + + - - - + + + +
+ -
- -
+
+
) diff --git a/packages/ui/src/clipboard-copy.tsx b/packages/ui/src/clipboard-copy.tsx index 17bf2eb..a0a5a40 100644 --- a/packages/ui/src/clipboard-copy.tsx +++ b/packages/ui/src/clipboard-copy.tsx @@ -6,7 +6,7 @@ import { ClipboardDocumentIcon, ClipboardDocumentCheckIcon } from '@heroicons/re const ClipboardCopy: React.FC<{ textToBeCopied: string }> = ({ textToBeCopied }) => { const [isCopied, setIsCopied] = useState(false) return ( -
+
diff --git a/packages/wapi.js/src/webhook/events/base/index.ts b/packages/wapi.js/src/webhook/events/base/index.ts index 8a04e53..e81ac28 100644 --- a/packages/wapi.js/src/webhook/events/base/index.ts +++ b/packages/wapi.js/src/webhook/events/base/index.ts @@ -53,7 +53,6 @@ export abstract class MessageEvent extends BaseEvent implements MessageEventInte async reply>(props: { message: T - phoneNumber: string }): Promise { if (!this.context.from) { throw new Error('No context message id found while replying to message!!') @@ -62,7 +61,7 @@ export abstract class MessageEvent extends BaseEvent implements MessageEventInte // inject the context here this time await this.client.message.reply({ message: props.message, - phoneNumber: props.phoneNumber, + phoneNumber: this.context.from, replyToMessageId: this.messageId }) } From 655e50d490ca5d88d06b5c9e4e7f75c4c9813fb1 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Sat, 27 Apr 2024 22:11:20 +0530 Subject: [PATCH 08/52] feat: wip Signed-off-by: sarthakjdev --- README.md | 53 +++++++++++++++----- apps/wapijs.co/public/assets/usage-flow.gif | Bin 0 -> 484306 bytes 2 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 apps/wapijs.co/public/assets/usage-flow.gif diff --git a/README.md b/README.md index 4bb1549..94ab063 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- wapi.js + wapi.js

@@ -46,19 +46,50 @@ pnpm install wapi.js Kickstart your first WhatsApp application with Wapi.js. Check the [User Manual](./USER_MANUAL.md). -## 🔗 Cloud API References +## 🔗 References - **Message Structures**: Refer to the WhatsApp Docs [here](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/messages). -

- cloud API message structure -

- - **Notification Payloads**: Details can be found [here](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components). -

- cloud-api notification structure -

+## 🔗 Other Links + +- [Website](https://wapijs.co) +- [Documentation](https://wapijs.co/docs) + +## Example Usage + +```typescript +import { Client, TextMessage } from 'wapi.js' + + const whatsappClient = new Client({ + apiAccessToken: process.env.WHATSAPP_API_ACCESS_TOKEN, + businessAccountId: process.env.WHATSAPP_BUSINESS_ACCOUNT_ID, + phoneNumberId: process.env.WHATSAPP_PHONE_NUMBER_ID, + port: 8080, + webhookEndpoint: '/webhook', + webhookSecret: process.env.WHATSAPP_WEBHOOK_SECRET + }) + + await whatsappClient.message.send({ + message: new TextMessage({ text: 'hiii, this is wapijs library' }), + phoneNumber: 'XXXXXXXXXX' + }) + + whatsappClient.on('TextMessage', (message) => { + console.log(message) + }) + + whatsappClient.on('TextMessage', async (message) => { + message.reply({ + message: new TextMessage({ text: 'hiii, this is wapijs library' }),, + }) + }) + + whatsappClient.initiate() + + +``` ## 🧰 Scripts @@ -70,10 +101,6 @@ pnpm run lint # Check eslint errors pnpm run lint:fix # Fix eslint errors ``` -## 🌐 Future Roadmap - -This library is in early development. Please report bugs or issues [here](#). You're also welcome to contribute; see our [Contribution Guidelines](#contribution-guidelines). - ## 🤝 Contribution Guidelines 1. Fork the Project diff --git a/apps/wapijs.co/public/assets/usage-flow.gif b/apps/wapijs.co/public/assets/usage-flow.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd4ac01c325d4d3801e535fc120da11e4d79ba0c GIT binary patch literal 484306 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⪻wVe=DP*-o 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
YhyLx~Jey;@+}iT@5k0>0Od9yS9L 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�utt`b1LV<+fu95GsNp zOZFm?plqZ=VD=+2r_99<1J3Hp+yKvNV^05nHg$0rfWXrc|+_}eSIIG=SltdDs# zu`+Q^<8t3B+p5`_Do#+Xb31*la~^}PH&J%y;7UosLvJ-ZZ`kfR*R8>Zo!cv3 zhON!5XNMI2_t!41=NOCqT=lpY52J{+bVMuKaM+n1vINmb`7IpnZ8#19#}bUBMQpAYr;qfbwh|P`-MAZI(;@a;Owq2^4V0Fh5K_DRBbb zCG;|_ky@epa=nk`Wh<(QtnOK2O3wz6;F$$x4?-0^4s&!GS&=3&k)X2nAVp6i1%}>@ z!pY2%4c=nJ<3u-m`HqI026WIoL4FT`3)l1gBr65Dh5Fs%A+>@qW*vZ%x2U-=?ZP)-1y7 z3q{zZMW=fUNFZQ>23~w5M9Nu<EiWczLm=)vHUL41=8 zY?Ll3$#ygS!nF1#R#fTXN{}Cn zxqw0~5tXf(97W+bz?b!ox{Dk1bxH&{v(_m;@`V3*1Oe+=F!(T+-{U33@YI*#YXk_2 z7jQXf+3&tY!ZQ{4?ls*fR@du*TM&ida41MSdnFqy{TviY1z&Bff#Di?y{o-mJhgFI zMAD6mh?XJi5~4nCcM9TKEC9l+VE4(;!JFkVPNmTxEF~C?Bt9|SImIgu=+s8D^nb;0 z{0x&I+&{5mlz@f&G6ew!bLPsvOsHRji&v*ZxK`m4MHvCUk11kR34vJq*Z=79jU_i)cDbWT_P-<_MF7G&=gBpW-drkCQML zkqNpo7-1I?i|~+NgolD#_Rck(TTX@@?zNPsShGs5$7H{=Ujk6jE_f>)won6MKVAnF zb(q=O%p>Q0t=XWYE%32Ya!K{;ouG76;9curf49tg!C@pIO8S4P$IWGg2n0n-HXwqX2_4lz+f_t z>(%*>tO>dI{WR9i?_qrKxhIfBlcJpGL{w(SCS(l@wPxex%W668T8-p=ZKWCG4}eP3 zWgPCO$7V84-Fv4QjT_4*DEkH=&vcRV-1Ctp7Q%kggM zN|sT|0;oB6LM_D^?CDHHp<3@hU$yJF^M-Q3e#aR{3{@gDlgKoOra)>HM;2n|Vcn=1 zm~qco9j8;cU4MZ~v8V6-r*Zwu)~5rMxtwop*pHd}zfQB&?9|sNeEVQ*=Z5squ6%i~ zU00raY%^kWd(Y9d+mv|Gzhcb+#XYZnMMy*#HOKoTuN;`>lBgy1g~ zf+@-SRU|F@>PbGInZ$AW+bVUk$=ck1U&F?EoAfwKPy?QDy6ct6?i+R=mHq*++tlXL ze$;ui4z4-mq+kUh8du%O=GiQ@da?tcRN=idh1567>P`_puY7!Y1{LZx9K4bpo|&Bh zGV$I!$>LK}H) zZ46uz_!8W(26teJ{h3FT+WN@pZ*G3Y*aZ=A=RNKDfN0RnkVYXhjb~wu^H|e?7 zdkJYvLoSq?!^AN7f}H-4wVz#G&N;bOZl4j7)>RZ^@MC{}dR9wHhGw?ET^S|p@G({w zm=T6~Iv8^T;*^tH4i%$qvrjMoxl#BTT3Z>Ty38>Aj4cUO&d7>yM3&;WE2}z{^uI{* z-EJiw+-SQB!29>L;io4M^<^~(2k%L{>a1)GcJ~a~((FtJchaN@

Kc`7s90pRv2~ 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 Q|7c|!*F!r+R4E~ zV_MrBCuGDaCtEqguQ3wLX8OdP!wb*)gZvi&t|lYjJ2Aque3%YnFChkheR-zWD%`ORsE1s z1Ug1w6nvHRh$g}blba#f${GSNC_$13}T6m zwg*BN%ExT6#QfwZ@1#aJ7KidQX=yrj0SF~aqb00XQ1YHP=s9j-t%qSk$EVoB8)P9Bw=f&htvKf^8$s%H z(P^I)hoYflb(*{!o8wxurP?PHVDC_Nz9|9~!|?}X&xTor`xd1K2FgohpBdFWf4%a3 zRj|Sb#)Q@Phnh7>D?F#Q%w`5$ipxGW=u3n-+JB0y`a2LJi`903@ %3J8|_A!3pK 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 bdpG-z>9w5GH)_dW=2V-kb1H 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%0A6@XcrbAOaj%kiXLuMOjD>j- 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�yby0OXMAl%|g-zB73scKUg*ior?dXOAM zp*Jw`0*MIiEh>~p@dTU1h0F`i*gUn+Gvk%anZ8cnrW3*O%aIpjdA04aiTuVW;KoyS zWBX(=WlhG&u3BDXFX4v5ZWRj)jkA2CMYSdr%VHctz>6_SHKqgHY*-=$mvzeMZc604 z1!_?&M>FejQTRw02uHyqdS;^@&SSR6-Pe2}s%QBV{%(jK) zwQEa|D_~_+r6;;2@pLtk80-Qwn#~*o5yD|1#!-5ROr$1j>SImLGQN8Pcml6QtELf2 zkGX^l(BtP&6ln;?i-*V$&jX@(eGUu!xyfZR)B;HaB*z{hT_0M8J*;MlMpJEJqYN4jjVJONBoQ*J}!BGv`BRn!ssQ z09#R#WK?y@|HOW6u!)jFREU$KG)FnYQruL%RPK}zf95&JNW&2eaY_ZaJQCEHR}{5+ zTL5_}9DQm!f!5EkhD3hnpG-B@G%Eo(7R6uY>0+I2bDZJzG(dI_4^k|NKg`)Ch%x0d zKuP1Rpa>pjMGXWLzt%K`JS(J0X5mG?hP_H^I&VY>zOF-N>zE^Qko2HzwD_LEIU;yH zALM(On`lmeK!nhle3&6H8zI52o_ZI0+uA@YIk7dBz!d4FFRg=vTKPPHSZt&-2I2bm z?Wqq1>0cxk92Abnf-A(Eou<2qNLL#u3rQc&7y=ROYGwH98SjlMd6l3+0E-@BSzWOp zo)Z#eN{1}ZN~LSC3GEDwEvH~tC(!S{9{_VBYD^#}iCqg1HFT85+U6vu$E`xa0z`kA zp%RWMbiED%4AAqA3n4uZWZGDWnVZrrig^7^RRSOs0_9<}l;zIRXUbHtt{sq8j->`fev0UB$5>@Zg)|X!;gQC7cY>iCWGf7*P1ar7{J`6oU{d2y(<8hFNZIhM7Sop8W(F zk%kPQ@rfngBROm+Nf?tEgbPCeYtYw9nj`|>7z)CU1^24S0P>F5d`(A?bTDCUd+(<$ zJd~&)e3~-}E9iiM+p(-QD*&;V44ThZWK=usi9fPsl0md~yIAzt*D_2&1wv(Kxs?kv=< zQj8>XdGHOmFb)Klv@3;}Hij5US@=(!VQ?q-Ghtbi7;jSm0ZhUbSJvIC5e=}DV_t}y zD-t4$hS{P)|qj2)Xt4@>@!w9@fL(*g~|>m{~C zh#%+GrJ^5&TQi(}j#aRqlYPc%*jOs;Tr0X*UUxj@uPDnJVHPhhYe4}y5x@;_FaxBw zr_3#9W1D?lCcMfo|*&7-?9fZV3$3(khEhb|lZX5!iDo#!=W}Jb|sG@1#E$ zC}1I}rzVpK2vX{#rvk!}z$80Be`MGyfi;IsG=|XGugJnkL}+C(;G3CBhU9fw5vfD4 zB?62J;=$5b3*G(pX<7ken_SXe@3a?)UD-Ai{olzHYk z;#t?wiy3v0G%k%wQ>!7|rwrR$jQDGevdS41H?rP5#~M^%{38T$GuP<-{n{{pLinnT zKcHnCXcX4MYAcyz^9KYoZL;5ELQosNaFyMPx#w13Ir0!+bL{G+f zjjp^f?XG*da>?vQqFFV8{eH`2yU^q_PK&D@t~7k|^0+N)OqXfiBE7APalwvpc7^dZl z@iBMWl406AMWzqy)7eqer^{W46&9l;y;PQJ&U+j)8{8Ru^XaWP?WZAmdUA65s@w+c zqzhu)?}IpvE(@{eltOc}*pBi{+xa&QXPbHpj!pZ;p#yIag#u?+iI+y1z7rDz$vgVp=&YxP(V8259i`%hrq2O!$ zv7sqgQwScdKJc@Y`m1l@pZJCIX~0R#x`FCD;1_^eB_N3hRh?ztZe?%ltBTGrwRo(j z6*9xGgsaKqL-l|`hB7?eF;%hurbYAS^CmGh&2gz0)iQ0ydCf_w&07qzx6U;u`?mJk z$_5s2=B*wbUzeCoXY+I&mlAof(!O|JBT#~OD|&$&EPTeCzmfWAt++)d1HMqnli~v$ z_5C;BwcGtV-)q=0>e6un?)q6OJekr_QPeTs)^XAe^<>z*EK_jQ1wP`dV`v7F*x7jM zN%~aL)RF^OWy?)6pd+?h?+-8JTE8~9<%S8~???S21=Jkx3{uaivg~C=4fB~~$H&bo zxfimF&&=1@8?>Hr-5z|RTAh>vgf!iwC&L43>+p$3*+t~__cfin?w?43Hy$YFu0P9f zdU!13?7g95sGf!woZ|gz!s7D74YXdo45o=X4zA2DbM38g6&yFXE>F6sD0bA~V_9_6Ahnv+fiwnM;DXWm_0ULp1whx5^Os*CWIlT79Yq z_yGTllWT_P-qoizSKc9>jNWiq^NRS%$e?UR`0R?k#rVCJYq#kPS(*(AH+pqPvGOwx z-=+%hs6Qq9@QA!MLdA*Y+)82H(A7gv%X_@Qsw7aH8mnndp5I$ z_83EWR(z0bANXa*bKm&q#k@^>?+#4)tGL`*bu`(ucmQ=Ik zo4!8(exI7?bCJ#>dUdi$#H@;w2R9M6OgLx4t*c zjlleP0tMe55>D)Ad-k_Z_|hugjZScTSGkw+^{nyWQOeTsh{alU)<5a0K2(~3dWuc8 zNm-@mqlSA{?(kW})_TFU<#Y6f3~zz%5(l&K2;DnHdirw9>qq8gG@1=rckD-h4}UYX z+`-OPu!=@oawiOBEhMl7#3|~sRd`hQ3)j>a*tiotJ(0O`9d|vvnn>41`D~ni!HzHg zyCZ6T14E0gG8Qse9KujD?sj%_v4lh&KRSknZUdgtg#ppm<1|*Uy+yGWhS<`+lS+u@ z5d?z3TK?L)C;R6M;^eYJsoXw)Z-*gdzS#WA(keWp|5kFF+ANM}U) ztyQGQYR+q7oUN-v^+oL*W^~FSwZFzmOJI!I(PuM*)HuPv9Q9qzZ%}eT8xbyus9f{b zwy@q-X(wUil{wxT3!F7cr{#j=h_uhd-9O7zv?}NKe%2|s1!#PYyk_gCyDa2L5mUjw zZVLbwE7}3p^LJ;`^y7+N^UEWko%Q8@&$6%8n?1aO?^E(UWex$(_7*b$Jm1Iqa_&pdmXbrBp*Z`2)cJn~CpbyPN$x zbn;V~qk*hmto85VGo>i+&O@c}Lg4IrdP;B`r~)|L5W(72!*|$#3NNQaCSbz?b{vT6 z$zH^R*)l=&Uetw2n1Ih=dkd`bC|u8HoreObCq->4oAr-?Et+Ai1|8WT%M{S%!Z$>4yN45E%K=Kul=8tC|~45v9<2j>bn1+d==eurwub6uen_tn+#H1 zUl6s0*LJT3v@+R!|}`y6Yt00fZ#C0+OR9C8@%gAh!zS{ZVi=YmbSKZ?nw=K(UQi8GA**t*;Phg z{xrHdTZOedkL~R_9G6sTl~V|}xWF5az|=7ysgz>O+%Hd^15araF5@x%)c!1}wOn^1$cd(m4$j@5YCf$z~KswE3df2v#; zu=iCju$i}pe@4*+#{Z=1N)w^ppE>4+`#<}hOIbKSd}fG)YC++NxSh_<)ILED4o6#WbhjqmSVco%pK*k-+-RP*&)l`OvLF{dH2Lc_T}J-4d*w=vI%Np)%{t^ zTE*T)D15w*)JKqwB1Y&|@$W)Dr3ctr+$!N6FVcKI{eJ!dX|y+#OOh0OCoABtKpG}Q%1h>1y&F~5o^Jgx=lK4iPoy);`&CXQ3hTv_CO5#@Hl{jtvJZJz3T@CX zlG9>kk1{DnC*;QrjNnwr44Bu)+JVcpX8e{)pJeAPv|g^05P19{P_rQu9tTE6$RC2BY3pfNn_$4@Xspu_=V;^7>QNv~B%`~R zE|bF8^>NbDFdym!kGzJOjNox@w1FhH`)3}?0tO5>)2!}u!iYmn0Uj$Y_(tw3Q4g{S zT)S^PJk~kwuD=RbaR{9E9#iOv^c+WFKTlEhJ+vR=4yf+L=r{GQuKMb7*BA>_H~>)6x;WFx0usE=N3u(h@|yobE5zbJ(OdM!O;9bPr46J#-XpF zf|$&3&S?)O*9@_8v(!YkbZRqRxvS(h#K1&H@ndk8#o+!hJi-6$bM-kZ@iB1ShSM;_ zdRMRpLzEl4;S*k+$N{Z#Q}TkaLa`J@&dI3M~>Z9F#<9Y8q z=8gB+=EbU7x_Z)yQuY;4JHz%a-bQVrmKD)|$H(S?8_nD7DJ0mO zq|oK5o;5eYsx0AppgbA%4l2Z@(H=DJu07^KzK>-{=<1-}Z`^oY4rXJ(J!%)^#O_;j zXmvneZk^f^g;UGgYPic|g^#~8cAtv1`s$?tTgq3&hWcWTsd}CTo;9Cl_JMXo;unq9 zh0&>JBKNTJv8BeN3oQ3*kq{2)zh^8|CX(=gtWUxCR2 zg1_4PZYz!ys8Wsf|Deh0q`;-w#G$QXY9S$h7bNu$JLc`~q@QzFtQR^Itd+K?DxS_o_$qk!v0A0<*09gpbkFt(9*7pv$}G$C}lsno0W4f ze#u_Wgp@h=?&N>S`_+y_<_6eq2rX(@WR?QCNYBr9S*4XI~TilV%)Jc_NjS{{S8-fnNjP} zri9gddLJ}e95$+KvWVFHV{Ly4vu&kYVpzoVquiu5QoYg9@KD0TV@I8i>t(6LwhXUt z58HXJ`9NagTVmLiV8@Pc%1h_hQ|o&S)=ASA#jRcA>MnT~XluUxO>FOp@y})FE+$~w zcil@Iei518^-euH{`rChpOv_}uR%A1j6mJJm)=MW;w)YI^{bdVpOy9^qpF23O&wOw#_t9F(ou;jb15^kL+OqnXMZoTW#p)#%x4Ud!#u%G+N(c+bKx$ND+~5yKFx>XTvp z5{2b1m%6pRH^TqgRS|vzA2h`wjC!TpK#i%0(~9XcVXxJ+Z89QKBkn{p1*(K3uG+^S7mlo z&sr_M`0~g*#bwv)D&BCs`24C}UoJfV`>``x<@YCn+C_N-TKdubcv6o2#R>bviYBKG z6X6k6FDU;yU$tEpsktSq{~x`yRZEdJrPO?td-C&vGc#sP2d#-eTM&G|Pr~Usq{-yp zCAa#XyfVEOjkRn=+8eh#CxzKzN(*7bXx8~U`%7=_^z2c?b;?=_1PI*elfA&MdZoW) z(mmZ}Y~W)GM!sYZkqXi>x)h%+qSji6(lElLl+*VveVp;1ZMek!rh75&!>j00XO&df zz{i&q`HN3A|6_QV_Uh;11(#oK*5#iZSaW&CW#f*H`BBU1uqOV;KU)??KU>quTYq`B zc_H(3VrAxR#s=$Yr?*UtmoxY7UH*1{RuY)}>HA38#-_t}yougjyC18~E0*8fmc6?3 zBc{q>=UuDivyH2_9W+HQXfQHn&z#zWc~g1m@%-{13)(MF6#V;pae?!Lo2UMMP3(TT z#7F&~ahv&{jbm4x!*`XVxbuI$JYT0WwyRthzU_mwTWy@zWkE42`94P==`bj|`p{U6 zzWaQUO2N@RNO8|&^j0}|*zcLT7n)!4GKEFx-1MSvlst%jd5A?id93|aQAY)tHi&FF zD^@xD{N39cOd8PmRID1ask`Hz@cv^}rvB@V>N8sP^qTpjt8K^V$_1BKJ!6%=dT_mZ zxIWW`V_Tp5Cc0ijyUr%!_SvO_ulCey+11?~(Wb>+d&hArJ)*BO_ZTIGF%_ZlVup&B zug=Gae}CR}E6&9X!r1r3h0Mr{%Y4h5e92iH^oUS@c|#9vh?0dUGhyVb07HtrcQY_e zc#@Qb5YpgP&IPY_M3^3JsMn&CBtU#m&9^$lq@ls`?)ak8;ze4NpEnz48e~M_SjNx%Qp;6~em?ZC9Ko2jef++h;$$ z#%>6F&&Q=9j*&0PywGZHA$B&<)rq2UtMTiP`Fz3-fM(P;6wf_DD>PqDJSEA8Dv%EG zRn9YC`>$T7$WeqJFFkVkr$!k|Jdrl=x}1du!P+`TZJnF$WjI`RDT0cRw~Ti#c@O4Lk!rsfpm;BV<3f z4RP~t_FEq9dP4NoGB4ZN(vt-U49rR+S2CqVeg^2h=W`*d8&TqWRx^f~wUW$0a6J>1 zS20UGUxECl5Pr1(Wh5Zd_{*hu4?S+(&M7zPi$108N~X!oXsrBsU?ZtgWKKoRMWt zLfTM%f)*zZkq2B?G;I+3lxxAz$W?S4fW!02@2|FJneX;8TA~F62OAX7@kbg6!PAQ=O1e zs9{;7rIVPU&1u)=FzYyRw-B${C^PHVw{P-W>FpZA>8?09-K#zQ8TsYSVZ4OHl!P|c z!CkGPM2;IyikzN%v(*oLt2v1mOHkf@gb*)WuGzLnlcZ5hZUQ`#iC`|8Z_DHy*ad6} z1QNp$vK&awH&fOi?H8NKwyyB~6J9|E+t}|e=rv#@2tmRjA}eum9iM*_Nr>;*Ve-Xd zATIkYZjjT*Fb@yEO&)plqP`>cM{LJhgoE%U@^|EKxEuG0(J!i>Ulul8;f%*LV_WME z+&>X$iL_ZB#PN*_!V!#Fhs+6i>3$Mt3CnK5cf;qmzIqfxSh{s`>&ZN87}p*%87^Y* zYP{lL24~Ct$U2+x$dBU&(zP#RBt=$*p2il1Uo8iH95|o;p0rAR*S?i2)!P;$DlWGi zbdSsZGI_FW>PWn(N)g-;#ox9nYHW5Z&VAMg6*acga+_oRr=3$LE7od0upIP%wAHN` z5Wmjd-@o;J_y(K6j)bhugPuBbX9u}|KP~oct88njY%e(hDw>|0dN&&h;S_({Zh0&> zLbYrHNCzFm6p$+$GL<@7bBGs*8d(W{tRvda7GHQ2Mo5gn9bl7wJq(%HM!F^?-)5`S zK4M;8c)c!J<&$)Nqw2Pb%>-H#g7N_(F6zCH9I7@ENlGEzf z@++#Y8d<~pZgI%7*VGGalN`{umt7xzk+-_&wDy9}vHqBHqvrO~=h<4txZv7L#C z)TH30%I&Shd5!!XGvtB^)kII~W{U3+%+S;|zowv_(non~(JQgA%4_D(=%O=htreez zP2y%T`pbt@a%>9PuVISA>VI0&LfihnEXANfMs3~rK-{#yqQ*W^Vszg2=1)naBSIyE zsWD$JJhDwm<9NWY9=^?8d4RPfQDV{QVnFKA9x04mb4a0idHZ$)yG2b!k-A&w-hNsB zd|PPK)z*tgIRmZVQyR;VKzFsz-;!rM7R?&0o;Adx|0_=#Az$W-3Hv<6Up?loEgLG3~ppynpo^% zWQMxPuepBq_`MdK)kTY-yJAeB03B1UuTV1(=%K^Rs*Lk;uoM*u!OLH}D>j{?>Fidr z3U=(a6y~6cu;kxLvX8Qb?WS`c_iwCnl=s_!=7UlVmxskLwoLTbQN`6d-MSB-GDod`WoK* z2F9k>v9Fj`W$E)+qgAQbLauq5)q8bUr3RY!v7CLJCGE2#rb@>80gFsam~4)Y6OkMb ziq;iD9<5~uEK;2nc}`8}nIcCYXZ~HFIPOc|R>lw9dZ$!06~6>}8sfXKEd+%DO+!`? z4Vp#UpP7!2xew*?^M8sW;v(EvF(I^gg|n%%{DvtwBKD`Fc%mDo^W$Y)0L-GTVp9A{ z5A0?x&G7*sD#zFQg34@>72yCZsTsvbwMIjh?-1Mro#0TmgseQ4ibM0us#=>ZL{@Ee zvxPS2mdx|>oi_aJWY8W7^<_tlN*z$NME>ThKuna!AjpGX=3!zwz*V*Apg6dc^20Q~ zEHmmQhdyjK4eLBTOSq+rDxD#MhH(SsZSR}I>Q8i=c_HnV3`H}*jVj0Z^jby>3~v9J z@wI-Mr39GTQ$=2jZ?o=6*K>Pvk6MW6xnsT$+m3(GkUPA$b=-G+e_5~5@daTQ%vNR~ z7tmROpD#Y@iCuL0QHI;y+Jv$%S3+FlHY?g)sncHwmV+!0B6TL;+u2ZacHQ~0gy}0X z&lXt>&V6!>aK6QaOdr;GRTZITe)snwcWYhx+B>?F6?PaBmmgW8w{~Yvhm*D$u@iNn z(jCDKtF9gH)rA{}LQcngyyS;#buWsnx(Ll_-0g|IVHB3QnS?oIdBxrOF1pc|cy@)to~-mh#z>>y_n~Xc=RO~V$r2XMXUJW9MkMr;7-(D{@^YCe6%|X2Ont8V zhRu{!jYv!uU%$R8bEaHOZZccpGaOhmQ_VIUYd*J9YrfP?`L(z_ynbuv`7cKl#Vt$U_}tEX^yTP}k(TA(ug~A!JNM-npwi00 z`O31jXT^B`R(FkIS-#6`J@r5<*VOk;QP^yQ=FL{G#lv?>GG`lED#yK7_}(q6nU$FN zANO51eE0DA*(UaZ<9@Ne_i7%^Hap)uzAAnA-qE?)7LH0AufTV-LHlc~w|`q;rmyO~GHEc-5841@G zc{;dX`A2nVI@Fd9_MW}JqQ!0~T)p#3{?s8h*4)xVPaKlN3TC;s{g zjsqze6UV|DC{Oz=ld~CeQM;P5Hdn03JJb_!_U~x~&q#iNn@0|{AN(_|b-W1}lsRI# zLtB{m&v~fiuYhd`Dl%#1Iz!tB-u{LsqSX}w3!WI6Q!puh6)7pQG#8U%l>PqPLs27{(ef z__##aof*jqb-i49;!9Z$=)m8A(GjEeG{IoAH2>*f5Q@nLHvjWv-N~YE6fSOhzj`CE z1pPvZ*lDlp612fGc-l)6%La}U$=tn^L})I(xaSBM zw@Qjd842)bZ9jVG?atQL6$4yFKLaYox+`mFwM7HEb5azl7^ao=crfFB<+(oTBPq!& zEh-{tNqfDj@$x?1yFem}8bMcOAsRasQ|3?fZ-wFqwUhQ+E}POt z3X&lxvNX?y%!0ZdVa;y&qh-&R+{XTsaZL4nspZL?n~ZMtYs5@Hu-^;QbiA{%GC1GJ zuOG6nLZiGC7>r*Sm@r@J5g@E0sBrm26;|(cRNuSRgD`Y(tp27swUALYLBYsWqE`G) zJn6;92{|JztNAd;s2)7#4WSsNXy`qQsyl@oH3uN4DPt%J=>rkvU1W%OTG{N0TAGYi z-5@`|DJBQk`6HXom6M%D5iMWEP7FMOLC3kPG1e6PR_^UQT0NkigydW`=LwMwdtdm|TK6}5OIohT;#LyD?Wl3gX1)3+qyN<2HgviMnalkz0 z(Q?>CGs5`!zT()vV{f{M6G081FJ!UodWn46_J=`zDy4uBFv7o7kfUgo@~@g6>a7V9l!L55Op zkqpF2b5Ly5$~a&wdVS#Gbr?1nivV-?cM8(?VtHVM**e{1EQtp^jt0odSSAnnwGJXF z(ql{uFzl!#9;7Ybd4DG6zI&262j2fMgU|yLO!<_db-4NDTyrYQ7Pj1!4AENz%m82$ zho~*Z9!ut=bF!Ireh1?=c!D+x zXge?c7Y;(P_hES@Z$h9(^_@2S@Yk91pWE@h`fw{n!^Hl zI5f|wXiT(!4F3BSwv`{?Q8&;y=ui=w35SvIth3~8u!R$lu843J$b_+pA}Cyhj`@zc z^c_%PV@_U$s`AUsrHQ8VRJ`O3|HirUPzNZHg>&TqmQt+FIjpS=j2B_es?j*0B2|&b z6k*;RMq9GNc;ci@)01(;;;3sGr~sO&eO3XIA&J*>jox8or? zQ-7a-GK6D;kMmJXaoC?=({4{-2MdEnGAPwme=wz0U9{BCRZt30cD+>Pa|lMZ?w&z) zau;1is&%lpy7u#?T3dnGTmwx-6)CEQui+2IY!C(jl3jE(yVlmJ_RJD1CB@CUKCkWm z`d`@Ev8J$p9sq9ZfU~8wktSgnY26KTFfIaMR@IK|s_yt1x38;iw@;m{aAR7uXpb@K zMTU^nP$|SdfT_EV67X~{jbN{9>(puBr?(3=Y(X{P7|t8~x+~)6TVR%O%=V44vpm!g z5O2Ja_sa*w4~q!ep)@3Frg|f8OuTU@FSAQ5ypvZPTVInWF6$D$d+kDWwDDN{x?y{WJ z)@o8LW&Oey%7eElEL^C^X{d!JLpwa<@VH*sDVQ`-x4eK*pYvGwofk?j#MI!8*PspIJnDo zZ79pDckj5CQ|A!-t0K_xVIMVc(zhdC&M!#zv(IAA`*m)mZ}A**C}yYc_GKM@78Fr5 zamGW;2=y&>H&oDiH|%+DB8S&n@%^mJ#@%l&l4O33C{zUQw&+V? zYPS(5*JkpSorboto%;(0HX^bFchbMPMh`G6yM;rEtM(i8Rt-cFC&waJnsm3H$p8+8^)gPSz=u@Wd?P9K}Ag^(il#gO=SJ)xct5RkC{@V;&SYvXKjbJ9&hsvyO zb6&&XWzBL~F$Eo2!b!o(IY8Q6)GhXtB~rfUWcvhyUhQQO?={4lg3U)acyY8RsilCU z1P|mbi8qpRs!%)FTzaa51)@D^G#|lXzO9-7NR%gnrXxdRFRIBWL$<-v&`Ja9xw(b0da)s8y&8Ap_KP?C<*O(wkUN9^B_UHMD z?WmT+ci*_gZIA;riHpd~1?njFBHE6KL*2?H+p|F?m9Y&WX5FzKIY)`QwL#^d_ef?Y z8LqtIx3cK;RkIX7pob#dzoFM}obI;DsSk1tX>wm&!_PndC2pW4eLmBvO-PpvG3!TH*HoZtlyKWPFqUfhDi13=cFyr2}CL zC(>Bsizax6%YRZtXOeHVjYXE_jC#8%ux6|pi7(4dP|Vr;2G)|W%*aOll)AgX1_IZ< z%m-wkBTaK8tZ>Xv&MiGd5qYa(6-3i_Bbzyq=!(46b3w&no2eCPQX|S+@xSEA7Ttb@ zvcjp5GjI8VY5;u}diyodD~AS6Ts{}_iW?X$-d8NbJ{N_IG%(K%U9rymyq`~Q)V$_> z)vo4qahzYH_QRp8PUk-#NG@*FdEA~LdDs(rCT^bs&o)T_A-h# zMnGYl0MGrZACY$>Wcwokjrk4?Oem) z0jiq2ApgBH2N&{S(gra=hqvm!OV+YHIDRGn$hOtfH(~~{C+C&n6BGu^!aaLdkHWAJ zvbsSy)UL0BQicFNigH)5U(k;6LGYro>FVMeU`OAeVP^%zHG|Y#SsbN#M)1lK1MO~T zb0H^|D|ERh5qSV1V%#X5Pv2w)Lm}{#QPiRCas+)`mm}ne3`poPfz{<1jEd5Xjjcja z403Yp;RuR9GJd936hwU$p&Bdh#x!q%amuMWi9bLh^S2}|jsS6S?mZ_&K_ny+t$h^9 zj0gxG?baHKKlzDtZcebAVMGHu#;@ys8$C0`XKl7mtwY ziMbYJ5jM~aZ~$xCQ*ORUf;7d1-8~5D8@o!WKgc7#AC(u50({l$cj!2T&?W{9M*M0S+JG}Qi~r;AmZ=f);!S%%0qI1NDdLT)IjBg>6Pz+@^z@H z?|{?u>wTMSrd4S#Xs6hmg|k#xH>)3l@Pqx63qp?S>5zli$i3S@NB4ROA=ZpD&<0>3 z&O7;7i}n1s+oA$I75;^8Meco1{<_q`4TuaugO>DB$TE_o%}jhYeldNq{moD5A_yf0 z)Wsm01++(Is6@~V6@*+VwoHMizyzNZoPZB>voSa%5~To}Whq1sNE8Fl1b8%`2%7Bi3qBaZ!f3rKl8()4ZsK$saz3e zz!sw|MTPQ-2iX`E7<;-0n@PufS2-Vfl)-IauK35co+%~;wx}(drCeyuipiuY?85he85gjAn`+Xq^Apd z_FeT9qS7KZ$uXP6LSQpCo`c?fHP$O1yGCl>8Hu$J$0JzGK|a=1RHQ5$tI$AU*-$zM zpB@9aBKSn0P*;|iF2gOH2egMD;&i1!n-us=@#YwIR;CyyRmXcC$1UEB6|yzZYz&VB zn8R3A_WE>IE>WQb&tlUn0UH1-!(my{16VQm=G&o&C0m(1%=k_q?)n}Z1V{>nW`*`i z<7ls#gRu(8Q5~#dp)TzJ%*BM5QW3Fw8);mGVeP?4gSAZd&}nOzrzF=JC#p6_VC88z z>Q1lj?Ik|Iu3%d2comurh&6zxUVykVzolz?T_}K})<#s)JLA`#e9OOUnvE9mUDpA} zcbGax0~WRb1_45hK^0ydj#Gyc2M<-p^1JJ#O8^`Tq;P5umeq;1)*hXxW$I&Vs8uy* z;e8D8KBABC+gEpn^l0E%WqC;G3rFxpUYO;?j)U%?N6@k9pBvuyuKPyVyd*A>$p*o9 zn`f^brL)4-MVs+gEy?e)Y6W2;dereNN3+hY6Lo5tP3$lf@YRr`Y9g_25&d~AX!8y5 z=+e?ks9(`_ba&p?NKyE-XUx_^F$wu=3!2jNqN31O8$S__tqKx8%-&Er0T9@=YJ#f2 z8s5&1RR0=D1%9cP1$9l0#HC9DtNnK&vs5W$7XME|#ycP)w@6bXFge-wf7h8tT>;V9 zo!of(1bkTOzts7hG3j5OiRXEnE7mMLYPi{Nd_vyD2@Kbf?27JdzSqKQtjS`I!0wx> z&^7u7?1!c&2zR8KJt=%tZu(Hi%5%4L8c>u#goNfCbQI8rT}H~#Cr6carnO0Y|3_{h z)0*nQzqJxjr66>_pKko~x)2d^bS6AIVNNL%Ww-dsU6$D>H;dxMsfmJWc?O;#h0Hys-i6&Ha`WBfIB3czs!L!NExOOLzL;8-jJfic~-jc|47b=YE%Y6ysrg@E1 z041iIq6=K~dfi-C#^~D`{Q5;JC$-&>x+G%N>088qK*eT%ROD= zovAsfJ!w8N@Da;!T%5PO^A;4UNN^+5(2IDks9%$_eFzrMWEODUHi@jU!gjO_qApG*6_#J!R{|UHwrcW`D(A`q8PSEb(B($JgBluaZL|s9DXF1cu>ChKRXRO(s!C> zI=@}I`MFza?wJQJ6Fqy}T`~c&w~MwW+ud4m_#YH#C|R>0vzJ|pGT@e+*8BuNeFvj{ zr-_Eixn`7PaZnj@=!!ER2YaZJniVJVl-YY*Z@>dD?W5>%1yBHRL=Q%o=c$I+Dw=yq zG!^s1lVzKWSJ^Z)@FXpluM#maF|X5Lp3AV+U!mi@2Hh{v`+q{_|F-|4r3JdFceT=Y z!BkAcXp;$As7{LvM`MmiEYy#$YQmFBiL_Qbb(;?QQ0T>)pj`avc78Del4bDzF$I8Y zZS$xZUfbj(2RRN28wiKjwYYa3SK|T7H`L-S?-*d?6VMDXjF)xk?+da(Y3~m?qa$8y zkpf4m%ivBPe5Np{&0X);7~4q>xU#Y_=eK9;vTj1Dx?9$G{(`adA#ycKGa%4h246jY z2y+5+Vq2(vFhLj$W?Zs}-JkHUgA(tC6ZV;>_GP2E@{`9{*`Vmr5rWP+P%Y#=L0Jzm z-l=FqJA0_(;c=`oMW5mSDHHVzr2a65W}-i#mOmcHnJFC+vr~cp{0hHl!AI9jDX)`7 zkbnEPi#1jslBN@$5pn{+bo`($BcR%Q%8ioxgY!hQVXV9V`@gsOAXf82IldU~Xb->y z^xp`c>CXeKoq*^M-+}4n2(VC$gtf3#jA;D;(;2iAOP>khckJ z^pSsv`0@~BZw98?xC@kIF=!Xz3}nU!*s$9?=en=2!1cK__x7NIao)7-`krjc0)5LqiyZYgPTnjBCME;M=tskQO0 z5bz@G`YK3`>C9n`d?p6I`sOMz^CX9SNbpa2bZUeD9M7%E}j0&&MW zbLeX$_G=A(MHyyd80h4J)qDfZI4YviPb06%s0S2V+Mwm^f`1(P0Bl^p&KO^4!GNEB zeDIm1eMh*|K>+B*rK@@E5iC(kA!joV;m45z3(Fs5+^Ou6H5{_ak8gk}D_^L4^K(gK z(Edc-KBHA)unrBW7|w4MV$d+bD~+Y1tK_gr?i7H$g2!uku&w)^?AZ5Wlr|MPfs$j) zs2s|Y=e>X^<>+b=1e}s$nzodRHQ5h**lfahEe`H<$T=@6ZR;G<;lQRHVRY_gdE_J0)rKi5&?Kf0a}|ysfaLrR4vbp z-1agh_Z#S70&U4`A1YY|CXc2AsWPx8cnhS=f3Sg5A~d8FA5=V31X+#keOpHQ5lxJz z0?WSvOnFFxIuNTAZ)|`u^iO&^0OPSB55%+zaq}!ts44VJ!R`Yz_KD(S5p1S2KurgY z0m!O+mr+I#hMjF3mn|vCUVk=Z%mn8u!k8++DmlgnCb&vBI`)Jx`IKWa@GVs-*i>Ap zfP_up3bC62N|kuMMK;!z4V1}nV^{H5vC2?uF-pO*6_JXlKr@wWDJCAH0+|YOxPs8F z0K%o%Con#o4~B}c4_E{*Gh81Pm5Jcpeh>f=<~9c&eu-J~P+6_4a;ybVN}hdEoL4f) z7va>m6Br`VJ_XJ>c~^xHOk%IVmWl0H%jam?g-kz)!qF5=r z$hQfQvM}QLf}*CbILS57{fV#5h;wJtfOBSyA8npQ*=5;i%8O(`ASvFS1OP# zdWwus!PSRDmA{yUO6gP^5B^<;N%~fuBrPQ=z(G#!nAasdciZ;NJ!N zx8GljlI}wBH=?C680oHf=aAZ%Xq2?hJ)eG0>j+j_*C)b&@aBZ7JvZk=*VZ@z2ZD~E z*g_Q!P#tiD1aI<80T_z9V@;t6K}XJaZF*UlKNX+xdoifA3+W=|>y1R1j$w#xePwIXNYFo77CR%ruU+fnOdnLv9U3JbJ(2d^G(nz-Vw28XWj1?h-(jbj7NtD&w1+`)#F08vvOF62eb>_8bZI0GG4G3a_V(*tX<~E>c;mR|VR^cP7%uFPw0|OrB9I+82?5l{&9OpBV~EVnvo0Vw&jf3CBe*XgH0yC__DYWQtJZn#s;68|=@0IGw{}cV?_tHrd}fnk^xm^>VXhpi7dKFd83MyFX^s2y>;q5sN0Hf_J~J zk9&Q{7^5M!QEy&R5{0r#s|Nv4IJ&^&!M}0U1WyE_R8H?7RO?(-m!y! zdIpkcS+ZNvIn4RY)`qhW=BSMu=%cGz%euc|LeDMRtg6 zF=@sZ-g8dUxp9TvJEuF`iq-EQ$UqZcQ4FEdauU#X)?;n$$GA6~YzSi*OP*kD7a4qI zZO%uzJa}0bo~wI&l>L2j8pa(_$sLhSm3F>8$4Fn~p9=Y^vHVjLwm;!mP^N*)7koS_ zQJK!k>S=FX*wJpPXD>dkLIsVx1ylxlu-Y%PJnp8f4zfIZZZT=}y;~Z6G>LBH$G=LE>-+qN@6TbJ^$&Tj#?~JbLerB!UKB6>_~WH$h4s%@73;SCd|efL^5s!=RVF&ORrh~dVlue)?Xib-kkjP@#6Q7zdj*2o8O8-jcva_ z51F3&Ju|ZS)9){`6*hlnN7rrp^K~rt)Squp(m(zAE-$e8`{PyRw!c58T2B3)dw=fJ z-(QMrHuJw{A8wof^W)8_`MH881JX7*d9W#E(!s)Sd2FH?jwdN zvNcD<*u_JAluShqi(LP|*n6|6Ci1`Q_g7V!2_bwhlJu-3Uc z>zqq2VI|bA{r&8{DPh8P!~HtBLu5T|Nq0NvlCFSXUQbUEc9=fZ6?)&PXJmGFSp20c zLg@|6$s%E=mFfT8Yfp0rMYGy@Z8m25gtV*C2dgkD0mP9W;K?BDpu1WNMq^n1FIYQ? zY1U@7>E~vLDpOsN#y2)%fOse!Y4}d^{_~*$p^Zy3Oowb9O<+M$a+t2K z<^}%>v(@2qt%4Ou0+=z`-PP!+1%)i3{SyvE^iVt31~$%c&Ae@H(+1PB)YSQB5xt(% zyGnzFh!aZVu+`-T;4tjKbSJ97KG#|`67z&jlYgw3_pb5ba1zEkjytd3YI^iw8JEk0 zH`x&JBJjyBB&llW@AzBEd_KHA(A_ST-|p}G1Y5Ux7f5M_A@n=MwE451RVVSvy*ZC4 zQ4;>iv38h(RmSf?jVxj?I7&&?k3F}mb`fU5Oe+e{(LyyN`DUN^Fj1&g(%O!gnQIrW z$yo%gvBXHhBH$UN=J<9e6U?$<#0j=sJpt(Y6+m`Zj~1#0;YQI3gxy5imwg^6R1xqg^wuiNN}n(|c{ZJElpc_$Q(b zO63O|bDFevsb7eDC7l-gQD6|=4-7P@1-m>Su2!=4b|c)8t%Y-bv_a5H$kjv1k?jzh z&Rln5c>R<4k&P(QsL8j|=%Np-cp+daz+LU zp6RPin)sM+k^s6d%mkbvPjt!L@z5a*&f} zdgIGJIJKTk%h2xIo{JG@>WZdwF(7X3Bub?vJ$5{UR3#M}Ru@tv+P#Mu=aC3dNQ`b{ z>L+)YS!p5I1M0O;ZUgUuUXR5DQ1!P5%C`8>aJ^sCjnh@)!YK!U5y4BfUO!OgmT1L% zstcUyq$}qFtx*lr-7%nY-QfUhVy?5=A z5={jli*VWJ9iPEPei@t&u@_;#f)_-<&Z}IqSd#!=MO!29n`7XidKy_hZbs0_Lh%eI zGAYh)S+uPXibfwg8f;qA#xL^YTAfOfV!&JRIrL5fV=q4taO$a0wOj4s6ZxSfaTkv^ zX<5@jIf-C_d5*O8McQ{qS82-@5UfmUyw&c>Vo68_W)`f%Jd|3@K=>Mg@xd9peZ(Y( zb}%>*i1p%C7)l7N?G6F)f*Kp%uh7GZK)~P?8PG9stwsi{L_nsh0~b*_DM}4PS(%~N zY5?@q93V;0Pp$F801obf;v5|HB2*x1yxCO=BQ^OS4R|sHD8Is7^%VM`ILHB=NR7$4 z^-U@>#83p`T>^B!#S0w#ABL{qk~`P3$UG}y-yt15iSJb`7&X|)yV`^K2p`BcF&luE z7YHI{RDFfDUOGRFcha%Kvgq5>ub$Mby`*H6aflDP#BpsrD$vpX`b^V3AouEsjaogr zj<^KU7TFE+*LWatbjdR0>>}@}Mlpd5^eO1QSHW3Nc|GZ$Skn-w1M70zJ>xP%26f zk}fz>om>5AuDyzc6IKIZz+FntRC^4+T?RiO{}Doo{FRK$dx?&S@W_WTQaqE&5raj{ z4dL3t8kCkRDqb-urlkYomv6LkjJlI2ef^bEql1LD4)%( z=-B4CWNnd?lnh^o%OoT`a9zejmOmymHl>?N^NC7GtOTKaa*8s&!V^C83y~-)pMHa6 ztF_rEf>Xo^94Tp|7TnE4o^*?;xWpHUl9PZNif_+=*?WBOai&r30wWZc->Hw9n23gh zC^^Az06`>X=(0$BP&dBwizIdDk&0@2&u_)_cNED_mW0cI>F_gC+Dc6PDkoYkt4YWAPPZ#KL8 zY$D$l`ELwnUK|fgcaKKe=BbYQ{HLUM$0a@be=g}?1^%a`$7kFgisk<;>D4GX;iQMH zw8FW3=D#y;?lxx-Jwt}Ia42Da=?8+FRk2WcLC@%_x3}hO%j07XCx~$pR5_(c-;D0) zfF;Z%J2lcrpWbT&WlvQ2j9Z`8`TQ#S{xvgHI}swX@w=7ew(OKIMr4F~UxyrJGzw*c za8em9BkZEsc;=&RXNiX#TjpLm_fGb-k(x8it3fk~o|G#ecmo<)Q~dd$CQ#~m4OzO} zNTMB5M-i=^ggkx$vajC!`A;|IllNN|)g63s?`MnGnv%hNlXyVT&`&l*;Os7S-3uI^ zG{REeHgUPE;Pz}@3eQQfPOq)nWZUDzTt}_Tj6UPqrDdePjNr6Q4`+$ddD=Vc$vVL-uQAMZ0w~e zB&`lDDr4BJQg}FWhNkUc&>g}A;Y3TO(}%Ss4w8faZ}T26Tt1Y({Lh ztzZesC!fyY67KJ%QfuN4z;{K=y|CqL+nPkX7D-URnlRCRLhkvOXqs)I!Z!m=!XPNe zN<$IPe>gv;#wxfODV*8zzJ)3aTFxKLnEbLIKj0Vw*4qaWJqSZswbt~ag>-84JM(kw zwIM4nyg|*GY9-RS?LE4v+TzCh^DR+{<;TxK(?zoo{l!bYPI>d15#iUv0PC$_Mn=t_ z-ZOvp$Hr%k77+goBl<+!+LP#q3F8CD`#G^Xn3JVdq>;vs9Y?;o65f`u98%wPuzanT2gP5wp`J^au5V=FeT`vz28TsVhyarGQqhvso{H{n$#3u_6cO;`)rf8I`kZ7Ag$t z)nEuKhWyk!u?#gK%QKH{rj@htSOnitMlIe|V!8;M7T%9{UIVuk{0^w4pZtKWEI@>a zUFpV~(@%ab4(;I*S4y$4TMC6sO^|s}mSNI8S&6W!t4}}RM zYI1vb7_nRpsCV0G*N(J$L@%{mce zF;j}Y@iHmdD7j4PPA`yr9P!#YoGt~upGeAKA9T=SgiH-pYi(qA&DP9x2 zDiNh1BhVCB7&JRZ0jD2O(`T$7BMZl

ixz?{QF}J@Zz;#L7jBlwD*eafMAM&wSAY z@YyBW6DvUpH{Vz?Oj)-K8rvy)csa`Y)$-7C9k6XBP+n{e=ft)n4TKK*Olip!E^qQq z;_$DQEj-NUjtm&{x|scrH)m(PI*@&0nSrsU2(?Kgub9AQo__bpY`PZd(&hOK>1bBt z^=!yn<~dslh38mtFNoAhL(61g&)T_FBWlQrNr}4hY6>AHXeJHa?UZ9_Lh{C3nowFK zU5V5-H19ZeNmLsgYA`fGaJ*zm=J*AbT*F1}5cbgFngWXTP}AvYval7fb#`;$$=}w= zEVpS5Is8{le<@X8$0BFfbl6H!Y~$o%Xc`E)qCZAPGQ_6VLN&`;1YFhdZ(Zk>&G@1! zgxGHpB3BIw1-+pzL+n!$Pd9!b4Qk{~B}vZ%rYs6l1hT;7#1KMJA(5g)u!|ph{E#K) z*}4jJV|h~wUBLk(yo#QJr5r)QXYr*P2<@0b&@D;CSwSZSYUp(m6ARxkPVw$rJBmUp zs2H&jye6C0tNf#700Do;t=m$9%X!FvixN%SFsNE=~|8(rJIF?C)E*6(!bEt>nn^X zV#Ds@RnRptjng>zrivR%k4V^Il+$J=Q3QEg>HgLRc@qbDo#yIFIa}Gr?iF@0=3}I& zq(t1Cmw68HiHkFM)F<4ANsl``%q7EGf2{^1kW`eF<2R6b-iSksE-z=+2LrJL{ULZD zH*r99VhzC-h31KfNpkoJf+{ zl9Txn61CJ^9Fo$=d_7L&B$KxA0q*R7;ZO|l*am()&{5(wnN=cMx)N|SWRGD`Q$XES zL^(aAmn)_%6>W@^&=x6!gHhUHK>VXJUsywQRTdn=Nacr9C1T(xCHH5LJIBG^CW^5_ zv|L2SOz<67F>~RnS z+nh<@GL~edGwCodji4!8Rk`rYh!lTqh@1sr#af2048O(P7~vQbxnYE?u%3;GI8;6~ zh4pyj?=fIaM))~W*Swz^ME-pib>(GDKlE18+FUufZGUE#CA#ypv%B^Ox*pZwv z#bV+;&uj^Ksf6M5=62hTeS|lv6L?Ny#qR?&{NFRM5Uk)FG){VlnYE>m8`;&?I-~QO zmr_K0Z`kUM?Bf+b3*ilPCV4=Z`{VYd^J{nM)tE+BYEI|dh>U2hs!zM~0nDCyj?t6Sd>`rDCpMG9YP#g`X(^!6i<7ZV3f)B>YkBtCEz)uWT)9xJZP zHaHV27yqR(7zyHkNseI;#O~_t7#O->mZSHC;V%tbY1_Q;5u z>682AAYqi61TeHcBf37zrrTo0a;INzUq?Bj*!n?HQ~OxVyn2V^ImnqZQuYopj7*R|7Ujp{m>VNPS6>?NsV z*SRUj$GXfiN5^jPig1~2vp4nseKLDT7*mEA_-QfRKEGG>@mf(ZM7%ajgX)Y1PHq+6 zn$wdL$TB;%6=CtFZ6J`@s=pE1@l_byyC5m&ORHW_4uR$%`uX|(AMyX7A7@PShX{%d z5b>dP_s(A3qUKn6wh; z`_t7hhlx&OyMk8>dAYN%#4#RxgE+1H92O5X>ev1L=8Y(G+0e=_HljQ-pI1Q25?H9e zVfNcjLrETqpLB17J{yZ!%lX(x4_AVJ;f6RCADhCrELvbA00q@S)0Em927!NMO$)bj zZ0&)N)Z~HzJntp}H$9I$;;JxhwlQ7w{VL0^gOgv0zh$GeD2lp@#cOB$ z(+A)jCGsU`kUTB~vvV4N`GhqwLI>;W7eE#c;LDyTk>jVe2BxiQGl4Ge3k%009Kg3I z9hvNnd)P|!C>NE%sWL7r1`sJc(n>a(_eYf4bR}~V^W<59E%=l%MbljjkwXyf#NF}igJD63>%FoyZz;tL8x3qF~DVZZGy``PEr!H8nCB1fUN_* z&*u^nz;^Er5Wufs*;2n5k=bfdz$m z50PjuT?k&ea;^aD-}Tz)Fptc>qbRdpmVam`|KuNBX_wcUF@u3xf%UZ%irGXnZnK<6 zP4!)`q1V(*6Lf{qXFgd}je*R77f=kK1ai zaULLt$LyH-l^i)n1r(lsumh@^=OiNm9`oe2lg>`~_mL~szu=%IE6hNohwt%?2P_eS zSnf~HAZ7i6S>}nr=F68=0zTpAJqN%U*$M=$as-u@u$a7;;~P=hkJJ?gxH(_8=Y_ze zo*KS^8%I`m+HBSqn2&fdcfYdvPLBXd>gK8UCjsUtgn&!Zui%6o?5SV{F2cu<<5364 zP)$(+Ma@3dFLP->4g6~mTCu9oaOc4cI8tVoi4wf$s}Rv{ zbc#B5#jZpWtjYJhqae{D#XyB!2V4DOQc^QFwCmB(5j&5ztN+Sc zGhLoZ%{Tf{K0GK$$YOG}2B{7*M2g*6-KZ>M2vv3wHJ8iwu5Dc#gP)}o1^AnVey-&5 zc;w4CxH%r+@%WVAHMag{Vp3yPXWTAz56(d8lO`}Le1jEkRCfB-$dPen(qer4yclb7 z+`JldI&SuHg~RE|izN!e*mf&DL>K7n9z^i*P#Nqf&_$�j|Y(PjVJCwO@<*a0g+r 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 literal 0 HcmV?d00001 From 83b4cf29513360054d842a55c0a2bf81803aa0ce Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Sat, 27 Apr 2024 22:12:11 +0530 Subject: [PATCH 09/52] feat: wip Signed-off-by: sarthakjdev --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94ab063..a1407bd 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ For detailed guidelines, check [Contributing.md](./CONTRIBUTING.md). ## 📜 License -Distributed under the MIT License. View [LICENSE](./LICENSE). +Distributed under the Apache 2.0 License. View [LICENSE](./LICENSE). ## 📞 Contact From 1668893541934ce53a0b1f484ad1ed218f114e57 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Sat, 27 Apr 2024 22:16:52 +0530 Subject: [PATCH 10/52] feat: wip Signed-off-by: sarthakjdev --- apps/wapijs.co/src/app/error.tsx | 2 +- apps/wapijs.co/src/app/layout.tsx | 2 +- apps/wapijs.co/src/app/not-found.tsx | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/wapijs.co/src/app/error.tsx b/apps/wapijs.co/src/app/error.tsx index e245871..18b911e 100644 --- a/apps/wapijs.co/src/app/error.tsx +++ b/apps/wapijs.co/src/app/error.tsx @@ -7,7 +7,7 @@ import { ArrowPathIcon, ChatBubbleBottomCenterIcon } from '@heroicons/react/24/s export default function Error({ reset, error }: { error: Error; reset: () => void }) { console.log({ error: error }) return ( -

+

Oops! Something went wrong{' '}

diff --git a/apps/wapijs.co/src/app/layout.tsx b/apps/wapijs.co/src/app/layout.tsx index 523a272..94f513a 100644 --- a/apps/wapijs.co/src/app/layout.tsx +++ b/apps/wapijs.co/src/app/layout.tsx @@ -16,7 +16,7 @@ export default function RootLayout({ }>) { return ( - {children} + {children} ) } diff --git a/apps/wapijs.co/src/app/not-found.tsx b/apps/wapijs.co/src/app/not-found.tsx index 3f5246e..3ed495d 100644 --- a/apps/wapijs.co/src/app/not-found.tsx +++ b/apps/wapijs.co/src/app/not-found.tsx @@ -7,10 +7,10 @@ export const metadata: Metadata = { robots: 'noindex, nofollow' } export default function NotFoundPage() { return ( -
-
+
+

404

-

+

Page not found

@@ -22,7 +22,7 @@ export default function NotFoundPage() { -

-
+ ) } From 69fbaa59062fde9ae7d0798e70c557b42ef09258 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 01:17:10 +0530 Subject: [PATCH 11/52] feat: wip Signed-off-by: sarthakjdev --- .eslintrc.js | 2 +- .github/workflows/documentation-preview.yaml | 1 - apps/wapijs.co/.eslintrc.js | 2 +- apps/wapijs.co/package.json | 5 +- apps/wapijs.co/src/app/page.tsx | 1 - apps/wapijs.co/src/components/sidebar.tsx | 0 package.json | 2 +- packages/eslint-config/config.node.js | 5 - packages/ui/package.json | 2 +- packages/ui/src/clipboard-copy.tsx | 4 +- packages/wapi.js/README.md | 1 + packages/wapi.js/docs/README.md | 1 + packages/wapi.js/docs/docs.json | 1 + packages/wapi.js/docs/index.json | 1 + packages/wapi.js/docs/logo.svg | 19 + packages/wapi.js/package.json | 8 +- .../wapi.js/src/api-request-payload-schema.ts | 24 +- packages/wapi.js/src/client/index.ts | 4 +- packages/wapi.js/src/client/interface.ts | 2 +- packages/wapi.js/src/client/request-client.ts | 2 + .../wapi.js/src/webhook/events/base/index.ts | 4 +- .../webhook/events/message-delivered/index.ts | 5 + .../events/message-delivered/interface.ts | 4 + .../webhook/events/message-failed/index.ts | 2 +- .../events/message-failed/interface.ts | 2 +- .../src/webhook/events/message-read/index.ts | 5 + pnpm-lock.yaml | 816 ++++++++++++++---- 27 files changed, 719 insertions(+), 206 deletions(-) create mode 100644 apps/wapijs.co/src/components/sidebar.tsx create mode 100644 packages/wapi.js/README.md create mode 100644 packages/wapi.js/docs/README.md create mode 100644 packages/wapi.js/docs/docs.json create mode 100644 packages/wapi.js/docs/index.json create mode 100644 packages/wapi.js/docs/logo.svg diff --git a/.eslintrc.js b/.eslintrc.js index 9fabf30..e9b2cd4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,4 @@ /** @type {import("eslint").Linter.Config} */ module.exports = { - extends: ["@wapijs/eslint-config/config.js"], + extends: ["@wapijs/eslint-config/config.node.js"], }; diff --git a/.github/workflows/documentation-preview.yaml b/.github/workflows/documentation-preview.yaml index 2084f0d..32093c8 100644 --- a/.github/workflows/documentation-preview.yaml +++ b/.github/workflows/documentation-preview.yaml @@ -5,7 +5,6 @@ on: push: branches-ignore: - "master" - paths: ["apps/website/**"] concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/apps/wapijs.co/.eslintrc.js b/apps/wapijs.co/.eslintrc.js index 20c1d45..f3b90f0 100644 --- a/apps/wapijs.co/.eslintrc.js +++ b/apps/wapijs.co/.eslintrc.js @@ -1,5 +1,5 @@ /** @type {import("eslint").Linter.Config} */ module.exports = { root: true, - extends: ['@wapijs/eslint-config/config.js'] + extends: ['@wapijs/eslint-config/config.next.js'] } diff --git a/apps/wapijs.co/package.json b/apps/wapijs.co/package.json index 3f26088..464484c 100644 --- a/apps/wapijs.co/package.json +++ b/apps/wapijs.co/package.json @@ -6,7 +6,8 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "next lint", + "pretty": "hn" }, "dependencies": { "@heroicons/react": "^2.1.3", @@ -29,6 +30,6 @@ "eslint-config-next": "14.2.3", "postcss": "^8", "tailwindcss": "^3.4.1", - "typescript": "^5" + "typescript": "^5.0.4" } } diff --git a/apps/wapijs.co/src/app/page.tsx b/apps/wapijs.co/src/app/page.tsx index bef6888..91855b5 100644 --- a/apps/wapijs.co/src/app/page.tsx +++ b/apps/wapijs.co/src/app/page.tsx @@ -1,4 +1,3 @@ -import { Balancer } from 'react-wrap-balancer' import { Button, ClipboardCopy } from '@wapijs/ui' import Link from 'next/link' import { ArrowTopRightOnSquareIcon } from '@heroicons/react/24/solid' diff --git a/apps/wapijs.co/src/components/sidebar.tsx b/apps/wapijs.co/src/components/sidebar.tsx new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json index 68fd5ad..5a5fbf7 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "prettier": "^3.0.3", "tsup": "^7.2.0", "turbo": "^1.10.13", - "typescript": "^5.2.2", + "typescript": "5.0.4", "vitest": "^0.34.6", "@wapijs/eslint-config": "workspace:*", "@wapijs/prettier-config": "workspace:*", diff --git a/packages/eslint-config/config.node.js b/packages/eslint-config/config.node.js index c2e085e..ff2dd6d 100644 --- a/packages/eslint-config/config.node.js +++ b/packages/eslint-config/config.node.js @@ -44,13 +44,8 @@ module.exports = { "parent", "top", ], - - "react/no-unescaped-entities": "off", - "react-hooks/exhaustive-deps": "error", - "no-empty-pattern": "off", "no-debugger": "error", - "@typescript-eslint/naming-convention": [ "warn", { diff --git a/packages/ui/package.json b/packages/ui/package.json index 03a38cb..458e0e9 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -21,7 +21,7 @@ "eslint": "^8.57.0", "react": "^18.3.0", "tsup": "^8.0.2", - "typescript": "^5.3.3" + "typescript": "5.0.4" }, "publishConfig": { "access": "public" diff --git a/packages/ui/src/clipboard-copy.tsx b/packages/ui/src/clipboard-copy.tsx index a0a5a40..e3b7ee3 100644 --- a/packages/ui/src/clipboard-copy.tsx +++ b/packages/ui/src/clipboard-copy.tsx @@ -17,7 +17,9 @@ const ClipboardCopy: React.FC<{ textToBeCopied: string }> = ({ textToBeCopied }) const text = document.getElementById('user-profile-link')?.innerText if (text) { - window.navigator.clipboard.writeText(text) + window.navigator.clipboard + .writeText(text) + .catch(error => console.error(error)) setIsCopied(() => true) } }} diff --git a/packages/wapi.js/README.md b/packages/wapi.js/README.md new file mode 100644 index 0000000..978bafc --- /dev/null +++ b/packages/wapi.js/README.md @@ -0,0 +1 @@ +## [View the documentation here.](https://discord.js.org/docs/packages/discord.js/main) diff --git a/packages/wapi.js/docs/README.md b/packages/wapi.js/docs/README.md new file mode 100644 index 0000000..978bafc --- /dev/null +++ b/packages/wapi.js/docs/README.md @@ -0,0 +1 @@ +## [View the documentation here.](https://discord.js.org/docs/packages/discord.js/main) diff --git a/packages/wapi.js/docs/docs.json b/packages/wapi.js/docs/docs.json new file mode 100644 index 0000000..91e5e91 --- /dev/null +++ b/packages/wapi.js/docs/docs.json @@ -0,0 +1 @@ +{"meta":{"generator":"0.12.1","format":30,"date":1714324585362},"classes":[],"functions":[],"interfaces":[],"typedefs":[],"externals":[],"custom":{"general":{"name":"General","files":{"welcome":{"name":"Welcome","type":"md","content":"## [View the documentation here.](https://discord.js.org/docs/packages/discord.js/main)\n","path":"README.md"}}}}} \ No newline at end of file diff --git a/packages/wapi.js/docs/index.json b/packages/wapi.js/docs/index.json new file mode 100644 index 0000000..557341a --- /dev/null +++ b/packages/wapi.js/docs/index.json @@ -0,0 +1 @@ +[{ "name": "General", "files": [{ "name": "Welcome", "id": "welcome", "path": "../../README.md" }] }] diff --git a/packages/wapi.js/docs/logo.svg b/packages/wapi.js/docs/logo.svg new file mode 100644 index 0000000..81feb17 --- /dev/null +++ b/packages/wapi.js/docs/logo.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/packages/wapi.js/package.json b/packages/wapi.js/package.json index fb06cd4..f46a474 100644 --- a/packages/wapi.js/package.json +++ b/packages/wapi.js/package.json @@ -19,10 +19,10 @@ "build:cjs": "pnpm tsc -p tsconfig-cjs.json --pretty", "build:esm": "pnpm tsc -p tsconfig.json --pretty", "build": "pnpm run clean && concurrently -n esm,cjs \"pnpm run build:esm\" \"pnpm run build:cjs\"", - "lint": "pnpm eslint . --max-warnings=10", + "lint": "pnpm eslint . --max-warnings=20", "pretty": "pnpm prettier --write \"src/**/*.ts\"", "clean-install": "rm -rf ./node_modules && pnpm install --frozen-lockfile", - "doc:gen": "typedoc --out docs-md --entryPointStrategy Expand ./src" + "doc:gen": "docgen -i './src/*.ts' './src/**/*.ts' -c ./docs/index.json -r ./ -o ./docs/docs.json --typescript" }, "keywords": [], "author": { @@ -48,11 +48,11 @@ "prettier": "^3.0.3", "ts-enum-utils": "^1.0.3", "tsup": "^7.2.0", - "typedoc": "^0.25.1", - "typescript": "^5.2.2", + "typescript": "^5.0.4", "vitest": "^0.34.6" }, "dependencies": { + "@discordjs/docgen": "^0.12.1", "dayjs": "^1.11.9", "express": "^4.18.2", "zod": "^3.22.2" diff --git a/packages/wapi.js/src/api-request-payload-schema.ts b/packages/wapi.js/src/api-request-payload-schema.ts index ab5ab64..2b8a574 100644 --- a/packages/wapi.js/src/api-request-payload-schema.ts +++ b/packages/wapi.js/src/api-request-payload-schema.ts @@ -32,6 +32,10 @@ import { } from './structures/contact/schema' // ==== BASE MESSAGE PAYLOAD ==== + +/** + * @ignore + */ export const BaseMessageApiPayloadSchema = z.object({ context: z .object({ @@ -376,23 +380,3 @@ export const WhatsappCloudApiRequestPayloadSchemaType = ImageMessageApiPayloadSc .or(InteractiveMessageApiPayloadSchemaType) .or(LocationMessageApiPayloadSchemaType) .or(ContactMessageApiPayloadSchemaType) - -export type GeneralRequestBody = Record - -export type GeneralMessageBody = GeneralRequestBody & { - messaging_product: 'whatsapp' -} - -export type ApiRequestResponseSchemaType = GeneralMessageBody & { - contacts: [ - { - input: string - wa_id: string - } - ] - messages: [ - { - id: string - } - ] -} diff --git a/packages/wapi.js/src/client/index.ts b/packages/wapi.js/src/client/index.ts index 5e0df26..2644b9a 100644 --- a/packages/wapi.js/src/client/index.ts +++ b/packages/wapi.js/src/client/index.ts @@ -9,10 +9,10 @@ import { MessageManager } from '../manager/message' import { type WapiEventDataMap } from '../webhook/type' /** - * The * @implements {ClientInterface} * @extends {EventEmitter} - * @class + * @class Client + * @classdesc The main client to build a whatsapp bot instance */ export class Client extends EventEmitter implements ClientInterface { /** diff --git a/packages/wapi.js/src/client/interface.ts b/packages/wapi.js/src/client/interface.ts index c39e0a4..398dec4 100644 --- a/packages/wapi.js/src/client/interface.ts +++ b/packages/wapi.js/src/client/interface.ts @@ -7,7 +7,7 @@ import { type Client } from './index' import { type RequestClient } from './request-client' /** - * @interface + * @interface ClientInterface */ export interface ClientInterface { phone: PhoneNumberManager diff --git a/packages/wapi.js/src/client/request-client.ts b/packages/wapi.js/src/client/request-client.ts index 105aa70..8df81ed 100644 --- a/packages/wapi.js/src/client/request-client.ts +++ b/packages/wapi.js/src/client/request-client.ts @@ -54,6 +54,8 @@ export class RequestClient implements RequestClientInterface { }) const responseBody = await response.json() + + // !TODO: fix types here return responseBody } catch (error) { console.log({ error }) diff --git a/packages/wapi.js/src/webhook/events/base/index.ts b/packages/wapi.js/src/webhook/events/base/index.ts index e81ac28..0c11e7f 100644 --- a/packages/wapi.js/src/webhook/events/base/index.ts +++ b/packages/wapi.js/src/webhook/events/base/index.ts @@ -51,9 +51,7 @@ export abstract class MessageEvent extends BaseEvent implements MessageEventInte this.isForwarded = params.isForwarded } - async reply>(props: { - message: T - }): Promise { + async reply>(props: { message: T }): Promise { if (!this.context.from) { throw new Error('No context message id found while replying to message!!') } diff --git a/packages/wapi.js/src/webhook/events/message-delivered/index.ts b/packages/wapi.js/src/webhook/events/message-delivered/index.ts index 29dde24..d253677 100644 --- a/packages/wapi.js/src/webhook/events/message-delivered/index.ts +++ b/packages/wapi.js/src/webhook/events/message-delivered/index.ts @@ -2,6 +2,11 @@ import { type Client } from '../../../client' import { StatusUpdateEvent } from '../base/index' import { type MessageDeliveryEventInterface } from './interface' +/** + * @class MessageDeliveryEvent + * @extends {StatusUpdateEvent} + * @implements {MessageDeliveryEventInterface} + */ export class MessageDeliveryEvent extends StatusUpdateEvent implements MessageDeliveryEventInterface diff --git a/packages/wapi.js/src/webhook/events/message-delivered/interface.ts b/packages/wapi.js/src/webhook/events/message-delivered/interface.ts index 5966c47..fb6ee3b 100644 --- a/packages/wapi.js/src/webhook/events/message-delivered/interface.ts +++ b/packages/wapi.js/src/webhook/events/message-delivered/interface.ts @@ -1,3 +1,7 @@ import { type StatusUpdateEventInterface } from '../base/interface' +/** + * @interface MessageDeliveryEventInterface + * @extends {StatusUpdateEventInterface} + */ export interface MessageDeliveryEventInterface extends StatusUpdateEventInterface {} diff --git a/packages/wapi.js/src/webhook/events/message-failed/index.ts b/packages/wapi.js/src/webhook/events/message-failed/index.ts index c86e7a3..d9be583 100644 --- a/packages/wapi.js/src/webhook/events/message-failed/index.ts +++ b/packages/wapi.js/src/webhook/events/message-failed/index.ts @@ -3,7 +3,7 @@ import { StatusUpdateEvent } from '../base/index' import { type MessageFailedEventInterface } from './interface' /** - * @class + * @class MessageFailedEvent * @extends {StatusUpdateEvent} * @implements {MessageFailedEventInterface} */ diff --git a/packages/wapi.js/src/webhook/events/message-failed/interface.ts b/packages/wapi.js/src/webhook/events/message-failed/interface.ts index a95d293..2860f7e 100644 --- a/packages/wapi.js/src/webhook/events/message-failed/interface.ts +++ b/packages/wapi.js/src/webhook/events/message-failed/interface.ts @@ -1,7 +1,7 @@ import { type StatusUpdateEventInterface } from '../base/interface' /** - * @interface + * @interface MessageFailedEventInterface * @extends {StatusUpdateEventInterface} */ export interface MessageFailedEventInterface extends StatusUpdateEventInterface { diff --git a/packages/wapi.js/src/webhook/events/message-read/index.ts b/packages/wapi.js/src/webhook/events/message-read/index.ts index 0d3ff52..31d38bd 100644 --- a/packages/wapi.js/src/webhook/events/message-read/index.ts +++ b/packages/wapi.js/src/webhook/events/message-read/index.ts @@ -2,6 +2,11 @@ import { type Client } from '../../../client' import { StatusUpdateEvent } from '../base/index' import { type MessageReadEventInterface } from './interface' +/** + * @class MessageReadEvent + * @extends {StatusUpdateEvent} + * @implements {MessageReadEventInterface} + */ export class MessageReadEvent extends StatusUpdateEvent implements MessageReadEventInterface { constructor(params: { client: Client diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05589ee..3ff6c34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,10 @@ importers: version: 20.8.7 '@typescript-eslint/eslint-plugin': specifier: ^6.6.0 - version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.2.2) + version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.0.4) '@typescript-eslint/parser': specifier: ^6.6.0 - version: 6.8.0(eslint@8.52.0)(typescript@5.2.2) + version: 6.8.0(eslint@8.52.0)(typescript@5.0.4) '@vitest/coverage-v8': specifier: ^0.34.6 version: 0.34.6(vitest@0.34.6) @@ -43,7 +43,7 @@ importers: version: 8.52.0 eslint-config-next: specifier: ^13.4.19 - version: 13.5.6(eslint@8.52.0)(typescript@5.2.2) + version: 13.5.6(eslint@8.52.0)(typescript@5.0.4) eslint-config-prettier: specifier: ^9.0.0 version: 9.0.0(eslint@8.52.0) @@ -67,13 +67,13 @@ importers: version: 3.0.3 tsup: specifier: ^7.2.0 - version: 7.2.0(ts-node@10.9.1)(typescript@5.2.2) + version: 7.2.0(ts-node@10.9.1)(typescript@5.0.4) turbo: specifier: ^1.10.13 version: 1.10.16 typescript: - specifier: ^5.2.2 - version: 5.2.2 + specifier: 5.0.4 + version: 5.0.4 vitest: specifier: ^0.34.6 version: 0.34.6 @@ -128,7 +128,7 @@ importers: version: 8.52.0 eslint-config-next: specifier: 14.2.3 - version: 14.2.3(eslint@8.52.0)(typescript@5.2.2) + version: 14.2.3(eslint@8.52.0)(typescript@5.0.4) postcss: specifier: ^8 version: 8.4.31 @@ -136,23 +136,23 @@ importers: specifier: ^3.4.1 version: 3.4.3(ts-node@10.9.1) typescript: - specifier: ^5 - version: 5.2.2 + specifier: ^5.0.4 + version: 5.0.4 packages/eslint-config: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^7.3.1 - version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5) + version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.0.4) '@typescript-eslint/parser': specifier: ^7.3.1 - version: 7.7.1(eslint@8.57.0)(typescript@5.4.5) + version: 7.7.1(eslint@8.57.0)(typescript@5.0.4) eslint: specifier: ^8.57.0 version: 8.57.0 eslint-config-next: specifier: ^14.1.4 - version: 14.2.3(eslint@8.57.0)(typescript@5.4.5) + version: 14.2.3(eslint@8.57.0)(typescript@5.0.4) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) @@ -252,13 +252,16 @@ importers: version: 18.3.0 tsup: specifier: ^8.0.2 - version: 8.0.2(ts-node@10.9.1)(typescript@5.4.5) + version: 8.0.2(ts-node@10.9.1)(typescript@5.0.4) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: 5.0.4 + version: 5.0.4 packages/wapi.js: dependencies: + '@discordjs/docgen': + specifier: ^0.12.1 + version: 0.12.1(typescript@5.0.4) dayjs: specifier: ^1.11.9 version: 1.11.10 @@ -280,7 +283,7 @@ importers: version: 8.52.0 eslint-config-next: specifier: ^13.4.19 - version: 13.5.6(eslint@8.52.0)(typescript@5.2.2) + version: 13.5.6(eslint@8.52.0)(typescript@5.0.4) eslint-config-prettier: specifier: ^9.0.0 version: 9.0.0(eslint@8.52.0) @@ -301,13 +304,10 @@ importers: version: 1.0.3 tsup: specifier: ^7.2.0 - version: 7.2.0(ts-node@10.9.1)(typescript@5.2.2) - typedoc: - specifier: ^0.25.1 - version: 0.25.2(typescript@5.2.2) + version: 7.2.0(ts-node@10.9.1)(typescript@5.0.4) typescript: - specifier: ^5.2.2 - version: 5.2.2 + specifier: ^5.0.4 + version: 5.0.4 vitest: specifier: ^0.34.6 version: 0.34.6 @@ -345,10 +345,14 @@ packages: chalk: 2.4.2 dev: true + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - dev: true /@babel/highlight@7.22.20: resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} @@ -359,6 +363,14 @@ packages: js-tokens: 4.0.0 dev: true + /@babel/parser@7.24.4: + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + dev: false + /@babel/runtime@7.23.2: resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} @@ -372,6 +384,15 @@ packages: regenerator-runtime: 0.14.0 dev: false + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: false + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -464,13 +485,13 @@ packages: '@commitlint/types': 17.8.1 '@types/node': 20.5.1 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.2.2) + cosmiconfig: 8.3.6(typescript@5.0.4) cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@5.4.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@20.8.7)(typescript@5.2.2) + ts-node: 10.9.1(@types/node@20.8.7)(typescript@5.0.4) typescript: 5.4.5 transitivePeerDependencies: - '@swc/core' @@ -550,6 +571,19 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 + /@discordjs/docgen@0.12.1(typescript@5.0.4): + resolution: {integrity: sha512-Hwrzm9GWlu38kYIiZURh2kWYaj/qJcMzYud32UfXWKiGT7KdmdnRoL+ozt24VxN/Vo8ZySe2yCwqxJ6gFra59w==} + engines: {node: '>=16.9.0'} + hasBin: true + dependencies: + commander: 9.5.0 + jsdoc-to-markdown: 7.1.1 + tslib: 2.6.2 + typedoc: 0.23.28(typescript@5.0.4) + transitivePeerDependencies: + - typescript + dev: false + /@emotion/is-prop-valid@0.8.8: resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} requiresBuild: true @@ -1172,6 +1206,13 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + /@jsdoc/salty@0.2.8: + resolution: {integrity: sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==} + engines: {node: '>=v12.0.0'} + dependencies: + lodash: 4.17.21 + dev: false + /@next/env@14.1.0: resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} dev: false @@ -1805,6 +1846,21 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/linkify-it@3.0.5: + resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + dev: false + + /@types/markdown-it@12.2.3: + resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + dependencies: + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.5 + dev: false + + /@types/mdurl@1.0.5: + resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + dev: false + /@types/mime@1.3.4: resolution: {integrity: sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==} dev: true @@ -1875,7 +1931,7 @@ packages: '@types/node': 20.8.7 dev: true - /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.2.2): + /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.0.4): resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1887,10 +1943,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.0.4) '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/type-utils': 6.8.0(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 6.8.0(eslint@8.52.0)(typescript@5.0.4) + '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.0.4) '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 eslint: 8.52.0 @@ -1898,13 +1954,13 @@ packages: ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.3(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -1916,10 +1972,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.0.4) '@typescript-eslint/scope-manager': 7.7.1 - '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.0.4) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.0.4) '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 eslint: 8.57.0 @@ -1927,13 +1983,13 @@ packages: ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.8.0(eslint@8.52.0)(typescript@5.2.2): + /@typescript-eslint/parser@6.8.0(eslint@8.52.0)(typescript@5.0.4): resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1945,16 +2001,16 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.8.0 '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.0.4) '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 eslint: 8.52.0 - typescript: 5.2.2 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.8.0(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/parser@6.8.0(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -1966,16 +2022,16 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.8.0 '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.0.4) '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.4.5 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -1987,11 +2043,11 @@ packages: dependencies: '@typescript-eslint/scope-manager': 7.7.1 '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.0.4) '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.4.5 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true @@ -2012,7 +2068,7 @@ packages: '@typescript-eslint/visitor-keys': 7.7.1 dev: true - /@typescript-eslint/type-utils@6.8.0(eslint@8.52.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@6.8.0(eslint@8.52.0)(typescript@5.0.4): resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2022,17 +2078,17 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.0.4) + '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.0.4) debug: 4.3.4 eslint: 8.52.0 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.3(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2042,12 +2098,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.0.4) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.0.4) debug: 4.3.4 eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true @@ -2062,28 +2118,7 @@ packages: engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2): - resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/visitor-keys': 6.8.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@6.8.0(typescript@5.4.5): + /@typescript-eslint/typescript-estree@6.8.0(typescript@5.0.4): resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2098,13 +2133,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.0.3(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5): + /@typescript-eslint/typescript-estree@7.7.1(typescript@5.0.4): resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2120,13 +2155,13 @@ packages: is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.8.0(eslint@8.52.0)(typescript@5.2.2): + /@typescript-eslint/utils@6.8.0(eslint@8.52.0)(typescript@5.0.4): resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2137,7 +2172,7 @@ packages: '@types/semver': 7.5.4 '@typescript-eslint/scope-manager': 6.8.0 '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.0.4) eslint: 8.52.0 semver: 7.5.4 transitivePeerDependencies: @@ -2145,7 +2180,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2156,7 +2191,7 @@ packages: '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.7.1 '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.0.4) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: @@ -2294,6 +2329,13 @@ packages: uri-js: 4.4.1 dev: true + /ansi-escape-sequences@4.1.0: + resolution: {integrity: sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 3.1.0 + dev: false + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -2330,7 +2372,7 @@ packages: /ansi-sequence-parser@1.1.1: resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} - dev: true + dev: false /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} @@ -2379,7 +2421,6 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} @@ -2387,6 +2428,40 @@ packages: dequal: 2.0.3 dev: true + /array-back@1.0.4: + resolution: {integrity: sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==} + engines: {node: '>=0.12.0'} + dependencies: + typical: 2.6.1 + dev: false + + /array-back@2.0.0: + resolution: {integrity: sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==} + engines: {node: '>=4'} + dependencies: + typical: 2.6.1 + dev: false + + /array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + dev: false + + /array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + dev: false + + /array-back@5.0.0: + resolution: {integrity: sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==} + engines: {node: '>=10'} + dev: false + + /array-back@6.2.2: + resolution: {integrity: sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==} + engines: {node: '>=12.17'} + dev: false + /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: @@ -2542,6 +2617,10 @@ packages: readable-stream: 3.6.2 dev: true + /bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: false + /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -2572,7 +2651,6 @@ packages: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - dev: true /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -2635,6 +2713,15 @@ packages: engines: {node: '>=8'} dev: true + /cache-point@2.0.0: + resolution: {integrity: sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==} + engines: {node: '>=8'} + dependencies: + array-back: 4.0.2 + fs-then-native: 2.0.0 + mkdirp2: 1.0.5 + dev: false + /call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: @@ -2668,6 +2755,13 @@ packages: /caniuse-lite@1.0.30001612: resolution: {integrity: sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==} + /catharsis@0.9.0: + resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} + engines: {node: '>= 10'} + dependencies: + lodash: 4.17.21 + dev: false + /chai@4.3.10: resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} engines: {node: '>=4'} @@ -2804,6 +2898,14 @@ packages: engines: {node: '>=6'} dev: false + /collect-all@1.0.4: + resolution: {integrity: sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==} + engines: {node: '>=0.10.0'} + dependencies: + stream-connect: 1.0.2 + stream-via: 1.0.4 + dev: false + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -2829,6 +2931,37 @@ packages: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true + /command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + dev: false + + /command-line-tool@0.8.0: + resolution: {integrity: sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==} + engines: {node: '>=4.0.0'} + dependencies: + ansi-escape-sequences: 4.1.0 + array-back: 2.0.0 + command-line-args: 5.2.1 + command-line-usage: 4.1.0 + typical: 2.6.1 + dev: false + + /command-line-usage@4.1.0: + resolution: {integrity: sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==} + engines: {node: '>=4.0.0'} + dependencies: + ansi-escape-sequences: 4.1.0 + array-back: 2.0.0 + table-layout: 0.4.5 + typical: 2.6.1 + dev: false + /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} engines: {node: '>=16'} @@ -2838,6 +2971,16 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: false + + /common-sequence@2.0.2: + resolution: {integrity: sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==} + engines: {node: '>=8'} + dev: false + /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: @@ -2864,6 +3007,12 @@ packages: yargs: 17.7.2 dev: true + /config-master@3.1.0: + resolution: {integrity: sha512-n7LBL1zBzYdTpF1mx5DNcZnZn05CWIdsdvtPL4MosvqbBUK3Rq6VWEtGUuF3Y0s9/CIhMejezqlSkP6TnCJ/9g==} + dependencies: + walk-back: 2.0.1 + dev: false + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -2924,12 +3073,12 @@ packages: typescript: '>=4' dependencies: '@types/node': 20.5.1 - cosmiconfig: 8.3.6(typescript@5.2.2) - ts-node: 10.9.1(@types/node@20.8.7)(typescript@5.2.2) + cosmiconfig: 8.3.6(typescript@5.0.4) + ts-node: 10.9.1(@types/node@20.8.7)(typescript@5.0.4) typescript: 5.4.5 dev: true - /cosmiconfig@8.3.6(typescript@5.2.2): + /cosmiconfig@8.3.6(typescript@5.0.4): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -2942,7 +3091,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.2.2 + typescript: 5.0.4 dev: true /create-require@1.1.1: @@ -3039,6 +3188,11 @@ packages: type-detect: 4.0.8 dev: true + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: false + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -3103,6 +3257,24 @@ packages: /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + /dmd@6.2.0: + resolution: {integrity: sha512-uXWxLF1H7TkUAuoHK59/h/ts5cKavm2LnhrIgJWisip4BVzPoXavlwyoprFFn2CzcahKYgvkfaebS6oxzgflkg==} + engines: {node: '>=12'} + dependencies: + array-back: 6.2.2 + cache-point: 2.0.0 + common-sequence: 2.0.2 + file-set: 4.0.2 + handlebars: 4.7.8 + marked: 4.3.0 + object-get: 2.1.1 + reduce-flatten: 3.0.1 + reduce-unique: 2.0.1 + reduce-without: 1.0.1 + test-value: 3.0.0 + walk-back: 5.1.0 + dev: false + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -3157,6 +3329,10 @@ packages: tapable: 2.2.1 dev: true + /entities@2.1.0: + resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} + dev: false + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -3326,12 +3502,17 @@ packages: engines: {node: '>=0.8.0'} dev: true + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: false + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /eslint-config-next@13.5.6(eslint@8.52.0)(typescript@5.2.2): + /eslint-config-next@13.5.6(eslint@8.52.0)(typescript@5.0.4): resolution: {integrity: sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -3342,7 +3523,7 @@ packages: dependencies: '@next/eslint-plugin-next': 13.5.6 '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.0.4) eslint: 8.52.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.52.0) @@ -3350,13 +3531,13 @@ packages: eslint-plugin-jsx-a11y: 6.7.1(eslint@8.52.0) eslint-plugin-react: 7.33.2(eslint@8.52.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.52.0) - typescript: 5.2.2 + typescript: 5.0.4 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: true - /eslint-config-next@14.2.3(eslint@8.52.0)(typescript@5.2.2): + /eslint-config-next@14.2.3(eslint@8.52.0)(typescript@5.0.4): resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -3367,7 +3548,7 @@ packages: dependencies: '@next/eslint-plugin-next': 14.2.3 '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.0.4) eslint: 8.52.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.52.0) @@ -3375,13 +3556,13 @@ packages: eslint-plugin-jsx-a11y: 6.7.1(eslint@8.52.0) eslint-plugin-react: 7.33.2(eslint@8.52.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.52.0) - typescript: 5.2.2 + typescript: 5.0.4 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: true - /eslint-config-next@14.2.3(eslint@8.57.0)(typescript@5.4.5): + /eslint-config-next@14.2.3(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -3392,15 +3573,15 @@ packages: dependencies: '@next/eslint-plugin-next': 14.2.3 '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.0.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.57.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.57.0) eslint-plugin-react: 7.33.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) - typescript: 5.4.5 + typescript: 5.0.4 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color @@ -3488,7 +3669,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.57.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3499,7 +3680,7 @@ packages: enhanced-resolve: 5.15.0 eslint: 8.57.0 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.1 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -3578,7 +3759,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.0.4) debug: 3.2.7 eslint: 8.52.0 eslint-import-resolver-node: 0.3.9 @@ -3608,11 +3789,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.0.4) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color dev: true @@ -3638,7 +3819,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.0.4) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -3691,7 +3872,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.0.4) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -3716,8 +3897,8 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3726,7 +3907,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.0.4) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -3736,7 +3917,7 @@ packages: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - hasown: 2.0.0 + has: 1.0.4 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 @@ -3744,7 +3925,7 @@ packages: object.groupby: 1.0.1 object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.15.0 + tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -3761,7 +3942,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.0.4) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -4184,6 +4365,14 @@ packages: flat-cache: 3.1.1 dev: true + /file-set@4.0.2: + resolution: {integrity: sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==} + engines: {node: '>=10'} + dependencies: + array-back: 5.0.0 + glob: 7.2.3 + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -4205,6 +4394,13 @@ packages: - supports-color dev: false + /find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + dev: false + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -4289,6 +4485,11 @@ packages: universalify: 2.0.0 dev: true + /fs-then-native@2.0.0: + resolution: {integrity: sha512-X712jAOaWXkemQCAmWeg5rOT2i+KOpWz1Z/txk/cW0qlOu2oQ9H61vc5w3X/iyuUEfq/OyaFJ78/cZAQD1/bgA==} + engines: {node: '>=4.0.0'} + dev: false + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -4418,7 +4619,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} @@ -4465,6 +4665,19 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: false + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -4936,6 +5149,74 @@ packages: argparse: 2.0.1 dev: true + /js2xmlparser@4.0.2: + resolution: {integrity: sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==} + dependencies: + xmlcreate: 2.0.4 + dev: false + + /jsdoc-api@7.2.0: + resolution: {integrity: sha512-93YDnlm/OYTlLOFeNs4qAv0RBCJ0kGj67xQaWy8wrbk97Rw1EySitoOTHsTHXPEs3uyx2IStPKGrbE7LTnZXbA==} + engines: {node: '>=12.17'} + dependencies: + array-back: 6.2.2 + cache-point: 2.0.0 + collect-all: 1.0.4 + file-set: 4.0.2 + fs-then-native: 2.0.0 + jsdoc: 4.0.2 + object-to-spawn-args: 2.0.1 + temp-path: 1.0.0 + walk-back: 5.1.0 + dev: false + + /jsdoc-parse@6.2.1: + resolution: {integrity: sha512-9viGRUUtWOk/G4V0+nQ6rfLucz5plxh5I74WbNSNm9h9NWugCDVX4jbG8hZP9QqKGpdTPDE+qJXzaYNos3wqTA==} + engines: {node: '>=12'} + dependencies: + array-back: 6.2.2 + lodash.omit: 4.5.0 + reduce-extract: 1.0.0 + sort-array: 4.1.5 + test-value: 3.0.0 + dev: false + + /jsdoc-to-markdown@7.1.1: + resolution: {integrity: sha512-CI86d63xAVNO+ENumWwmJ034lYe5iGU5GwjtTA11EuphP9tpnoi4hrKgR/J8uME0D+o4KUpVfwX1fjZhc8dEtg==} + engines: {node: '>=12.17'} + hasBin: true + dependencies: + array-back: 6.2.2 + command-line-tool: 0.8.0 + config-master: 3.1.0 + dmd: 6.2.0 + jsdoc-api: 7.2.0 + jsdoc-parse: 6.2.1 + walk-back: 5.1.0 + dev: false + + /jsdoc@4.0.2: + resolution: {integrity: sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + '@babel/parser': 7.24.4 + '@jsdoc/salty': 0.2.8 + '@types/markdown-it': 12.2.3 + bluebird: 3.7.2 + catharsis: 0.9.0 + escape-string-regexp: 2.0.0 + js2xmlparser: 4.0.2 + klaw: 3.0.0 + markdown-it: 12.3.2 + markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2) + marked: 4.3.0 + mkdirp: 1.0.4 + requizzle: 0.2.4 + strip-json-comments: 3.1.1 + underscore: 1.13.6 + dev: false + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -4965,7 +5246,6 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -5001,6 +5281,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /klaw@3.0.0: + resolution: {integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==} + dependencies: + graceful-fs: 4.2.11 + dev: false + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -5026,6 +5312,12 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + /linkify-it@3.0.3: + resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} + dependencies: + uc.micro: 1.0.6 + dev: false + /lint-staged@14.0.1: resolution: {integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==} engines: {node: ^16.14.0 || >=18.0.0} @@ -5089,7 +5381,6 @@ packages: /lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - dev: true /lodash.castarray@4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} @@ -5113,6 +5404,14 @@ packages: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: true + /lodash.omit@4.5.0: + resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} + dev: false + + /lodash.padend@4.6.1: + resolution: {integrity: sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==} + dev: false + /lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} dev: true @@ -5135,7 +5434,6 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -5182,7 +5480,7 @@ packages: /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - dev: true + dev: false /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} @@ -5211,11 +5509,36 @@ packages: engines: {node: '>=8'} dev: true + /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): + resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} + peerDependencies: + '@types/markdown-it': '*' + markdown-it: '*' + dependencies: + '@types/markdown-it': 12.2.3 + markdown-it: 12.3.2 + dev: false + + /markdown-it@12.3.2: + resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 2.1.0 + linkify-it: 3.0.3 + mdurl: 1.0.1 + uc.micro: 1.0.6 + dev: false + /marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} hasBin: true - dev: true + dev: false + + /mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: false /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} @@ -5301,6 +5624,13 @@ packages: dependencies: brace-expansion: 1.1.11 + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -5326,13 +5656,22 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true /minipass@7.0.4: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} dev: true + /mkdirp2@1.0.5: + resolution: {integrity: sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==} + dev: false + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false + /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: @@ -5378,6 +5717,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false + /next@14.1.0(react-dom@18.3.0)(react@18.3.0): resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} engines: {node: '>=18.17.0'} @@ -5509,6 +5852,10 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + /object-get@2.1.1: + resolution: {integrity: sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==} + dev: false + /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -5521,6 +5868,11 @@ packages: engines: {node: '>= 0.4'} dev: true + /object-to-spawn-args@2.0.1: + resolution: {integrity: sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==} + engines: {node: '>=8.0.0'} + dev: false + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} @@ -5804,7 +6156,7 @@ packages: dependencies: lilconfig: 2.1.0 postcss: 8.4.31 - ts-node: 10.9.1(@types/node@20.8.7)(typescript@5.2.2) + ts-node: 10.9.1(@types/node@20.8.7)(typescript@5.0.4) yaml: 2.3.1 /postcss-nested@6.0.1(postcss@8.4.31): @@ -6061,6 +6413,35 @@ packages: strip-indent: 3.0.0 dev: true + /reduce-extract@1.0.0: + resolution: {integrity: sha512-QF8vjWx3wnRSL5uFMyCjDeDc5EBMiryoT9tz94VvgjKfzecHAVnqmXAwQDcr7X4JmLc2cjkjFGCVzhMqDjgR9g==} + engines: {node: '>=0.10.0'} + dependencies: + test-value: 1.1.0 + dev: false + + /reduce-flatten@1.0.1: + resolution: {integrity: sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==} + engines: {node: '>=0.10.0'} + dev: false + + /reduce-flatten@3.0.1: + resolution: {integrity: sha512-bYo+97BmUUOzg09XwfkwALt4PQH1M5L0wzKerBt6WLm3Fhdd43mMS89HiT1B9pJIqko/6lWx3OnV4J9f2Kqp5Q==} + engines: {node: '>=8'} + dev: false + + /reduce-unique@2.0.1: + resolution: {integrity: sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==} + engines: {node: '>=6'} + dev: false + + /reduce-without@1.0.1: + resolution: {integrity: sha512-zQv5y/cf85sxvdrKPlfcRzlDn/OqKFThNimYmsS3flmkioKvkUGn2Qg9cJVoQiEvdxFGLE0MQER/9fZ9sUqdxg==} + engines: {node: '>=0.10.0'} + dependencies: + test-value: 2.1.0 + dev: false + /reflect.getprototypeof@1.0.4: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} @@ -6095,6 +6476,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /requizzle@0.2.4: + resolution: {integrity: sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==} + dependencies: + lodash: 4.17.21 + dev: false + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -6348,7 +6735,7 @@ packages: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 - dev: true + dev: false /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -6383,6 +6770,14 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true + /sort-array@4.1.5: + resolution: {integrity: sha512-Ya4peoS1fgFN42RN1REk2FgdNOeLIEMKFGJvs7VTP3OklF8+kl2SkpVliZ4tk/PurWsrWRsdNdU+tgyOBkB9sA==} + engines: {node: '>=10'} + dependencies: + array-back: 5.0.0 + typical: 6.0.1 + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -6390,7 +6785,6 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} @@ -6444,6 +6838,18 @@ packages: resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} dev: true + /stream-connect@1.0.2: + resolution: {integrity: sha512-68Kl+79cE0RGKemKkhxTSg8+6AGrqBt+cbZAXevg2iJ6Y3zX4JhA/sZeGzLpxW9cXhmqAcE7KnJCisUmIUfnFQ==} + engines: {node: '>=0.10.0'} + dependencies: + array-back: 1.0.4 + dev: false + + /stream-via@1.0.4: + resolution: {integrity: sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==} + engines: {node: '>=0.10.0'} + dev: false + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -6570,7 +6976,6 @@ packages: /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - dev: true /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} @@ -6638,6 +7043,17 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /table-layout@0.4.5: + resolution: {integrity: sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 2.0.0 + deep-extend: 0.6.0 + lodash.padend: 4.6.1 + typical: 2.6.1 + wordwrapjs: 3.0.0 + dev: false + /tailwind-merge@2.3.0: resolution: {integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==} dependencies: @@ -6679,6 +7095,10 @@ packages: engines: {node: '>=6'} dev: true + /temp-path@1.0.0: + resolution: {integrity: sha512-TvmyH7kC6ZVTYkqCODjJIbgvu0FKiwQpZ4D1aknE7xpcDf/qEOB8KZEK5ef2pfbVoiBhNWs3yx4y+ESMtNYmlg==} + dev: false + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -6688,6 +7108,30 @@ packages: minimatch: 3.1.2 dev: true + /test-value@1.1.0: + resolution: {integrity: sha512-wrsbRo7qP+2Je8x8DsK8ovCGyxe3sYfQwOraIY/09A2gFXU9DYKiTF14W4ki/01AEh56kMzAmlj9CaHGDDUBJA==} + engines: {node: '>=0.10.0'} + dependencies: + array-back: 1.0.4 + typical: 2.6.1 + dev: false + + /test-value@2.1.0: + resolution: {integrity: sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==} + engines: {node: '>=0.10.0'} + dependencies: + array-back: 1.0.4 + typical: 2.6.1 + dev: false + + /test-value@3.0.0: + resolution: {integrity: sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 2.0.0 + typical: 2.6.1 + dev: false + /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -6739,6 +7183,11 @@ packages: os-tmpdir: 1.0.2 dev: true + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: false + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -6766,31 +7215,22 @@ packages: engines: {node: '>=8'} dev: true - /ts-api-utils@1.0.3(typescript@5.2.2): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.2.2 - dev: true - - /ts-api-utils@1.0.3(typescript@5.4.5): + /ts-api-utils@1.0.3(typescript@5.0.4): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.4.5 + typescript: 5.0.4 dev: true - /ts-api-utils@1.3.0(typescript@5.4.5): + /ts-api-utils@1.3.0(typescript@5.0.4): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.4.5 + typescript: 5.0.4 dev: true /ts-enum-utils@1.0.3: @@ -6802,7 +7242,7 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-node@10.9.1(@types/node@20.8.7)(typescript@5.2.2): + /ts-node@10.9.1(@types/node@20.8.7)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -6828,7 +7268,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.2.2 + typescript: 5.0.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -6853,7 +7293,7 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup@7.2.0(ts-node@10.9.1)(typescript@5.2.2): + /tsup@7.2.0(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} engines: {node: '>=16.14'} hasBin: true @@ -6883,13 +7323,13 @@ packages: source-map: 0.8.0-beta.0 sucrase: 3.34.0 tree-kill: 1.2.2 - typescript: 5.2.2 + typescript: 5.0.4 transitivePeerDependencies: - supports-color - ts-node dev: true - /tsup@8.0.2(ts-node@10.9.1)(typescript@5.4.5): + /tsup@8.0.2(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} engines: {node: '>=18'} hasBin: true @@ -6922,7 +7362,7 @@ packages: source-map: 0.8.0-beta.0 sucrase: 3.34.0 tree-kill: 1.2.2 - typescript: 5.4.5 + typescript: 5.0.4 transitivePeerDependencies: - supports-color - ts-node @@ -7076,19 +7516,19 @@ packages: is-typed-array: 1.1.12 dev: true - /typedoc@0.25.2(typescript@5.2.2): - resolution: {integrity: sha512-286F7BeATBiWe/qC4PCOCKlSTwfnsLbC/4cZ68oGBbvAqb9vV33quEOXx7q176OXotD+JdEerdQ1OZGJ818lnA==} - engines: {node: '>= 16'} + /typedoc@0.23.28(typescript@5.0.4): + resolution: {integrity: sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==} + engines: {node: '>= 14.14'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x dependencies: lunr: 2.3.9 marked: 4.3.0 - minimatch: 9.0.3 + minimatch: 7.4.6 shiki: 0.14.5 - typescript: 5.2.2 - dev: true + typescript: 5.0.4 + dev: false /typescript@2.8.3: resolution: {integrity: sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==} @@ -7096,9 +7536,9 @@ packages: hasBin: true dev: true - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} hasBin: true /typescript@5.4.5: @@ -7107,10 +7547,36 @@ packages: hasBin: true dev: true + /typical@2.6.1: + resolution: {integrity: sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==} + dev: false + + /typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + dev: false + + /typical@6.0.1: + resolution: {integrity: sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==} + engines: {node: '>=10'} + dev: false + + /uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + dev: false + /ufo@1.3.1: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: false + optional: true + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -7120,6 +7586,10 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /underscore@1.13.6: + resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} + dev: false + /undici-types@5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} @@ -7307,11 +7777,21 @@ packages: /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: true + dev: false /vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: true + dev: false + + /walk-back@2.0.1: + resolution: {integrity: sha512-Nb6GvBR8UWX1D+Le+xUq0+Q1kFmRBIWVrfLnQAOmcpEzA9oAxwJ9gIr36t9TWYfzvWRvuMtjHiVsJYEkXWaTAQ==} + engines: {node: '>=0.10.0'} + dev: false + + /walk-back@5.1.0: + resolution: {integrity: sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==} + engines: {node: '>=12.17'} + dev: false /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -7396,6 +7876,18 @@ packages: stackback: 0.0.2 dev: true + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: false + + /wordwrapjs@3.0.0: + resolution: {integrity: sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==} + engines: {node: '>=4.0.0'} + dependencies: + reduce-flatten: 1.0.1 + typical: 2.6.1 + dev: false + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -7426,6 +7918,10 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /xmlcreate@2.0.4: + resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} + dev: false + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} From 92734834de5792bece5bd1926386c23b22d32dc2 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 01:20:30 +0530 Subject: [PATCH 12/52] feat: wip Signed-off-by: sarthakjdev --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2455ecc..c6d56d1 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ dist coverage .vscode/* cache -.next \ No newline at end of file +.next + From 1b8075ece86435be35a18516fc8ce50873480206 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 01:21:31 +0530 Subject: [PATCH 13/52] feat: wip Signed-off-by: sarthakjdev --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index c6d56d1..6da703a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,3 @@ coverage .vscode/* cache .next - From 33c38752f98c0fac8c26a3f8361ac4d19e76ef12 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 01:25:22 +0530 Subject: [PATCH 14/52] feat: wip Signed-off-by: sarthakjdev --- .github/workflows/documentation-preview.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/documentation-preview.yaml b/.github/workflows/documentation-preview.yaml index 32093c8..b210c17 100644 --- a/.github/workflows/documentation-preview.yaml +++ b/.github/workflows/documentation-preview.yaml @@ -33,7 +33,7 @@ jobs: - name: Install Dependencies run: pnpm install --frozen-lockfile - working-directory: apps/website + working-directory: apps/wapijs.co - name: Trigger Staging Deployment run: vercel deploy -y --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt From 912abb9887212ab0ca550c4a01b82214d763d5d3 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 01:28:16 +0530 Subject: [PATCH 15/52] feat: wip Signed-off-by: sarthakjdev --- .github/workflows/documentation-preview.yaml | 1 + .github/workflows/documentation.yaml | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/documentation-preview.yaml b/.github/workflows/documentation-preview.yaml index b210c17..b3f8f06 100644 --- a/.github/workflows/documentation-preview.yaml +++ b/.github/workflows/documentation-preview.yaml @@ -37,6 +37,7 @@ jobs: - name: Trigger Staging Deployment run: vercel deploy -y --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt + working-directory: apps/wapijs.co - name: Deployment Success if: ${{ success() }} diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml index b580e7b..b47d279 100644 --- a/.github/workflows/documentation.yaml +++ b/.github/workflows/documentation.yaml @@ -5,7 +5,7 @@ on: push: branches: - "master" - paths: ["apps/website/**"] + paths: ["apps/wapijs.co/**"] jobs: docs: @@ -30,14 +30,15 @@ jobs: - name: Install Dependencies run: pnpm install --frozen-lockfile - working-directory: apps/website + working-directory: apps/wapijs.co - name: Build run: pnpm run build - working-directory: apps/website + working-directory: apps/wapijs.co - name: Trigger Production Deployment run: vercel deploy -y --prod --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt + working-directory: apps/wapijs.co - name: Deployment Failure Alert if: ${{ failure() }} From c5c7d0e75978d5228eed7a8e9506555bad62eb3a Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 01:32:47 +0530 Subject: [PATCH 16/52] feat: wip Signed-off-by: sarthakjdev --- .github/workflows/documentation-preview.yaml | 1 - .github/workflows/documentation.yaml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/documentation-preview.yaml b/.github/workflows/documentation-preview.yaml index b3f8f06..b210c17 100644 --- a/.github/workflows/documentation-preview.yaml +++ b/.github/workflows/documentation-preview.yaml @@ -37,7 +37,6 @@ jobs: - name: Trigger Staging Deployment run: vercel deploy -y --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt - working-directory: apps/wapijs.co - name: Deployment Success if: ${{ success() }} diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml index b47d279..987f0eb 100644 --- a/.github/workflows/documentation.yaml +++ b/.github/workflows/documentation.yaml @@ -38,7 +38,6 @@ jobs: - name: Trigger Production Deployment run: vercel deploy -y --prod --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt - working-directory: apps/wapijs.co - name: Deployment Failure Alert if: ${{ failure() }} From 49b0db8d0a72a7128c8d8f68bf0f829df667679d Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 02:00:17 +0530 Subject: [PATCH 17/52] feat: wip Signed-off-by: sarthakjdev --- apps/wapijs.co/package.json | 4 +- .../src/app/docs/[version]/[item]/page.tsx | 6 +- .../wapijs.co/src/app/docs/[version]/page.tsx | 6 +- apps/wapijs.co/src/app/globals.css | 24 +- apps/wapijs.co/src/app/layout.tsx | 2 +- apps/wapijs.co/src/constant.ts | 2 +- apps/wapijs.co/tailwind.config.js | 2 - packages/eslint-config/package.json | 8 +- packages/example-chat-bot/.env.example | 4 + packages/example-chat-bot/.eslintignore | 1 + packages/example-chat-bot/.eslintrc.js | 4 + packages/example-chat-bot/.prettierrc.js | 11 + packages/example-chat-bot/build.mjs | 63 ++ packages/example-chat-bot/nodemon.json | 10 + packages/example-chat-bot/package.json | 49 ++ packages/example-chat-bot/src/constant.ts | 4 + .../src/events/TextMessage.ts | 5 + packages/example-chat-bot/src/index.ts | 0 packages/example-chat-bot/src/utils/client.ts | 25 + packages/example-chat-bot/tsconfig.base.json | 25 + packages/example-chat-bot/tsconfig.json | 13 + packages/wapi.js/package.json | 10 +- pnpm-lock.yaml | 640 +++++++++++++----- 23 files changed, 700 insertions(+), 218 deletions(-) create mode 100644 packages/example-chat-bot/.env.example create mode 100644 packages/example-chat-bot/.eslintignore create mode 100644 packages/example-chat-bot/.eslintrc.js create mode 100644 packages/example-chat-bot/.prettierrc.js create mode 100644 packages/example-chat-bot/build.mjs create mode 100644 packages/example-chat-bot/nodemon.json create mode 100644 packages/example-chat-bot/package.json create mode 100644 packages/example-chat-bot/src/constant.ts create mode 100644 packages/example-chat-bot/src/events/TextMessage.ts create mode 100644 packages/example-chat-bot/src/index.ts create mode 100644 packages/example-chat-bot/src/utils/client.ts create mode 100644 packages/example-chat-bot/tsconfig.base.json create mode 100644 packages/example-chat-bot/tsconfig.json diff --git a/apps/wapijs.co/package.json b/apps/wapijs.co/package.json index 464484c..bf137a1 100644 --- a/apps/wapijs.co/package.json +++ b/apps/wapijs.co/package.json @@ -7,7 +7,7 @@ "build": "next build", "start": "next start", "lint": "next lint", - "pretty": "hn" + "pretty": "pnpm prettier --write \"src/**/*.{ts,tsx,css}\"" }, "dependencies": { "@heroicons/react": "^2.1.3", @@ -26,8 +26,6 @@ "@wapijs/tailwind-config": "workspace:*", "@wapijs/typescript-config": "workspace:*", "@wapijs/ui": "workspace:*", - "eslint": "^8", - "eslint-config-next": "14.2.3", "postcss": "^8", "tailwindcss": "^3.4.1", "typescript": "^5.0.4" diff --git a/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx b/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx index bbc60fe..9b4ced9 100644 --- a/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx +++ b/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx @@ -1,5 +1,5 @@ const LibraryItem = () => { - return
; -}; + return
+} -export default LibraryItem; +export default LibraryItem diff --git a/apps/wapijs.co/src/app/docs/[version]/page.tsx b/apps/wapijs.co/src/app/docs/[version]/page.tsx index a295771..a79a1c3 100644 --- a/apps/wapijs.co/src/app/docs/[version]/page.tsx +++ b/apps/wapijs.co/src/app/docs/[version]/page.tsx @@ -1,5 +1,5 @@ const VersionHomePage = () => { - return
; -}; + return
+} -export default VersionHomePage; +export default VersionHomePage diff --git a/apps/wapijs.co/src/app/globals.css b/apps/wapijs.co/src/app/globals.css index 5188d6b..cb7cdb0 100644 --- a/apps/wapijs.co/src/app/globals.css +++ b/apps/wapijs.co/src/app/globals.css @@ -3,25 +3,25 @@ @tailwind utilities; :root { - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; } @media (prefers-color-scheme: dark) { - :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; - } + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + } } body { - color: rgb(var(--foreground-rgb)); + color: rgb(var(--foreground-rgb)); } @layer utilities { - .text-balance { - text-wrap: balance; - } + .text-balance { + text-wrap: balance; + } } diff --git a/apps/wapijs.co/src/app/layout.tsx b/apps/wapijs.co/src/app/layout.tsx index 94f513a..9f9923f 100644 --- a/apps/wapijs.co/src/app/layout.tsx +++ b/apps/wapijs.co/src/app/layout.tsx @@ -16,7 +16,7 @@ export default function RootLayout({ }>) { return ( - {children} + {children} ) } diff --git a/apps/wapijs.co/src/constant.ts b/apps/wapijs.co/src/constant.ts index 785434a..b195ab2 100644 --- a/apps/wapijs.co/src/constant.ts +++ b/apps/wapijs.co/src/constant.ts @@ -1 +1 @@ -export const metaDescription = "" \ No newline at end of file +export const metaDescription = '' diff --git a/apps/wapijs.co/tailwind.config.js b/apps/wapijs.co/tailwind.config.js index ad5e645..a7abce0 100644 --- a/apps/wapijs.co/tailwind.config.js +++ b/apps/wapijs.co/tailwind.config.js @@ -2,8 +2,6 @@ const config = require('@wapijs/tailwind-config/tailwind.config') const { default: flattenColorPalette } = require('tailwindcss/lib/util/flattenColorPalette') -console.log({ config }) - module.exports = { ...config, content: [ diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 740b73a..2c23dd8 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -7,10 +7,10 @@ "config.node.js" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.3.1", - "eslint": "^8.57.0", - "eslint-config-next": "^14.1.4", + "@typescript-eslint/eslint-plugin": "^7.7.1", + "@typescript-eslint/parser": "^7.7.1", + "eslint": "^9.1.1", + "eslint-config-next": "^14.2.3", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-nibble": "^8.1.0", diff --git a/packages/example-chat-bot/.env.example b/packages/example-chat-bot/.env.example new file mode 100644 index 0000000..e4d9969 --- /dev/null +++ b/packages/example-chat-bot/.env.example @@ -0,0 +1,4 @@ +WHATSAPP_API_ACCESS_TOKEN=EABhCftGVaeIBOza2qZAuUttZCpiFJAVj9titVTRuYB0J17ty6aglC8nuDIHFoYMC2GZC7yP39ZCUlfzqcKcgk8ZCONYWnZAA4YDkyOcDY33qLZAHuic0jIKttDKoY3iDhfetZACVdbEr8bbtJ0FJRKFIQRDuRQdPxmQpxVrLUkR8ZBJ7tB3jTNYuWyEJhNy7AGXgukAZAtch7K1iRE0s0ywyvguslGcZBxbtx2GIBi8mkF33K0ZD +WHATSAPP_PHONE_NUMBER_ID=113269274970227 +WHATSAPP_BUSINESS_ACCOUNT_ID=103043282674158 +WHATSAPP_WEBHOOK_SECRET=1234567890 \ No newline at end of file diff --git a/packages/example-chat-bot/.eslintignore b/packages/example-chat-bot/.eslintignore new file mode 100644 index 0000000..1521c8b --- /dev/null +++ b/packages/example-chat-bot/.eslintignore @@ -0,0 +1 @@ +dist diff --git a/packages/example-chat-bot/.eslintrc.js b/packages/example-chat-bot/.eslintrc.js new file mode 100644 index 0000000..0863f56 --- /dev/null +++ b/packages/example-chat-bot/.eslintrc.js @@ -0,0 +1,4 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: ['@wapijs/eslint-config/config.node.js'] +} diff --git a/packages/example-chat-bot/.prettierrc.js b/packages/example-chat-bot/.prettierrc.js new file mode 100644 index 0000000..2621c56 --- /dev/null +++ b/packages/example-chat-bot/.prettierrc.js @@ -0,0 +1,11 @@ +module.exports = { + arrowParens: 'avoid', + trailingComma: 'none', + tabWidth: 4, + printWidth: 100, + semi: false, + useTabs: true, + bracketSpacing: true, + bracketSameLine: false, + singleQuote: true +} diff --git a/packages/example-chat-bot/build.mjs b/packages/example-chat-bot/build.mjs new file mode 100644 index 0000000..36cdc20 --- /dev/null +++ b/packages/example-chat-bot/build.mjs @@ -0,0 +1,63 @@ +/* eslint-disable no-console */ +import { nodeExternalsPlugin } from 'esbuild-node-externals' +import esbuildPluginTsc from 'esbuild-plugin-tsc' +import { context, build } from 'esbuild' +import { TsconfigPathsPlugin } from '@esbuild-plugins/tsconfig-paths' + +// Define common options for both development and production builds +const commonOptions = { + entryPoints: ['./src/index.ts'], + target: 'es6', + format: "cjs", + splitting: false, + outdir: './dist', + platform: 'node', + bundle: true, + plugins: [ + nodeExternalsPlugin(), + TsconfigPathsPlugin({ tsconfig: './tsconfig.json' }), + esbuildPluginTsc({ + tsconfigPath: './tsconfig.json', + force: true + }) + ] +} + +// Development Build +async function buildDevCode() { + const devOptions = { + ...commonOptions, + minify: false // Don't minify in development + } + + const buildContext = await context(devOptions) + + // Add watch mode for development + await buildContext.watch() +} + +// Production Build +async function buildProdCode() { + const prodOptions = { + ...commonOptions, + minify: true // Minify in production + } + + await build(prodOptions) +} + +async function buildCode() { + if (process.argv.includes('--watch')) { + // If '--watch' argument is provided, run development build + await buildDevCode() + console.log('Built code in development watch mode.') + } else { + // Otherwise, run production build + await buildProdCode() + console.log('Production Build Ready!') + } +} + +buildCode().catch(() => { + process.exit(1) +}) diff --git a/packages/example-chat-bot/nodemon.json b/packages/example-chat-bot/nodemon.json new file mode 100644 index 0000000..1512c28 --- /dev/null +++ b/packages/example-chat-bot/nodemon.json @@ -0,0 +1,10 @@ +{ + "watch": [ + "./dist/src/index.js" + ], + "ignore": [ + "node_modules/*.*" + ], + "ext": "js", + "exec": "sleep 2 && NODE_ENV=development node -r dotenv/config ./dist/index.js dotenv_config_path=./.env.dev" +} \ No newline at end of file diff --git a/packages/example-chat-bot/package.json b/packages/example-chat-bot/package.json new file mode 100644 index 0000000..02a19e1 --- /dev/null +++ b/packages/example-chat-bot/package.json @@ -0,0 +1,49 @@ +{ + "name": "@wapijs/example-chat-bot", + "version": "0.0.0", + "description": "example whatsapp cloud api chatbot", + "private": true, + "main": "./dist/index.js", + "scripts": { + "watch": "pnpm tsc --watch", + "test": "pnpm test", + "dev": "concurrently 'pnpm build:dev' 'nodemon -L'", + "build:dev": "node build.mjs --watch", + "build:prod": "NODE_ENV=production node ./build.mjs", + "lint": "pnpm eslint . --max-warnings=10", + "pretty": "pnpm prettier --write \"src/**/*.ts\"", + "clean-install": "rm -rf ./node_modules && pnpm install --frozen-lockfile" + }, + "keywords": [ + "whatsapp-cloud-api", + "whatsapp-chatbot", + "whatsapp-api", + "typescript", + "nodejs", + "wapi.js", + "wapi.js library" + ], + "authors": [ + "contact.sarthakjain@gmail.com" + ], + "license": "MIT", + "devDependencies": { + "@esbuild-plugins/tsconfig-paths": "^0.1.2", + "@types/node": "^20.10.2", + "@vitest/coverage-v8": "^0.34.6", + "concurrently": "^8.2.1", + "esbuild": "^0.19.8", + "esbuild-node-externals": "^1.11.0", + "esbuild-plugin-tsc": "^0.4.0", + "nodemon": "^3.0.2", + "typescript": "5.0.4", + "@wapijs/eslint-config": "workspace:*", + "@wapijs/prettier-config": "workspace:*", + "@wapijs/typescript-config": "workspace:*" + }, + "packageManager": "pnpm@8.7.0", + "dependencies": { + "dotenv": "^16.3.1", + "@wapijs/wapi.js": "workspace:*" + } +} diff --git a/packages/example-chat-bot/src/constant.ts b/packages/example-chat-bot/src/constant.ts new file mode 100644 index 0000000..8be4463 --- /dev/null +++ b/packages/example-chat-bot/src/constant.ts @@ -0,0 +1,4 @@ +export const WHATSAPP_BUSINESS_ACCOUNT_ID = process.env.WHATSAPP_BUSINESS_ACCOUNT_ID +export const WHATSAPP_API_ACCESS_TOKEN = process.env.WHATSAPP_API_ACCESS_TOKEN +export const WHATSAPP_PHONE_NUMBER_ID = process.env.WHATSAPP_PHONE_NUMBER_ID +export const WHATSAPP_WEBHOOK_SECRET = process.env.WHATSAPP_WEBHOOK_SECRET diff --git a/packages/example-chat-bot/src/events/TextMessage.ts b/packages/example-chat-bot/src/events/TextMessage.ts new file mode 100644 index 0000000..1497436 --- /dev/null +++ b/packages/example-chat-bot/src/events/TextMessage.ts @@ -0,0 +1,5 @@ +import { type TextMessageEvent } from '@wapijs/wapi.js/dist/cjs/src/webhook/events/text' + +export default function (message: TextMessageEvent) { + console.log(message) +} diff --git a/packages/example-chat-bot/src/index.ts b/packages/example-chat-bot/src/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/example-chat-bot/src/utils/client.ts b/packages/example-chat-bot/src/utils/client.ts new file mode 100644 index 0000000..8285c19 --- /dev/null +++ b/packages/example-chat-bot/src/utils/client.ts @@ -0,0 +1,25 @@ +import { Client } from '@wapijs/wapi.js' +import { + WHATSAPP_API_ACCESS_TOKEN, + WHATSAPP_BUSINESS_ACCOUNT_ID, + WHATSAPP_PHONE_NUMBER_ID, + WHATSAPP_WEBHOOK_SECRET +} from '../constant' + +if ( + !WHATSAPP_API_ACCESS_TOKEN || + !WHATSAPP_BUSINESS_ACCOUNT_ID || + !WHATSAPP_PHONE_NUMBER_ID || + !WHATSAPP_WEBHOOK_SECRET +) { + throw new Error('Configs not defined!') +} + +export const whatsappClient = new Client({ + apiAccessToken: WHATSAPP_API_ACCESS_TOKEN, + businessAccountId: WHATSAPP_BUSINESS_ACCOUNT_ID, + phoneNumberId: WHATSAPP_PHONE_NUMBER_ID, + port: 8080, + webhookEndpoint: '/webhook', + webhookSecret: WHATSAPP_WEBHOOK_SECRET +}) diff --git a/packages/example-chat-bot/tsconfig.base.json b/packages/example-chat-bot/tsconfig.base.json new file mode 100644 index 0000000..f2d0746 --- /dev/null +++ b/packages/example-chat-bot/tsconfig.base.json @@ -0,0 +1,25 @@ +{ + "extends": "@wapijs/typescript-config/node.base.json", + "compilerOptions": { + "strictNullChecks": true, + "moduleResolution": "Node10", + "pretty": true, + "allowUnreachableCode": false, + "allowJs": true, + "strict": true, + "declaration": true, + "resolveJsonModule": true, + "declarationMap": false, + "newLine": "lf", + "outDir": "dist", + "removeComments": false, + "sourceMap": true, + "module": "CommonJS", + "target": "ESNext", + "types": ["node"], + "paths": { + "~/*": ["./src/*"], + "root/*": ["./*"] + } + } +} diff --git a/packages/example-chat-bot/tsconfig.json b/packages/example-chat-bot/tsconfig.json new file mode 100644 index 0000000..57c6384 --- /dev/null +++ b/packages/example-chat-bot/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.base.json", + "include": [ + "**/*.ts", + "**/*.js", + "**/*.tsx", + "**/*.jsx", + "./.eslintrc.js", + "./build.mjs", + "./.prettier.js" + ], + "exclude": ["node_modules", "dist/**"] +} diff --git a/packages/wapi.js/package.json b/packages/wapi.js/package.json index f46a474..79bcbb0 100644 --- a/packages/wapi.js/package.json +++ b/packages/wapi.js/package.json @@ -1,5 +1,5 @@ { - "name": "wapi.js", + "name": "@wapijs/wapi.js", "version": "0.0.1", "description": "a typescript based client library to build whatsapp cloud api based chat bots", "main": "dist/cjs/index.js", @@ -39,11 +39,9 @@ "devDependencies": { "@types/express": "^4.17.18", "concurrently": "^8.2.1", - "eslint": "^8.48.0", - "eslint-config-next": "^13.4.19", - "eslint-config-prettier": "^9.0.0", - "eslint-import-resolver-typescript": "^3.6.0", - "eslint-plugin-import": "^2.28.1", + "@wapijs/eslint-config": "workspace:*", + "@wapijs/prettier-config": "workspace:*", + "@wapijs/typescript-config": "workspace:*", "lint-staged": "^14.0.1", "prettier": "^3.0.3", "ts-enum-utils": "^1.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3ff6c34..2a5881c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,12 +123,6 @@ importers: '@wapijs/ui': specifier: workspace:* version: link:../../packages/ui - eslint: - specifier: ^8 - version: 8.52.0 - eslint-config-next: - specifier: 14.2.3 - version: 14.2.3(eslint@8.52.0)(typescript@5.0.4) postcss: specifier: ^8 version: 8.4.31 @@ -142,29 +136,75 @@ importers: packages/eslint-config: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: ^7.3.1 - version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.0.4) + specifier: ^7.7.1 + version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@9.1.1)(typescript@5.0.4) '@typescript-eslint/parser': - specifier: ^7.3.1 - version: 7.7.1(eslint@8.57.0)(typescript@5.0.4) + specifier: ^7.7.1 + version: 7.7.1(eslint@9.1.1)(typescript@5.0.4) eslint: - specifier: ^8.57.0 - version: 8.57.0 + specifier: ^9.1.1 + version: 9.1.1 eslint-config-next: - specifier: ^14.1.4 - version: 14.2.3(eslint@8.57.0)(typescript@5.0.4) + specifier: ^14.2.3 + version: 14.2.3(eslint@9.1.1)(typescript@5.0.4) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@9.1.1) eslint-import-resolver-typescript: specifier: ^3.6.1 - version: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + version: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@9.1.1) eslint-nibble: specifier: ^8.1.0 - version: 8.1.0(eslint@8.57.0) + version: 8.1.0(eslint@9.1.1) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + + packages/example-chat-bot: + dependencies: + '@wapijs/wapi.js': + specifier: workspace:* + version: link:../wapi.js + dotenv: + specifier: ^16.3.1 + version: 16.4.5 + devDependencies: + '@esbuild-plugins/tsconfig-paths': + specifier: ^0.1.2 + version: 0.1.2(esbuild@0.19.12)(typescript@5.0.4) + '@types/node': + specifier: ^20.10.2 + version: 20.12.7 + '@vitest/coverage-v8': + specifier: ^0.34.6 + version: 0.34.6(vitest@0.34.6) + '@wapijs/eslint-config': + specifier: workspace:* + version: link:../eslint-config + '@wapijs/prettier-config': + specifier: workspace:* + version: link:../prettier-config + '@wapijs/typescript-config': + specifier: workspace:* + version: link:../typescript-config + concurrently: + specifier: ^8.2.1 + version: 8.2.2 + esbuild: + specifier: ^0.19.8 + version: 0.19.12 + esbuild-node-externals: + specifier: ^1.11.0 + version: 1.13.0(esbuild@0.19.12) + esbuild-plugin-tsc: + specifier: ^0.4.0 + version: 0.4.0(typescript@5.0.4) + nodemon: + specifier: ^3.0.2 + version: 3.1.0 + typescript: + specifier: 5.0.4 + version: 5.0.4 packages/prettier-config: devDependencies: @@ -203,13 +243,13 @@ importers: dependencies: '@headlessui/react': specifier: ^1.7.17 - version: 1.7.19(react-dom@18.3.0)(react@18.3.0) + version: 1.7.19(react-dom@18.3.1)(react@18.3.0) '@heroicons/react': specifier: ^2.1.3 version: 2.1.3(react@18.3.0) '@radix-ui/react-scroll-area': specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.1)(react@18.3.0) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -218,10 +258,10 @@ importers: version: 2.1.1 framer-motion: specifier: ^10.17.6 - version: 10.18.0(react-dom@18.3.0)(react@18.3.0) + version: 10.18.0(react-dom@18.3.1)(react@18.3.0) next: specifier: 14.1.0 - version: 14.1.0(react-dom@18.3.0)(react@18.3.0) + version: 14.1.0(react-dom@18.3.1)(react@18.3.0) react-icons: specifier: ^4.12.0 version: 4.12.0(react@18.3.0) @@ -275,24 +315,18 @@ importers: '@types/express': specifier: ^4.17.18 version: 4.17.20 + '@wapijs/eslint-config': + specifier: workspace:* + version: link:../eslint-config + '@wapijs/prettier-config': + specifier: workspace:* + version: link:../prettier-config + '@wapijs/typescript-config': + specifier: workspace:* + version: link:../typescript-config concurrently: specifier: ^8.2.1 version: 8.2.2 - eslint: - specifier: ^8.48.0 - version: 8.52.0 - eslint-config-next: - specifier: ^13.4.19 - version: 13.5.6(eslint@8.52.0)(typescript@5.0.4) - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@8.52.0) - eslint-import-resolver-typescript: - specifier: ^3.6.0 - version: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.52.0) - eslint-plugin-import: - specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) lint-staged: specifier: ^14.0.1 version: 14.0.1 @@ -382,7 +416,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 - dev: false /@babel/types@7.24.0: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} @@ -598,6 +631,21 @@ packages: dev: false optional: true + /@esbuild-plugins/tsconfig-paths@0.1.2(esbuild@0.19.12)(typescript@5.0.4): + resolution: {integrity: sha512-TusFR26Y+Ze+Zm+NdfqZTSG4XyrXKxIaAfYCL3jASEI/gHjSdoCujATjzNWaaXs6Sk6Bv2D7NLr4Jdz1gysy/Q==} + peerDependencies: + esbuild: '*' + typescript: '*' + dependencies: + debug: 4.3.4(supports-color@5.5.0) + esbuild: 0.19.12 + find-up: 5.0.0 + strip-json-comments: 3.1.1 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -1023,6 +1071,16 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@9.1.1): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 9.1.1 + eslint-visitor-keys: 3.4.3 + dev: true + /@eslint-community/regexpp@4.10.0: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -1038,7 +1096,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) espree: 9.6.1 globals: 13.23.0 ignore: 5.2.4 @@ -1055,7 +1113,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) espree: 9.6.1 globals: 13.23.0 ignore: 5.2.4 @@ -1067,6 +1125,23 @@ packages: - supports-color dev: true + /@eslint/eslintrc@3.0.2: + resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@5.5.0) + espree: 10.0.1 + globals: 14.0.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /@eslint/js@8.52.0: resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1077,17 +1152,22 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@headlessui/react@1.7.19(react-dom@18.3.0)(react@18.3.0): + /@eslint/js@9.1.1: + resolution: {integrity: sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@headlessui/react@1.7.19(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} engines: {node: '>=10'} peerDependencies: react: ^16 || ^17 || ^18 react-dom: ^16 || ^17 || ^18 dependencies: - '@tanstack/react-virtual': 3.4.0(react-dom@18.3.0)(react@18.3.0) + '@tanstack/react-virtual': 3.4.0(react-dom@18.3.1)(react@18.3.0) client-only: 0.0.1 react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react-dom: 18.3.1(react@18.3.0) dev: false /@headlessui/tailwindcss@0.2.0(tailwindcss@3.4.3): @@ -1112,7 +1192,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -1123,7 +1203,18 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array@0.13.0: + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -1142,6 +1233,11 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true + /@humanwhocodes/retry@0.2.3: + resolution: {integrity: sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==} + engines: {node: '>=18.18'} + dev: true + /@ianvs/eslint-stats@2.0.0: resolution: {integrity: sha512-DnIVVAiXR4tfWERTiQxr1Prrs/uFEbC1C4gTGORMvbF4k7ENyVQeLcoUfNyhlAj2MB/OeorCrN3wSnYuDOUS6Q==} engines: {node: '>=8.0.0'} @@ -1474,7 +1570,7 @@ packages: react: 18.3.0 dev: false - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -1493,10 +1589,10 @@ packages: '@types/react': 18.3.0 '@types/react-dom': 18.3.0 react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react-dom: 18.3.1(react@18.3.0) dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -1514,10 +1610,10 @@ packages: '@types/react': 18.3.0 '@types/react-dom': 18.3.0 react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react-dom: 18.3.1(react@18.3.0) dev: false - /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} peerDependencies: '@types/react': '*' @@ -1536,14 +1632,14 @@ packages: '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) '@radix-ui/react-context': 1.0.1(@types/react@18.3.0)(react@18.3.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.3.0)(react@18.3.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.1)(react@18.3.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.1)(react@18.3.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@18.3.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.0)(react@18.3.0) '@types/react': 18.3.0 '@types/react-dom': 18.3.0 react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react-dom: 18.3.1(react@18.3.0) dev: false /@radix-ui/react-slot@1.0.2(@types/react@18.3.0)(react@18.3.0): @@ -1754,7 +1850,7 @@ packages: tailwindcss: 3.4.3(ts-node@10.9.1) dev: false - /@tanstack/react-virtual@3.4.0(react-dom@18.3.0)(react@18.3.0): + /@tanstack/react-virtual@3.4.0(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-GZN4xn/Tg5w7gvYeVcMVCeL4pEyUhvg+Cp6KX2Z01C4FRNxIWMgIQ9ibgMarNQfo+gt0PVLcEER4A9sNv/jlow==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -1762,7 +1858,7 @@ packages: dependencies: '@tanstack/virtual-core': 3.4.0 react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react-dom: 18.3.1(react@18.3.0) dev: false /@tanstack/virtual-core@3.4.0: @@ -1785,7 +1881,7 @@ packages: resolution: {integrity: sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==} dependencies: '@types/connect': 3.4.37 - '@types/node': 20.8.7 + '@types/node': 20.12.7 dev: true /@types/chai-subset@1.3.4: @@ -1801,7 +1897,7 @@ packages: /@types/connect@3.4.37: resolution: {integrity: sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.12.7 dev: true /@types/estree@1.0.5: @@ -1811,7 +1907,7 @@ packages: /@types/express-serve-static-core@4.17.39: resolution: {integrity: sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==} dependencies: - '@types/node': 20.8.7 + '@types/node': 20.12.7 '@types/qs': 6.9.9 '@types/range-parser': 1.2.6 '@types/send': 0.17.3 @@ -1873,6 +1969,12 @@ packages: resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} dev: true + /@types/node@20.12.7: + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/node@20.5.1: resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} dev: true @@ -1920,7 +2022,7 @@ packages: resolution: {integrity: sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==} dependencies: '@types/mime': 1.3.4 - '@types/node': 20.8.7 + '@types/node': 20.12.7 dev: true /@types/serve-static@1.15.4: @@ -1928,7 +2030,7 @@ packages: dependencies: '@types/http-errors': 2.0.3 '@types/mime': 3.0.3 - '@types/node': 20.8.7 + '@types/node': 20.12.7 dev: true /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.0.4): @@ -1948,7 +2050,7 @@ packages: '@typescript-eslint/type-utils': 6.8.0(eslint@8.52.0)(typescript@5.0.4) '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.0.4) '@typescript-eslint/visitor-keys': 6.8.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.52.0 graphemer: 1.4.0 ignore: 5.2.4 @@ -1960,7 +2062,7 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.0.4): + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@9.1.1)(typescript@5.0.4): resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -1972,13 +2074,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.0.4) + '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.0.4) '@typescript-eslint/scope-manager': 7.7.1 - '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.0.4) - '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.0.4) + '@typescript-eslint/type-utils': 7.7.1(eslint@9.1.1)(typescript@5.0.4) + '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.0.4) '@typescript-eslint/visitor-keys': 7.7.1 - debug: 4.3.4 - eslint: 8.57.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 9.1.1 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -2003,14 +2105,14 @@ packages: '@typescript-eslint/types': 6.8.0 '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.0.4) '@typescript-eslint/visitor-keys': 6.8.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.52.0 typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.8.0(eslint@8.57.0)(typescript@5.0.4): + /@typescript-eslint/parser@6.8.0(eslint@9.1.1)(typescript@5.0.4): resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2024,14 +2126,14 @@ packages: '@typescript-eslint/types': 6.8.0 '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.0.4) '@typescript-eslint/visitor-keys': 6.8.0 - debug: 4.3.4 - eslint: 8.57.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 9.1.1 typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.0.4): + /@typescript-eslint/parser@7.7.1(eslint@9.1.1)(typescript@5.0.4): resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2045,8 +2147,8 @@ packages: '@typescript-eslint/types': 7.7.1 '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.0.4) '@typescript-eslint/visitor-keys': 7.7.1 - debug: 4.3.4 - eslint: 8.57.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 9.1.1 typescript: 5.0.4 transitivePeerDependencies: - supports-color @@ -2080,7 +2182,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.0.4) '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.0.4) - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.52.0 ts-api-utils: 1.0.3(typescript@5.0.4) typescript: 5.0.4 @@ -2088,7 +2190,7 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.0.4): + /@typescript-eslint/type-utils@7.7.1(eslint@9.1.1)(typescript@5.0.4): resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2099,9 +2201,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.0.4) - '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.57.0 + '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.0.4) + debug: 4.3.4(supports-color@5.5.0) + eslint: 9.1.1 ts-api-utils: 1.3.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: @@ -2129,7 +2231,7 @@ packages: dependencies: '@typescript-eslint/types': 6.8.0 '@typescript-eslint/visitor-keys': 6.8.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -2150,7 +2252,7 @@ packages: dependencies: '@typescript-eslint/types': 7.7.1 '@typescript-eslint/visitor-keys': 7.7.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 @@ -2180,19 +2282,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.0.4): + /@typescript-eslint/utils@7.7.1(eslint@9.1.1)(typescript@5.0.4): resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.7.1 '@typescript-eslint/types': 7.7.1 '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.0.4) - eslint: 8.57.0 + eslint: 9.1.1 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -2286,6 +2388,10 @@ packages: through: 2.3.8 dev: true + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: true + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -2302,6 +2408,14 @@ packages: acorn: 8.10.0 dev: true + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} @@ -2311,6 +2425,12 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -3127,7 +3247,7 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.24.4 dev: true /dayjs@1.11.10: @@ -3156,7 +3276,7 @@ packages: ms: 2.1.3 dev: true - /debug@4.3.4: + /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -3166,6 +3286,7 @@ packages: optional: true dependencies: ms: 2.1.2 + supports-color: 5.5.0 dev: true /decamelize-keys@1.1.1: @@ -3296,6 +3417,11 @@ packages: is-obj: 2.0.0 dev: true + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dev: false + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true @@ -3427,6 +3553,26 @@ packages: is-symbol: 1.0.4 dev: true + /esbuild-node-externals@1.13.0(esbuild@0.19.12): + resolution: {integrity: sha512-EAd32LMfUajIbLZphERyDVltTn/jir55B40xND5ro6VpCiv5/pum+s51cQf3LBFSVgEFznVJYMJtfVCJiSb32w==} + engines: {node: '>=12'} + peerDependencies: + esbuild: 0.12 - 0.20 + dependencies: + esbuild: 0.19.12 + find-up: 5.0.0 + tslib: 2.6.2 + dev: true + + /esbuild-plugin-tsc@0.4.0(typescript@5.0.4): + resolution: {integrity: sha512-q9gWIovt1nkwchMLc2zhyksaiHOv3kDK4b0AUol8lkMCRhJ1zavgfb2fad6BKp7FT9rh/OHmEBXVjczLoi/0yw==} + peerDependencies: + typescript: ^4.0.0 || ^5.0.0 + dependencies: + strip-comments: 2.0.1 + typescript: 5.0.4 + dev: true + /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} @@ -3537,7 +3683,7 @@ packages: - supports-color dev: true - /eslint-config-next@14.2.3(eslint@8.52.0)(typescript@5.0.4): + /eslint-config-next@14.2.3(eslint@9.1.1)(typescript@5.0.4): resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -3548,39 +3694,14 @@ packages: dependencies: '@next/eslint-plugin-next': 14.2.3 '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.0.4) - eslint: 8.52.0 + '@typescript-eslint/parser': 6.8.0(eslint@9.1.1)(typescript@5.0.4) + eslint: 9.1.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.52.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.52.0) - eslint-plugin-react: 7.33.2(eslint@8.52.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.52.0) - typescript: 5.0.4 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-config-next@14.2.3(eslint@8.57.0)(typescript@5.0.4): - resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@next/eslint-plugin-next': 14.2.3 - '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.0.4) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.57.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.57.0) - eslint-plugin-react: 7.33.2(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.1.1) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + eslint-plugin-jsx-a11y: 6.7.1(eslint@9.1.1) + eslint-plugin-react: 7.33.2(eslint@9.1.1) + eslint-plugin-react-hooks: 4.6.0(eslint@9.1.1) typescript: 5.0.4 transitivePeerDependencies: - eslint-import-resolver-webpack @@ -3596,13 +3717,13 @@ packages: eslint: 8.52.0 dev: true - /eslint-config-prettier@9.1.0(eslint@8.57.0): + /eslint-config-prettier@9.1.0(eslint@9.1.1): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.57.0 + eslint: 9.1.1 dev: true /eslint-filtered-fix@0.3.0(eslint@8.52.0): @@ -3615,13 +3736,13 @@ packages: optionator: 0.9.3 dev: true - /eslint-filtered-fix@0.3.0(eslint@8.57.0): + /eslint-filtered-fix@0.3.0(eslint@9.1.1): resolution: {integrity: sha512-UMHOza9epEn9T+yVT8RiCFf0JdALpVzmoH62Ez/zvxM540IyUNAkr7aH2Frkv6zlm9a/gbmq/sc7C4SvzZQXcA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.57.0 + eslint: 9.1.1 optionator: 0.9.3 dev: true @@ -3653,7 +3774,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 eslint: 8.52.0 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) @@ -3669,18 +3790,18 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.57.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.1.1): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 - eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint: 9.1.1 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) fast-glob: 3.3.1 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -3699,7 +3820,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 eslint: 8.52.0 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) @@ -3715,18 +3836,18 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@9.1.1): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 - eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint: 9.1.1 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) fast-glob: 3.3.1 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -3768,7 +3889,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3789,16 +3910,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.0.4) + '@typescript-eslint/parser': 6.8.0(eslint@9.1.1)(typescript@5.0.4) debug: 3.2.7 - eslint: 8.57.0 + eslint: 9.1.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.1.1) transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3819,11 +3940,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.0.4) + '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.0.4) debug: 3.2.7 - eslint: 8.57.0 + eslint: 9.1.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@9.1.1) transitivePeerDependencies: - supports-color dev: true @@ -3845,7 +3966,7 @@ packages: optionator: 0.9.3 dev: true - /eslint-nibble@8.1.0(eslint@8.57.0): + /eslint-nibble@8.1.0(eslint@9.1.1): resolution: {integrity: sha512-x9H/1oeuKdC0HsaWeBarOryqNLC+7QZfAZIAP0HnGcmiiPktFIQq/D0e+iiCSyqYLSaui3UwvH56sXMrf5oQhw==} engines: {node: '>=12.0.0'} hasBin: true @@ -3854,8 +3975,8 @@ packages: dependencies: '@ianvs/eslint-stats': 2.0.0 chalk: 4.1.2 - eslint: 8.57.0 - eslint-filtered-fix: 0.3.0(eslint@8.57.0) + eslint: 9.1.1 + eslint-filtered-fix: 0.3.0(eslint@9.1.1) eslint-formatter-friendly: 7.0.0 eslint-summary: 1.0.0 inquirer: 8.2.6 @@ -3897,8 +4018,8 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3907,17 +4028,17 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.0.4) + '@typescript-eslint/parser': 6.8.0(eslint@9.1.1)(typescript@5.0.4) 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: 8.57.0 + eslint: 9.1.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - has: 1.0.4 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 @@ -3925,14 +4046,14 @@ packages: object.groupby: 1.0.1 object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3942,16 +4063,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.0.4) + '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.0.4) 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: 8.57.0 + eslint: 9.1.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -3992,7 +4113,7 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.57.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@9.1.1): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -4007,7 +4128,7 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.57.0 + eslint: 9.1.1 has: 1.0.4 jsx-ast-utils: 3.3.5 language-tags: 1.0.5 @@ -4026,13 +4147,13 @@ packages: eslint: 8.52.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + /eslint-plugin-react-hooks@4.6.0(eslint@9.1.1): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.57.0 + eslint: 9.1.1 dev: true /eslint-plugin-react@7.33.2(eslint@8.52.0): @@ -4060,7 +4181,7 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-react@7.33.2(eslint@8.57.0): + /eslint-plugin-react@7.33.2(eslint@9.1.1): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -4071,7 +4192,7 @@ packages: array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 es-iterator-helpers: 1.0.15 - eslint: 8.57.0 + eslint: 9.1.1 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -4093,6 +4214,14 @@ packages: estraverse: 5.3.0 dev: true + /eslint-scope@8.0.1: + resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + /eslint-summary@1.0.0: resolution: {integrity: sha512-cHr5WiNFhu2guLQykhQV8O7BQcnpFLR6GdLjbQfDDL0yGy9U7dXC6zMUtwoxYgJRC/Wk3yZMc+I6Q15Z7r4j9Q==} engines: {node: '>=0.10.0'} @@ -4106,6 +4235,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + /eslint@8.52.0: resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4122,7 +4256,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -4169,7 +4303,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -4200,6 +4334,58 @@ packages: - supports-color dev: true + /eslint@9.1.1: + resolution: {integrity: sha512-b4cRQ0BeZcSEzPpY2PjFY70VbO32K7BStTGtBsnIGdTSEEQzBi8hPBcGQmTG2zUvFr9uLe0TK42bw8YszuHEqg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 3.0.2 + '@eslint/js': 9.1.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.2.3 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@5.5.0) + escape-string-regexp: 4.0.0 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.0.1 + esquery: 1.5.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.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + 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 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@10.0.1: + resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 4.0.0 + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4365,6 +4551,13 @@ packages: flat-cache: 3.1.1 dev: true + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + dependencies: + flat-cache: 4.0.1 + dev: true + /file-set@4.0.2: resolution: {integrity: sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==} engines: {node: '>=10'} @@ -4426,6 +4619,14 @@ packages: rimraf: 3.0.2 dev: true + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + dev: true + /flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true @@ -4453,7 +4654,7 @@ packages: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true - /framer-motion@10.18.0(react-dom@18.3.0)(react@18.3.0): + /framer-motion@10.18.0(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==} peerDependencies: react: ^18.0.0 @@ -4465,7 +4666,7 @@ packages: optional: true dependencies: react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react-dom: 18.3.1(react@18.3.0) tslib: 2.6.2 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 @@ -4584,7 +4785,7 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.4 minipass: 7.0.4 path-scurry: 1.10.2 dev: true @@ -4634,6 +4835,11 @@ packages: type-fest: 0.20.2 dev: true + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: true + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -4787,6 +4993,10 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true + /ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + dev: true + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -5096,7 +5306,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -5325,7 +5535,7 @@ packages: dependencies: chalk: 5.3.0 commander: 11.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) execa: 7.2.0 lilconfig: 2.1.0 listr2: 6.6.1 @@ -5631,13 +5841,6 @@ packages: brace-expansion: 2.0.1 dev: false - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -5721,7 +5924,7 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next@14.1.0(react-dom@18.3.0)(react@18.3.0): + /next@14.1.0(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} engines: {node: '>=18.17.0'} hasBin: true @@ -5743,7 +5946,7 @@ packages: graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.0 - react-dom: 18.3.0(react@18.3.0) + react-dom: 18.3.1(react@18.3.0) styled-jsx: 5.1.1(react@18.3.0) optionalDependencies: '@next/swc-darwin-arm64': 14.1.0 @@ -5806,6 +6009,30 @@ packages: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true + /nodemon@3.1.0: + resolution: {integrity: sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + chokidar: 3.5.3 + debug: 4.3.4(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.6.0 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.0 + undefsafe: 2.0.5 + dev: true + + /nopt@1.0.10: + resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -6291,6 +6518,10 @@ packages: ipaddr.js: 1.9.1 dev: false + /pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + dev: true + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -6336,6 +6567,16 @@ packages: scheduler: 0.23.1 dev: false + /react-dom@18.3.1(react@18.3.0): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + dependencies: + loose-envify: 1.4.0 + react: 18.3.0 + scheduler: 0.23.2 + dev: false + /react-icons@4.12.0(react@18.3.0): resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==} peerDependencies: @@ -6631,6 +6872,12 @@ packages: loose-envify: 1.4.0 dev: false + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + dependencies: + loose-envify: 1.4.0 + dev: false + /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -6757,6 +7004,13 @@ packages: engines: {node: '>=14'} dev: true + /simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 + dev: true + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -6956,6 +7210,11 @@ packages: engines: {node: '>=4'} dev: true + /strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + dev: true + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -7199,6 +7458,13 @@ packages: engines: {node: '>=0.6'} dev: false + /touch@3.1.0: + resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} + hasBin: true + dependencies: + nopt: 1.0.10 + dev: true + /tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: @@ -7312,7 +7578,7 @@ packages: bundle-require: 4.0.2(esbuild@0.18.20) cac: 6.7.14 chokidar: 3.5.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) esbuild: 0.18.20 execa: 5.1.1 globby: 11.1.0 @@ -7351,7 +7617,7 @@ packages: bundle-require: 4.0.2(esbuild@0.19.12) cac: 6.7.14 chokidar: 3.5.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) esbuild: 0.19.12 execa: 5.1.1 globby: 11.1.0 @@ -7586,6 +7852,10 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + dev: true + /underscore@1.13.6: resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} dev: false @@ -7593,6 +7863,10 @@ packages: /undici-types@5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} @@ -7658,7 +7932,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 @@ -7753,7 +8027,7 @@ packages: acorn-walk: 8.2.0 cac: 6.7.14 chai: 4.3.10 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) local-pkg: 0.4.3 magic-string: 0.30.5 pathe: 1.1.1 From df4bd08effa3f8e53d0c42b3197bccbb9a07ce94 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 02:07:26 +0530 Subject: [PATCH 18/52] feat: wip Signed-off-by: sarthakjdev --- .../src/events/TextMessage.ts | 2 +- packages/wapi.js/index.ts | 49 ++++++++++++++++++- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/packages/example-chat-bot/src/events/TextMessage.ts b/packages/example-chat-bot/src/events/TextMessage.ts index 1497436..2892727 100644 --- a/packages/example-chat-bot/src/events/TextMessage.ts +++ b/packages/example-chat-bot/src/events/TextMessage.ts @@ -1,4 +1,4 @@ -import { type TextMessageEvent } from '@wapijs/wapi.js/dist/cjs/src/webhook/events/text' +import { type TextMessageEvent } from '@wapijs/wapi.js' export default function (message: TextMessageEvent) { console.log(message) diff --git a/packages/wapi.js/index.ts b/packages/wapi.js/index.ts index 312f974..1fadb93 100644 --- a/packages/wapi.js/index.ts +++ b/packages/wapi.js/index.ts @@ -1,4 +1,49 @@ -export { Client } from './src/client/index' -export { Webhook } from './src/webhook' +export * from './src/client/index' +export * from './src/webhook' export * from './src/manager' export * from './src/structures' +export * from './src/webhook/events/audio/interface' +export * from './src/webhook/events/audio/index' +export * from './src/webhook/events/base/interface' +export * from './src/webhook/events/base/index' +export * from './src/webhook/events/contacts/interface' +export * from './src/webhook/events/contacts/index' +export * from './src/webhook/events/customer-identity-changed/interface' +export * from './src/webhook/events/customer-identity-changed/index' +export * from './src/webhook/events/customer-number-changed/interface' +export * from './src/webhook/events/customer-number-changed/index' +export * from './src/webhook/events/document/interface' +export * from './src/webhook/events/document/index' +export * from './src/webhook/events/image/interface' +export * from './src/webhook/events/image/index' +export * from './src/webhook/events/interaction/interface' +export * from './src/webhook/events/interaction/index' +export * from './src/webhook/events/location/interface' +export * from './src/webhook/events/location/index' +export * from './src/webhook/events/message-delivered/interface' +export * from './src/webhook/events/message-delivered/index' +export * from './src/webhook/events/message-failed/interface' +export * from './src/webhook/events/message-failed/index' +export * from './src/webhook/events/message-read/interface' +export * from './src/webhook/events/message-read/index' +export * from './src/webhook/events/message-sent/interface' +export * from './src/webhook/events/message-sent/index' +export * from './src/webhook/events/message-undelivered/interface' +export * from './src/webhook/events/message-undelivered/index' +export * from './src/webhook/events/order/interface' +export * from './src/webhook/events/order/index' +export * from './src/webhook/events/product-inquiry/interface' +export * from './src/webhook/events/product-inquiry/index' +export * from './src/webhook/events/reaction/interface' +export * from './src/webhook/events/reaction/index' +export * from './src/webhook/events/sticker/interface' +export * from './src/webhook/events/sticker/index' +export * from './src/webhook/events/text/interface' +export * from './src/webhook/events/text/index' +export * from './src/webhook/events/unknown/interface' +export * from './src/webhook/events/unknown/index' +export * from './src/webhook/events/video/interface' +export * from './src/webhook/events/video/index' + + + From 1c3bcfe81ef03b8f0452cf2ca4da5c327c9cfe96 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 02:14:01 +0530 Subject: [PATCH 19/52] feat: wip Signed-off-by: sarthakjdev --- packages/example-chat-bot/package.json | 93 +++++++++++++------------- 1 file changed, 46 insertions(+), 47 deletions(-) diff --git a/packages/example-chat-bot/package.json b/packages/example-chat-bot/package.json index 02a19e1..b225632 100644 --- a/packages/example-chat-bot/package.json +++ b/packages/example-chat-bot/package.json @@ -1,49 +1,48 @@ { - "name": "@wapijs/example-chat-bot", - "version": "0.0.0", - "description": "example whatsapp cloud api chatbot", - "private": true, - "main": "./dist/index.js", - "scripts": { - "watch": "pnpm tsc --watch", - "test": "pnpm test", - "dev": "concurrently 'pnpm build:dev' 'nodemon -L'", - "build:dev": "node build.mjs --watch", - "build:prod": "NODE_ENV=production node ./build.mjs", - "lint": "pnpm eslint . --max-warnings=10", - "pretty": "pnpm prettier --write \"src/**/*.ts\"", - "clean-install": "rm -rf ./node_modules && pnpm install --frozen-lockfile" - }, - "keywords": [ - "whatsapp-cloud-api", - "whatsapp-chatbot", - "whatsapp-api", - "typescript", - "nodejs", - "wapi.js", - "wapi.js library" - ], - "authors": [ - "contact.sarthakjain@gmail.com" - ], - "license": "MIT", - "devDependencies": { - "@esbuild-plugins/tsconfig-paths": "^0.1.2", - "@types/node": "^20.10.2", - "@vitest/coverage-v8": "^0.34.6", - "concurrently": "^8.2.1", - "esbuild": "^0.19.8", - "esbuild-node-externals": "^1.11.0", - "esbuild-plugin-tsc": "^0.4.0", - "nodemon": "^3.0.2", - "typescript": "5.0.4", - "@wapijs/eslint-config": "workspace:*", - "@wapijs/prettier-config": "workspace:*", - "@wapijs/typescript-config": "workspace:*" - }, - "packageManager": "pnpm@8.7.0", - "dependencies": { - "dotenv": "^16.3.1", - "@wapijs/wapi.js": "workspace:*" - } + "name": "@wapijs/example-chat-bot", + "version": "0.0.0", + "description": "example whatsapp cloud api chatbot", + "private": true, + "main": "./dist/index.js", + "scripts": { + "watch": "pnpm tsc --watch", + "dev": "concurrently 'pnpm build:dev' 'nodemon -L'", + "build:dev": "node build.mjs --watch", + "build:prod": "NODE_ENV=production node ./build.mjs", + "lint": "pnpm eslint . --max-warnings=10", + "pretty": "pnpm prettier --write \"src/**/*.ts\"", + "clean-install": "rm -rf ./node_modules && pnpm install --frozen-lockfile" + }, + "keywords": [ + "whatsapp-cloud-api", + "whatsapp-chatbot", + "whatsapp-api", + "typescript", + "nodejs", + "wapi.js", + "wapi.js library" + ], + "authors": [ + "contact.sarthakjain@gmail.com" + ], + "license": "MIT", + "devDependencies": { + "@esbuild-plugins/tsconfig-paths": "^0.1.2", + "@types/node": "^20.10.2", + "@vitest/coverage-v8": "^0.34.6", + "concurrently": "^8.2.1", + "esbuild": "^0.19.8", + "esbuild-node-externals": "^1.11.0", + "esbuild-plugin-tsc": "^0.4.0", + "nodemon": "^3.0.2", + "typescript": "5.0.4", + "@wapijs/eslint-config": "workspace:*", + "@wapijs/prettier-config": "workspace:*", + "@wapijs/typescript-config": "workspace:*" + }, + "packageManager": "pnpm@8.7.0", + "dependencies": { + "dotenv": "^16.3.1", + "@wapijs/wapi.js": "workspace:*" + } } From 0752648e74f764e101288ad8f09b3d0b1a4cdf86 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:39:06 +0530 Subject: [PATCH 20/52] feat: wip Signed-off-by: sarthakjdev --- .github/workflows/documentation-preview.yaml | 89 -------------------- .github/workflows/documentation.yaml | 52 ------------ packages/wapi.js/docs/docs.json | 2 +- packages/wapi.js/package.json | 2 +- 4 files changed, 2 insertions(+), 143 deletions(-) delete mode 100644 .github/workflows/documentation-preview.yaml delete mode 100644 .github/workflows/documentation.yaml diff --git a/.github/workflows/documentation-preview.yaml b/.github/workflows/documentation-preview.yaml deleted file mode 100644 index b210c17..0000000 --- a/.github/workflows/documentation-preview.yaml +++ /dev/null @@ -1,89 +0,0 @@ -name: Preview Deploy Documentation - -on: - workflow_dispatch: {} - push: - branches-ignore: - - "master" - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - docs: - environment: Preview - timeout-minutes: 15 - runs-on: ubuntu-latest - env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: User Node.js LTS - uses: actions/setup-node@v2 - - - name: Install pnpm - uses: pnpm/action-setup@v2.2.4 - - - name: Install Vercel CLI - run: pnpm -g add vercel@canary - - - name: Install Dependencies - run: pnpm install --frozen-lockfile - working-directory: apps/wapijs.co - - - name: Trigger Staging Deployment - run: vercel deploy -y --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt - - - name: Deployment Success - if: ${{ success() }} - uses: actions/github-script@v6 - with: - script: | - const fs = require("fs") - const path = require("path") - const { data: pullRequestData } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ - owner: context.repo.owner, - repo: context.repo.repo, - commit_sha: context.payload.after - }) - - const deploymentUrl = fs.readFileSync(path.resolve(path.resolve(), './deployment-url.txt'), 'utf8') - - if(pullRequestData[0]){ - await github.rest.issues.createComment({ - issue_number: pullRequestData[0].number, - owner: context.repo.owner, - repo: context.repo.repo, - body: `#### 🟢 Deployment success: - Deployed Url: ${deploymentUrl}` - }) - } else { - throw new Error('Pull request data not found') - } - - - name: Deployment Failure - if: ${{ failure() }} - uses: actions/github-script@v5 - with: - script: | - const { data: pullRequestData } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ - owner: context.repo.owner, - repo: context.repo.repo, - commit_sha: context.payload.after - }) - - if(pullRequestData[0]){ - await github.rest.issues.createComment({ - issue_number: pullRequestData[0].number, - owner: context.repo.owner, - repo: context.repo.repo, - body: `#### ❌ Deployment failed: - ` - }) - } else { - throw new Error('Pull request data not found') - } diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml deleted file mode 100644 index 987f0eb..0000000 --- a/.github/workflows/documentation.yaml +++ /dev/null @@ -1,52 +0,0 @@ -name: Deploy Documentation - -on: - workflow_dispatch: {} - push: - branches: - - "master" - paths: ["apps/wapijs.co/**"] - -jobs: - docs: - environment: Production - timeout-minutes: 15 - runs-on: ubuntu-latest - env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: User Node.js LTS - uses: actions/setup-node@v2 - - - name: Install pnpm - uses: pnpm/action-setup@v2.2.4 - - - name: Install Vercel CLI - run: pnpm -g add vercel@canary - - - name: Install Dependencies - run: pnpm install --frozen-lockfile - working-directory: apps/wapijs.co - - - name: Build - run: pnpm run build - working-directory: apps/wapijs.co - - - name: Trigger Production Deployment - run: vercel deploy -y --prod --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt - - - name: Deployment Failure Alert - if: ${{ failure() }} - uses: rtCamp/action-slack-notify@v2 - env: - SLACK_CHANNEL: general - SLACK_COLOR: ${{ job.status }} - SLACK_ICON: https://github.com/rtCamp.png?size=48 - SLACK_MESSAGE: "production deployment failed, check [HERE](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" - SLACK_TITLE: "🚨🚨🚨 [WAPIJS.CO] MASTER BRANCH DEPLOYMENT FAILED 🚨🚨🚨" - SLACK_USERNAME: sarthakjdev - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/packages/wapi.js/docs/docs.json b/packages/wapi.js/docs/docs.json index 91e5e91..5987c25 100644 --- a/packages/wapi.js/docs/docs.json +++ b/packages/wapi.js/docs/docs.json @@ -1 +1 @@ -{"meta":{"generator":"0.12.1","format":30,"date":1714324585362},"classes":[],"functions":[],"interfaces":[],"typedefs":[],"externals":[],"custom":{"general":{"name":"General","files":{"welcome":{"name":"Welcome","type":"md","content":"## [View the documentation here.](https://discord.js.org/docs/packages/discord.js/main)\n","path":"README.md"}}}}} \ No newline at end of file +{"meta":{"generator":"0.12.1","format":30,"date":1714339677425},"classes":[{"name":"AdInteractionEvent","extends":[[["MessageEvent"]]],"implements":[[["AdInteractionEventInterface"]]],"construct":{"name":"new AdInteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nid",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nsource",": {"],["\nctwaClid",": "],["string",","],["\ndescription",": "],["string",","],["\nid",": "],["string",","],["\nmediaType",": "],["AdInteractionSourceMediaTypeEnum",","],["\nmediaUrl",": "],["string",","],["\nthumbnailUrl",": "],["string",","],["\ntitle",": "],["string",","],["\ntype",": "],["AdInteractionSourceTypeEnum",","],["\nurl",": "],["string\n","},"],["\ntext",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"source","type":[[["{"],["\nctwaClid",": "],["string",","],["\ndescription",": "],["string",","],["\nid",": "],["string",","],["\nmediaType",": "],["AdInteractionSourceMediaTypeEnum",","],["\nmediaUrl",": "],["string",","],["\nthumbnailUrl",": "],["string",","],["\ntitle",": "],["string",","],["\ntype",": "],["AdInteractionSourceTypeEnum",","],["\nurl",": "],["string\n","}"]]],"meta":{"line":166,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L166"}},{"name":"text","type":[[["string"]]],"meta":{"line":165,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L165"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":164,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L164"}},{"name":"AudioMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumAudio",">"]]],"implements":[[["AudioMessageInterface"]]],"construct":{"name":"new AudioMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]],"meta":{"line":34,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L34"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\naudio",": "],["Object",","],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Audio\n","}"]]]],"meta":{"line":51,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L51"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L30"}},{"name":"AudioMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["AudioMessageEventInterface"]]],"construct":{"name":"new AudioMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\naudio",": "],["AudioMessage",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"audio","type":[[["AudioMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/audio/index.ts#L12"}},{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/audio/index.ts#L11"}},{"name":"BaseEvent","implements":[[["BaseEventInterface"]]],"construct":{"name":"new BaseEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}}],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L16"}},{"name":"BaseManager","description":"Base Manager for all the other manager","implements":[[["BaseManagerInterface"]]],"construct":{"name":"new BaseManager","params":[{"name":"client","optional":false,"type":[[["Client"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/base/index.ts#L10"}}],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/base/index.ts#L9"}},{"name":"ButtonInteractionMessage","extends":[[["InteractiveMessage"]]],"implements":[[["ButtonInteractionMessageInterface"]]],"construct":{"name":"new ButtonInteractionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nbuttons",": "],["Array","<{"],["\nid",": "],["string",","],["\ntitle",": "],["string\n","}>,"],["\nfooterText",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nbuttons",": "],["Array","<{"],["\nid",": "],["string",","],["\ntitle",": "],["string\n","}>"],["\n","}"]]],"meta":{"line":66,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L66"}},{"name":"interactiveMessageData","readonly":true,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L32"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addFooter","params":[{"name":"footerText","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":91,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L91"}},{"name":"addHeader","returns":[[[["void"]]]],"meta":{"line":89,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L89"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ninteractive",": { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine"," & "],["undefined"," | { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Interactive\n","} & {"],["\ninteractive",": {"],["\naction",": {"],["\nbuttons",": "],["Array","<{ "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }>"],["\n","},"],["\nbody",": {"],["\ntext",": "],["string\n","},"],["\nfooter",": {"],["\ntext",": "],["string\n","},"],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["Button\n","}"],["\n","}"]]]],"meta":{"line":98,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L98"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":62,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L62"}},{"name":"Client","extends":[[["EventEmitter"]]],"implements":[[["ClientInterface"]]],"construct":{"name":"new Client","params":[{"name":"params","optional":false,"type":[[["{"],["\napiAccessToken",": "],["string",","],["\nbusinessAccountId",": "],["string",","],["\nphoneNumberId",": "],["string",","],["\nport",": "],["number",","],["\nwebhookEndpoint",": "],["string",","],["\nwebhookSecret",": "],["string\n","}"]]]}]},"props":[{"name":"media","description":"Media manager to upload, get and media via whatsapp cloud api","type":[[["MediaManager"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L30"}},{"name":"message","description":"Message manager to manage the outgoing messaging operations.","type":[[["MessageManager"]]],"meta":{"line":44,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L44"}},{"name":"phone","description":"Phone number manager to verify phone numbers for your","type":[[["PhoneNumberManager"]]],"meta":{"line":23,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L23"}},{"name":"readyAtTimeStamp","description":"Unix Timestamp at which client gets into ClientStatusEnum.Ready state","readonly":true,"default":"null","type":[[["null"," | "],["number"]]],"meta":{"line":59,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L59"}},{"name":"requester","description":"Requester is an internal utility to communicate with Whatsapp cloud api","type":[[["RequestClient"]]],"meta":{"line":66,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L66"}},{"name":"status","description":"Status of the client","default":"null","type":[[["null"," | "],["ClientStatusEnum"]]],"meta":{"line":51,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L51"}},{"name":"webhook","description":"Webhook manager to handle the incoming message and event listening","type":[[["Webhook"]]],"meta":{"line":37,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L37"}},{"name":"captureRejectionSymbol","description":"Value: `Symbol.for('nodejs.rejection')`\n\nSee how to write a custom `rejection handler`.","scope":"static","readonly":true,"type":[[["("],["typeof"," "],["captureRejectionSymbol",")"]]],"meta":{"line":402,"file":"events.d.ts"}},{"name":"captureRejections","description":"Value: [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)\n\nChange the default `captureRejections` option on all new `EventEmitter` objects.","scope":"static","type":[[["boolean"]]],"meta":{"line":409,"file":"events.d.ts"}},{"name":"defaultMaxListeners","description":"By default, a maximum of `10` listeners can be registered for any single\nevent. This limit can be changed for individual `EventEmitter` instances\nusing the `emitter.setMaxListeners(n)` method. To change the default\nfor _all_`EventEmitter` instances, the `events.defaultMaxListeners`property can be used. If this value is not a positive number, a `RangeError`is thrown.\n\nTake caution when setting the `events.defaultMaxListeners` because the\nchange affects _all_`EventEmitter` instances, including those created before\nthe change is made. However, calling `emitter.setMaxListeners(n)` still has\nprecedence over `events.defaultMaxListeners`.\n\nThis is not a hard limit. The `EventEmitter` instance will allow\nmore listeners to be added but will output a trace warning to stderr indicating\nthat a \"possible EventEmitter memory leak\" has been detected. For any single`EventEmitter`, the `emitter.getMaxListeners()` and `emitter.setMaxListeners()`methods can be used to\ntemporarily avoid this warning:\n\n```js\nimport { EventEmitter } from 'node:events';\nconst emitter = new EventEmitter();\nemitter.setMaxListeners(emitter.getMaxListeners() + 1);\nemitter.once('event', () => {\n // do stuff\n emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));\n});\n```\n\nThe `--trace-warnings` command-line flag can be used to display the\nstack trace for such warnings.\n\nThe emitted warning can be inspected with `process.on('warning')` and will\nhave the additional `emitter`, `type`, and `count` properties, referring to\nthe event emitter instance, the event's name and the number of attached\nlisteners, respectively.\nIts `name` property is set to `'MaxListenersExceededWarning'`.","scope":"static","type":[[["number"]]],"meta":{"line":446,"file":"events.d.ts"}},{"name":"errorMonitor","description":"This symbol shall be used to install a listener for only monitoring `'error'`events. Listeners installed using this symbol are called before the regular`'error'` listeners are called.\n\nInstalling a listener using this symbol does not change the behavior once an`'error'` event is emitted. Therefore, the process will still crash if no\nregular `'error'` listener is installed.","scope":"static","readonly":true,"type":[[["("],["typeof"," "],["errorMonitor",")"]]],"meta":{"line":395,"file":"events.d.ts"}}],"methods":[{"name":"[captureRejectionSymbol]","params":[{"name":"error","optional":false,"type":[[["Error"]]]},{"name":"event","optional":false,"type":[[["string"]]]},{"name":"args","optional":false,"variable":true,"type":[[["Array","<"],["any",">"]]]}],"returns":[[[["void"]]]],"meta":{"line":112,"file":"events.d.ts"}},{"name":"addListener","description":"Alias for `emitter.on(eventName, listener)`.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":510,"file":"events.d.ts"}},{"name":"emit","description":"Function to emit a new event on incoming webhook or wapi events","params":[{"name":"eventName","optional":false,"type":[[["T"]]]},{"name":"data","optional":false,"type":[[["WapiEventDataMap","["],["T","]"]]]}],"returns":[[[["boolean"]]]],"meta":{"line":146,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L146"}},{"name":"eventNames","description":"Returns an array listing the events for which the emitter has registered\nlisteners. The values in the array are strings or `Symbol`s.\n\n```js\nimport { EventEmitter } from 'node:events';\n\nconst myEE = new EventEmitter();\nmyEE.on('foo', () => {});\nmyEE.on('bar', () => {});\n\nconst sym = Symbol('symbol');\nmyEE.on(sym, () => {});\n\nconsole.log(myEE.eventNames());\n// Prints: [ 'foo', 'bar', Symbol(symbol) ]\n```","returns":[[[["Array","<"],["string"," | "],["symbol",">"]]]],"meta":{"line":835,"file":"events.d.ts"}},{"name":"getMaxListeners","description":"Returns the current max listener value for the `EventEmitter` which is either\nset by `emitter.setMaxListeners(n)` or defaults to defaultMaxListeners.","returns":[[[["number"]]]],"meta":{"line":687,"file":"events.d.ts"}},{"name":"initiate","description":"Function to initiate the wapi client and start listening to the incoming webhook events","returns":[[[["void"]]]],"meta":{"line":214,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L214"}},{"name":"listenerCount","description":"Returns the number of listeners listening for the event named `eventName`.\nIf `listener` is provided, it will return how many times the listener is found\nin the list of the listeners of the event.","params":[{"name":"eventName","description":"The name of the event being listened for","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The event handler function","optional":true,"type":[[["Function"]]]}],"returns":[[[["number"]]]],"meta":{"line":781,"file":"events.d.ts"}},{"name":"listeners","description":"Returns a copy of the array of listeners for the event named `eventName`.\n\n```js\nserver.on('connection', (stream) => {\n console.log('someone connected!');\n});\nconsole.log(util.inspect(server.listeners('connection')));\n// Prints: [ [Function] ]\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":700,"file":"events.d.ts"}},{"name":"off","description":"Alias for `emitter.removeListener()`.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":660,"file":"events.d.ts"}},{"name":"on","description":"Function to attach event listener to wapi client","params":[{"name":"eventName","optional":false,"type":[[["T"]]]},{"name":"listener","optional":false,"type":[[["("],["data",": "],["WapiEventDataMap","["],["T","]) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":155,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L155"}},{"name":"once","description":"Adds a **one-time**`listener` function for the event named `eventName`. The\nnext time `eventName` is triggered, this listener is removed and then invoked.\n\n```js\nserver.once('connection', (stream) => {\n console.log('Ah, we have our first user!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.\n\nBy default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the\nevent listener to the beginning of the listeners array.\n\n```js\nimport { EventEmitter } from 'node:events';\nconst myEE = new EventEmitter();\nmyEE.once('foo', () => console.log('a'));\nmyEE.prependOnceListener('foo', () => console.log('b'));\nmyEE.emit('foo');\n// Prints:\n// b\n// a\n```","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":572,"file":"events.d.ts"}},{"name":"prependListener","description":"Adds the `listener` function to the _beginning_ of the listeners array for the\nevent named `eventName`. No checks are made to see if the `listener` has\nalready been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple\ntimes.\n\n```js\nserver.prependListener('connection', (stream) => {\n console.log('someone connected!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":799,"file":"events.d.ts"}},{"name":"prependOnceListener","description":"Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this\nlistener is removed, and then invoked.\n\n```js\nserver.prependOnceListener('connection', (stream) => {\n console.log('Ah, we have our first user!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":815,"file":"events.d.ts"}},{"name":"rawListeners","description":"Returns a copy of the array of listeners for the event named `eventName`,\nincluding any wrappers (such as those created by `.once()`).\n\n```js\nimport { EventEmitter } from 'node:events';\nconst emitter = new EventEmitter();\nemitter.once('log', () => console.log('log once'));\n\n// Returns a new Array with a function `onceWrapper` which has a property\n// `listener` which contains the original listener bound above\nconst listeners = emitter.rawListeners('log');\nconst logFnWrapper = listeners[0];\n\n// Logs \"log once\" to the console and does not unbind the `once` event\nlogFnWrapper.listener();\n\n// Logs \"log once\" to the console and removes the listener\nlogFnWrapper();\n\nemitter.on('log', () => console.log('log persistently'));\n// Will return a new Array with a single function bound by `.on()` above\nconst newListeners = emitter.rawListeners('log');\n\n// Logs \"log persistently\" twice\nnewListeners[0]();\nemitter.emit('log');\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":731,"file":"events.d.ts"}},{"name":"removeAllListeners","description":"Removes all listeners, or those of the specified `eventName`.\n\nIt is bad practice to remove listeners added elsewhere in the code,\nparticularly when the `EventEmitter` instance was created by some other\ncomponent or module (e.g. sockets or file streams).\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"event","optional":true,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Client"]]]],"meta":{"line":671,"file":"events.d.ts"}},{"name":"removeListener","description":"Removes the specified `listener` from the listener array for the event named`eventName`.\n\n```js\nconst callback = (stream) => {\n console.log('someone connected!');\n};\nserver.on('connection', callback);\n// ...\nserver.removeListener('connection', callback);\n```\n\n`removeListener()` will remove, at most, one instance of a listener from the\nlistener array. If any single listener has been added multiple times to the\nlistener array for the specified `eventName`, then `removeListener()` must be\ncalled multiple times to remove each instance.\n\nOnce an event is emitted, all listeners attached to it at the\ntime of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution\nwill not remove them from`emit()` in progress. Subsequent events behave as expected.\n\n```js\nimport { EventEmitter } from 'node:events';\nclass MyEmitter extends EventEmitter {}\nconst myEmitter = new MyEmitter();\n\nconst callbackA = () => {\n console.log('A');\n myEmitter.removeListener('event', callbackB);\n};\n\nconst callbackB = () => {\n console.log('B');\n};\n\nmyEmitter.on('event', callbackA);\n\nmyEmitter.on('event', callbackB);\n\n// callbackA removes listener callbackB but it will still be called.\n// Internal listener array at time of emit [callbackA, callbackB]\nmyEmitter.emit('event');\n// Prints:\n// A\n// B\n\n// callbackB is now removed.\n// Internal listener array [callbackA]\nmyEmitter.emit('event');\n// Prints:\n// A\n```\n\nBecause listeners are managed using an internal array, calling this will\nchange the position indices of any listener registered _after_ the listener\nbeing removed. This will not impact the order in which listeners are called,\nbut it means that any copies of the listener array as returned by\nthe `emitter.listeners()` method will need to be recreated.\n\nWhen a single function has been added as a handler multiple times for a single\nevent (as in the example below), `removeListener()` will remove the most\nrecently added instance. In the example the `once('ping')`listener is removed:\n\n```js\nimport { EventEmitter } from 'node:events';\nconst ee = new EventEmitter();\n\nfunction pong() {\n console.log('pong');\n}\n\nee.on('ping', pong);\nee.once('ping', pong);\nee.removeListener('ping', pong);\n\nee.emit('ping');\nee.emit('ping');\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":655,"file":"events.d.ts"}},{"name":"setMaxListeners","description":"By default `EventEmitter`s will print a warning if more than `10` listeners are\nadded for a particular event. This is a useful default that helps finding\nmemory leaks. The `emitter.setMaxListeners()` method allows the limit to be\nmodified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners.\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"n","optional":false,"type":[[["number"]]]}],"returns":[[[["Client"]]]],"meta":{"line":681,"file":"events.d.ts"}},{"name":"addAbortListener","description":"Listens once to the `abort` event on the provided `signal`.\n\nListening to the `abort` event on abort signals is unsafe and may\nlead to resource leaks since another third party with the signal can\ncall `e.stopImmediatePropagation()`. Unfortunately Node.js cannot change\nthis since it would violate the web standard. Additionally, the original\nAPI makes it easy to forget to remove listeners.\n\nThis API allows safely using `AbortSignal`s in Node.js APIs by solving these\ntwo issues by listening to the event such that `stopImmediatePropagation` does\nnot prevent the listener from running.\n\nReturns a disposable so that it may be unsubscribed from more easily.\n\n```js\nimport { addAbortListener } from 'node:events';\n\nfunction example(signal) {\n let disposable;\n try {\n signal.addEventListener('abort', (e) => e.stopImmediatePropagation());\n disposable = addAbortListener(signal, (e) => {\n // Do something when signal is aborted.\n });\n } finally {\n disposable?.[Symbol.dispose]();\n }\n}\n```","scope":"static","params":[{"name":"signal","optional":false,"type":[[["AbortSignal"]]]},{"name":"resource","optional":false,"type":[[["("],["event",": "],["Event",") => "],["void"]]]}],"returns":[{"types":[[["Disposable"]]],"description":"Disposable that removes the `abort` listener."}],"returnsDescription":"Disposable that removes the `abort` listener.","meta":{"line":387,"file":"events.d.ts"}},{"name":"getClient","description":"getter for client","scope":"static","returns":[[[["("],["typeof"," "],["Client",")"]]]],"meta":{"line":135,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L135"}},{"name":"getEventListeners","description":"Returns a copy of the array of listeners for the event named `eventName`.\n\nFor `EventEmitter`s this behaves exactly the same as calling `.listeners` on\nthe emitter.\n\nFor `EventTarget`s this is the only way to get the event listeners for the\nevent target. This is useful for debugging and diagnostic purposes.\n\n```js\nimport { getEventListeners, EventEmitter } from 'node:events';\n\n{\n const ee = new EventEmitter();\n const listener = () => console.log('Events are fun');\n ee.on('foo', listener);\n console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]\n}\n{\n const et = new EventTarget();\n const listener = () => console.log('Events are fun');\n et.addEventListener('foo', listener);\n console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]\n}\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"," | _"],["DOMEventTarget"]]]},{"name":"name","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":308,"file":"events.d.ts"}},{"name":"getMaxListeners","description":"Returns the currently set max amount of listeners.\n\nFor `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on\nthe emitter.\n\nFor `EventTarget`s this is the only way to get the max event listeners for the\nevent target. If the number of event handlers on a single EventTarget exceeds\nthe max set, the EventTarget will print a warning.\n\n```js\nimport { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';\n\n{\n const ee = new EventEmitter();\n console.log(getMaxListeners(ee)); // 10\n setMaxListeners(11, ee);\n console.log(getMaxListeners(ee)); // 11\n}\n{\n const et = new EventTarget();\n console.log(getMaxListeners(et)); // 10\n setMaxListeners(11, et);\n console.log(getMaxListeners(et)); // 11\n}\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"," | _"],["DOMEventTarget"]]]}],"returns":[[[["number"]]]],"meta":{"line":337,"file":"events.d.ts"}},{"name":"listenerCount","description":"A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`.\n\n```js\nimport { EventEmitter, listenerCount } from 'node:events';\n\nconst myEmitter = new EventEmitter();\nmyEmitter.on('event', () => {});\nmyEmitter.on('event', () => {});\nconsole.log(listenerCount(myEmitter, 'event'));\n// Prints: 2\n```","scope":"static","deprecated":"Since v3.2.0 - Use `listenerCount` instead.","params":[{"name":"emitter","description":"The emitter to query","optional":false,"type":[[["EventEmitter"]]]},{"name":"eventName","description":"The event name","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["number"]]]],"meta":{"line":280,"file":"events.d.ts"}},{"name":"on","description":"```js\nimport { on, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ee = new EventEmitter();\n\n// Emit later on\nprocess.nextTick(() => {\n ee.emit('foo', 'bar');\n ee.emit('foo', 42);\n});\n\nfor await (const event of on(ee, 'foo')) {\n // The execution of this inner block is synchronous and it\n // processes one event at a time (even with await). Do not use\n // if concurrent execution is required.\n console.log(event); // prints ['bar'] [42]\n}\n// Unreachable here\n```\n\nReturns an `AsyncIterator` that iterates `eventName` events. It will throw\nif the `EventEmitter` emits `'error'`. It removes all listeners when\nexiting the loop. The `value` returned by each iteration is an array\ncomposed of the emitted event arguments.\n\nAn `AbortSignal` can be used to cancel waiting on events:\n\n```js\nimport { on, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ac = new AbortController();\n\n(async () => {\n const ee = new EventEmitter();\n\n // Emit later on\n process.nextTick(() => {\n ee.emit('foo', 'bar');\n ee.emit('foo', 42);\n });\n\n for await (const event of on(ee, 'foo', { signal: ac.signal })) {\n // The execution of this inner block is synchronous and it\n // processes one event at a time (even with await). Do not use\n // if concurrent execution is required.\n console.log(event); // prints ['bar'] [42]\n }\n // Unreachable here\n})();\n\nprocess.nextTick(() => ac.abort());\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"]]]},{"name":"eventName","description":"The name of the event being listened for","optional":false,"type":[[["string"]]]},{"name":"options","optional":true,"type":[[["StaticEventEmitterOptions"]]]}],"returns":[{"types":[[["AsyncIterableIterator","<"],["any",">"]]],"description":"that iterates `eventName` events emitted by the `emitter`"}],"returnsDescription":"that iterates `eventName` events emitted by the `emitter`","meta":{"line":258,"file":"events.d.ts"}},{"name":"once","description":"Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given\nevent or that is rejected if the `EventEmitter` emits `'error'` while waiting.\nThe `Promise` will resolve with an array of all the arguments emitted to the\ngiven event.\n\nThis method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event\nsemantics and does not listen to the `'error'` event.\n\n```js\nimport { once, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ee = new EventEmitter();\n\nprocess.nextTick(() => {\n ee.emit('myevent', 42);\n});\n\nconst [value] = await once(ee, 'myevent');\nconsole.log(value);\n\nconst err = new Error('kaboom');\nprocess.nextTick(() => {\n ee.emit('error', err);\n});\n\ntry {\n await once(ee, 'myevent');\n} catch (err) {\n console.error('error happened', err);\n}\n```\n\nThe special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the\n'`error'` event itself, then it is treated as any other kind of event without\nspecial handling:\n\n```js\nimport { EventEmitter, once } from 'node:events';\n\nconst ee = new EventEmitter();\n\nonce(ee, 'error')\n .then(([err]) => console.log('ok', err.message))\n .catch((err) => console.error('error', err.message));\n\nee.emit('error', new Error('boom'));\n\n// Prints: ok boom\n```\n\nAn `AbortSignal` can be used to cancel waiting for the event:\n\n```js\nimport { EventEmitter, once } from 'node:events';\n\nconst ee = new EventEmitter();\nconst ac = new AbortController();\n\nasync function foo(emitter, event, signal) {\n try {\n await once(emitter, event, { signal });\n console.log('event emitted!');\n } catch (error) {\n if (error.name === 'AbortError') {\n console.error('Waiting for the event was canceled!');\n } else {\n console.error('There was an error', error.message);\n }\n }\n}\n\nfoo(ee, 'foo', ac.signal);\nac.abort(); // Abort waiting for the event\nee.emit('foo'); // Prints: Waiting for the event was canceled!\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["_"],["NodeEventTarget"]]]},{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"options","optional":true,"type":[[["StaticEventEmitterOptions"]]]}],"returns":[[[["Promise","<"],["Array","<"],["any",">>"]]]],"meta":{"line":193,"file":"events.d.ts"}},{"name":"setMaxListeners","description":"```js\nimport { setMaxListeners, EventEmitter } from 'node:events';\n\nconst target = new EventTarget();\nconst emitter = new EventEmitter();\n\nsetMaxListeners(5, target, emitter);\n```","scope":"static","params":[{"name":"n","description":"A non-negative number. The maximum number of listeners per `EventTarget` event.","optional":true,"type":[[["number"]]]},{"name":"eventTargets","optional":false,"variable":true,"type":[[["Array","<"],["EventEmitter"," | _"],["DOMEventTarget",">"]]]}],"returns":[[[["void"]]]],"meta":{"line":352,"file":"events.d.ts"}}],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L17"}},{"name":"Contact","construct":{"name":"new Contact","params":[{"name":"params","optional":false,"type":[[["{"],["\nname",": {"],["\nfirst","_"],["name",": "],["string",","],["\nformatted","_"],["name",": "],["string",","],["\nlast","_"],["name",": "],["string",","],["\nmiddle","_"],["name",": "],["string",","],["\nprefix",": "],["string",","],["\nsuffix",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"addresses","type":[[["Array","<{"],["\ncity",": "],["string",","],["\ncountry",": "],["string",","],["\ncountry","_"],["code",": "],["string",","],["\nstate",": "],["string",","],["\nstreet",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'\n","}>"]]],"meta":{"line":19,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L19"}},{"name":"birthday","type":[[["string"]]],"meta":{"line":23,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L23"}},{"name":"emails","type":[[["Array","<{"],["\nemail",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'\n","}>"]]],"meta":{"line":21,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L21"}},{"name":"name","type":[[["{"],["\nfirst","_"],["name",": "],["string",","],["\nformatted","_"],["name",": "],["string",","],["\nlast","_"],["name",": "],["string",","],["\nmiddle","_"],["name",": "],["string",","],["\nprefix",": "],["string",","],["\nsuffix",": "],["string\n","}"]]],"meta":{"line":25,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L25"}},{"name":"org","type":[[["{"],["\ncompany",": "],["string",","],["\ndepartment",": "],["string",","],["\ntitle",": "],["string\n","}"]]],"meta":{"line":24,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L24"}},{"name":"phones","type":[[["Array","<{"],["\nphone",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'"," | "],["'CELL'"," | "],["'MAIN'"," | "],["'IPHONE'",","],["\nwa","_"],["id",": "],["string\n","}>"]]],"meta":{"line":22,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L22"}},{"name":"urls","type":[[["Array","<{"],["\ntype",": "],["'HOME'"," | "],["'WORK'",","],["\nurl",": "],["string\n","}>"]]],"meta":{"line":20,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L20"}}],"methods":[{"name":"addAddress","params":[{"name":"address","optional":false,"type":[[["{"],["\ncity",": "],["string",","],["\ncountry",": "],["string",","],["\ncountry","_"],["code",": "],["string",","],["\nstate",": "],["string",","],["\nstreet",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":55,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L55"}},{"name":"addEmail","params":[{"name":"email","optional":false,"type":[[["{"],["\nemail",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":63,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L63"}},{"name":"addPhone","params":[{"name":"phone","optional":false,"type":[[["{"],["\nphone",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'"," | "],["'CELL'"," | "],["'MAIN'"," | "],["'IPHONE'",","],["\nwa","_"],["id",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L67"}},{"name":"addUrl","params":[{"name":"url","optional":false,"type":[[["{"],["\ntype",": "],["'HOME'"," | "],["'WORK'",","],["\nurl",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":59,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L59"}},{"name":"setBirthday","params":[{"name":"date","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":71,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L71"}},{"name":"setFirstName","params":[{"name":"firstName","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":35,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L35"}},{"name":"setLastName","params":[{"name":"lastName","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L31"}},{"name":"setMiddleName","params":[{"name":"middleName","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":39,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L39"}},{"name":"setNamePrefix","params":[{"name":"prefix","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":47,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L47"}},{"name":"setNameSuffix","params":[{"name":"suffix","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":43,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L43"}},{"name":"setOrg","params":[{"name":"org","optional":false,"type":[[["{"],["\ncompany",": "],["string",","],["\ndepartment",": "],["string",","],["\ntitle",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":51,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L51"}}],"meta":{"line":18,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L18"}},{"name":"ContactMessage","extends":[[["BaseMessage","<"],["'contacts'",">"]]],"implements":[[["ContactMessageInterface"]]],"construct":{"name":"new ContactMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\ncontacts",": "],["Array","<"],["Contact",">"],["\n","}"]]]}]},"props":[{"name":"contacts","type":[[["Array","<"],["Contact",">"]]],"meta":{"line":82,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L82"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addContact","params":[{"name":"contact","optional":false,"type":[[["Contact"]]]}],"returns":[[[["void"]]]],"meta":{"line":97,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L97"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontacts",": "],["Array","<{"],["\naddresses",": "],["Array","<{ "],["type",": "],["\"HOME\""," | "],["\"WORK\"","; "],["street","?: "],["string"," | "],["undefined","; "],["city","?: "],["string"," | "],["undefined","; "],["state","?: "],["string"," | "],["undefined","; "],["country","?: "],["string"," | "],["undefined","; "],["country","_"],["code","?: "],["string"," | "],["undefined","; }>,"],["\nbirthday",": "],["string",","],["\nemails",": "],["Array","<{ "],["type",": "],["\"HOME\""," | "],["\"WORK\"","; "],["email","?: "],["string"," | "],["undefined","; }>,"],["\nname",": { "],["formatted","_"],["name",": "],["string","; "],["first","_"],["name","?: "],["string"," | "],["undefined","; "],["last","_"],["name","?: "],["string"," | "],["undefined","; "],["middle","_"],["name","?: "],["string"," | "],["undefined","; "],["suffix","?: "],["string"," | "],["undefined","; "],["prefix","?: "],["string"," | "],["undefined","; },"],["\norg",": { "],["company","?: "],["string"," | "],["undefined","; "],["title","?: "],["string"," | "],["undefined","; "],["department","?: "],["string"," | "],["undefined","; },"],["\nphones",": "],["Array","<{ "],["phone","?: "],["string"," | "],["undefined","; "],["type","?: "],["\"HOME\""," | "],["\"WORK\""," | "],["\"CELL\""," | "],["\"MAIN\""," | "],["\"IPHONE\""," | "],["undefined","; "],["wa","_"],["id","?: "],["string"," | "],["undefined","; }>,"],["\nurls",": "],["Array","<{ "],["type",": "],["\"HOME\""," | "],["\"WORK\"","; "],["url",": "],["string","; }>"],["\n","}>,"],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Contacts\n","}"]]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L101"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":81,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L81"}},{"name":"ContactMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["ContactMessageEventInterface"]]],"construct":{"name":"new ContactMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\ncontact",": "],["ContactMessage",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"contact","type":[[["ContactMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/contacts/index.ts#L12"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/contacts/index.ts#L11"}},{"name":"CustomerIdentityChangeEvent","implements":[[["CustomerIdentityChangeEventInterface"]]],"construct":{"name":"new CustomerIdentityChangeEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nacknowledged",": "],["string",","],["\nclient",": "],["Client",","],["\ncreationTimestamp",": "],["string",","],["\nhash",": "],["string",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"acknowledged","type":[[["string"]]],"meta":{"line":6,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L6"}},{"name":"client","type":[[["Client"]]],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L5"}},{"name":"creationTimestamp","type":[[["string"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L7"}},{"name":"hash","type":[[["string"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L8"}}],"meta":{"line":4,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L4"}},{"name":"CustomerNumberChangeEvent","implements":[[["CustomerNumberChangeEventInterface"]]],"construct":{"name":"new CustomerNumberChangeEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nchangeDescription",": "],["string",","],["\nclient",": "],["Client",","],["\nnewWaId",": "],["string",","],["\noldWaId",": "],["string",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"changeDescription","type":[[["string"]]],"meta":{"line":6,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L6"}},{"name":"client","type":[[["Client"]]],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L5"}},{"name":"newWaId","type":[[["string"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L7"}},{"name":"oldWaId","type":[[["string"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L9"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L8"}}],"meta":{"line":4,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L4"}},{"name":"DocumentMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumDocument",">"]]],"implements":[[["DocumentMessageInterface"]]],"construct":{"name":"new DocumentMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nlink",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nlink",": "],["string\n","}"]]],"meta":{"line":229,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L229"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ndocument",": "],["Object",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Document\n","}"]]]],"meta":{"line":250,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L250"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":225,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L225"}},{"name":"DocumentMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["DocumentMessageEventInterface"]]],"construct":{"name":"new DocumentMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\ndocument",": "],["DocumentMessage",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"document","type":[[["DocumentMessage"]]],"meta":{"line":15,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/document/index.ts#L15"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/document/index.ts#L11"}},{"name":"ImageMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumImage",">"]]],"implements":[[["ImageMessageInterface"]]],"construct":{"name":"new ImageMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]],"meta":{"line":131,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L131"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nimage",": "],["Object",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Image\n","}"]]]],"meta":{"line":147,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L147"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":127,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L127"}},{"name":"ImageMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["ImageMessageEventInterface"]]],"construct":{"name":"new ImageMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nimage",": "],["ImageMessage",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"image","type":[[["ImageMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/image/index.ts#L12"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/image/index.ts#L11"}},{"name":"InteractionEvent","extends":[[["MessageEvent"]]],"implements":[[["InteractionMessageEventInterface"]]],"construct":{"name":"new InteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":18,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L18"}},{"name":"ListInteractionEvent","extends":[[["InteractionEvent"]]],"implements":[[["ListInteractionMessageEventInterface"]]],"construct":{"name":"new ListInteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\ndescription",": "],["string",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nlistId",": "],["string",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string",","],["\ntitle",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"description","type":[[["string"]]],"meta":{"line":52,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L52"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"listId","type":[[["string"]]],"meta":{"line":51,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L51"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}},{"name":"title","type":[[["string"]]],"meta":{"line":50,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L50"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":46,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L46"}},{"name":"ListInteractionMessage","extends":[[["InteractiveMessage"]]],"implements":[[["ListInteractionMessageInterface"]]],"construct":{"name":"new ListInteractionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nbuttonText",": "],["string",","],["\nfooterText",": "],["string",","],["\nsections",": "],["Array","<{"],["\nrows",": "],["Array","<{ "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nbuttonText",": "],["string",","],["\nsections",": "],["Array","<{"],["\nrows",": "],["Array","<{ "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]],"meta":{"line":166,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L166"}},{"name":"interactiveMessageData","readonly":true,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L32"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addFooter","params":[{"name":"footerText","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":198,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L198"}},{"name":"addHeader","returns":[[[["void"]]]],"meta":{"line":196,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L196"}},{"name":"addSection","params":[{"name":"section","optional":false,"type":[[["{"],["\nrows",": "],["Array","<{ "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }>,"],["\ntitle",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":192,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L192"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ninteractive",": { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine"," & "],["undefined"," | { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Interactive\n","} & {"],["\ninteractive",": {"],["\naction",": {"],["\nbutton",": "],["string",","],["\nsections",": "],["Array","<{ "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }>"],["\n","},"],["\nbody",": {"],["\ntext",": "],["string\n","},"],["\nfooter",": {"],["\ntext",": "],["string\n","},"],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["List\n","}"],["\n","}"]]]],"meta":{"line":202,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L202"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":162,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L162"}},{"name":"LocationMessage","extends":[[["BaseMessage","<"],["'location'",">"]]],"implements":[[["LocationMessageInterface"]]],"construct":{"name":"new LocationMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\naddress",": "],["string",","],["\nlatitude",": "],["number",","],["\nlongitude",": "],["number",","],["\nname",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\naddress",": "],["string",","],["\nlatitude",": "],["number",","],["\nlongitude",": "],["number",","],["\nname",": "],["string\n","}"]]],"meta":{"line":14,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/location/index.ts#L14"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nlocation",": {"],["\naddress",": "],["string",","],["\nlatitude",": "],["number",","],["\nlongitude",": "],["number",","],["\nname",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Location\n","}"]]]],"meta":{"line":35,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/location/index.ts#L35"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/location/index.ts#L13"}},{"name":"LocationMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["LocationMessageEventInterface"]]],"construct":{"name":"new LocationMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nlocation",": "],["LocationMessage",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"location","type":[[["LocationMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/location/index.ts#L12"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/location/index.ts#L11"}},{"name":"MediaManager","description":"manager to handle media","extends":[[["BaseManager"]]],"implements":[[["MediaManagerInterface"]]],"construct":{"name":"new MediaManager","params":[{"name":"props","optional":false,"type":[[["{"],["\nclient",": "],["Client\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L13"}}],"methods":[{"name":"delete","description":"Function used to delete uploaded media on whatsapp using media id","params":[{"name":"mediaId","optional":false,"type":[[["string"]]]}],"returns":[[[["Promise","<"],["boolean",">"]]]],"meta":{"line":48,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L48"}},{"name":"getUrl","description":"Function used to get the URL of an media using media id from whatsapp","params":[{"name":"mediaId","optional":false,"type":[[["string"]]]}],"returns":[[[["Promise","<{"],["\nfile","_"],["size",": "],["number",","],["\nid",": "],["string",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nmime","_"],["type",": "],["string",","],["\nsha256",": "],["string",","],["\nurl",": "],["string\n","}>"]]]],"meta":{"line":28,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L28"}},{"name":"upload","description":"Function to upload media","params":[{"name":"params","optional":false,"type":[[["{"],["\nfilePath",": "],["string",","],["\nmediaType",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":66,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L66"}}],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L12"}},{"name":"MediaMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["MediaMessageEventInterface"]]],"construct":{"name":"new MediaMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":98,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L98"}},{"name":"MessageDeliveryEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageDeliveryEventInterface"]]],"construct":{"name":"new MessageDeliveryEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-delivered/index.ts#L10"}},{"name":"MessageEvent","extends":[[["BaseEvent"]]],"implements":[[["MessageEventInterface"]]],"construct":{"name":"new MessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\nfrom",": "],["string",","],["\nid",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":28,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L28"}},{"name":"MessageFailedEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageFailedEventInterface"]]],"construct":{"name":"new MessageFailedEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfailReason",": "],["string",","],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"failReason","type":[[["string"]]],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-failed/index.ts#L11"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-failed/index.ts#L10"}},{"name":"MessageManager","description":"manager to handle outgoing messages for wapi","extends":[[["BaseManager"]]],"implements":[[["MessageManagerInterface"]]],"construct":{"name":"new MessageManager","params":[{"name":"props","optional":false,"type":[[["{"],["\nclient",": "],["Client\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/index.ts#L13"}}],"methods":[{"name":"reply","description":"Function used to reply to a message using a message id","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T",","],["\nphoneNumber",": "],["string",","],["\nreplyToMessageId",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":42,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/index.ts#L42"}},{"name":"send","description":"Function used to send message","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":24,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/index.ts#L24"}}],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/index.ts#L12"}},{"name":"MessageReadEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageReadEventInterface"]]],"construct":{"name":"new MessageReadEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-read/index.ts#L10"}},{"name":"MessageSentEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageSentEventInterface"]]],"construct":{"name":"new MessageSentEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-sent/index.ts#L5"}},{"name":"MessageUndeliveredEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageUndeliveredEventInterface"]]],"construct":{"name":"new MessageUndeliveredEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-undelivered/index.ts#L5"}},{"name":"OrderMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["OrderMessageEventInterface"]]],"construct":{"name":"new OrderMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\norder",": "],["Order",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"order","type":[[["Order"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/order/index.ts#L12"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/order/index.ts#L11"}},{"name":"PhoneNumberManager","description":"Base manager interface","extends":[[["BaseManager"]]],"implements":[[["PhoneNumberManagerInterface"]]],"construct":{"name":"new PhoneNumberManager","params":[{"name":"props","optional":false,"type":[[["{"],["\nclient",": "],["Client\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/base/index.ts#L10"}}],"methods":[{"name":"sendVerificationCode","params":[{"name":"phoneNumber","optional":false,"type":[[["string"]]]}],"returns":[[[["Promise","<"],["boolean",">"]]]],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/phone/index.ts#L10"}},{"name":"verifyCode","params":[{"name":"code","optional":false,"type":[[["string"]]]}],"returns":[[[["Promise","<"],["boolean",">"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/phone/index.ts#L16"}}],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/phone/index.ts#L5"}},{"name":"ProductInquiryEvent","extends":[[["MessageEvent"]]],"implements":[[["ProductInquiryEventInterface"]]],"construct":{"name":"new ProductInquiryEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\ncatalogId",": "],["string",","],["\nfrom",": "],["string",","],["\nid",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nproductId",": "],["string",","],["\ntext",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"catalogId","type":[[["string"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/index.ts#L12"}},{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"productId","type":[[["string"]]],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/index.ts#L11"}},{"name":"text","type":[[["string"]]],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/index.ts#L13"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/index.ts#L10"}},{"name":"ProductInteractionMessage","extends":[[["InteractiveMessage"]]],"implements":[[["ProductInteractionMessageInterface"]]],"construct":{"name":"new ProductInteractionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nbuttonText",": "],["string",","],["\ncatalogId",": "],["string",","],["\nfooterText",": "],["string",","],["\nproductRetailerId",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string\n","}"]]],"meta":{"line":272,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L272"}},{"name":"interactiveMessageData","readonly":true,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L32"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addFooter","params":[{"name":"footerText","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":297,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L297"}},{"name":"addHeader","returns":[[[["void"]]]],"meta":{"line":295,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L295"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ninteractive",": { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine"," & "],["undefined"," | { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Interactive\n","} & {"],["\ninteractive",": {"],["\naction",": {"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string\n","},"],["\nbody",": {"],["\ntext",": "],["string\n","},"],["\nfooter",": {"],["\ntext",": "],["string\n","},"],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["Product\n","}"],["\n","}"]]]],"meta":{"line":301,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L301"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":268,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L268"}},{"name":"ProductListInteractionMessage","extends":[[["InteractiveMessage"]]],"implements":[[["ProductListInteractionMessageInterface"]]],"construct":{"name":"new ProductListInteractionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nbuttonText",": "],["string",","],["\ncatalogId",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\nproductRetailerId",": "],["string",","],["\nsections",": "],["Array","<{"],["\nproduct","_"],["items",": "],["Array","<{ "],["product","_"],["retailer","_"],["id",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string",","],["\nsections",": "],["Array","<{"],["\nproduct","_"],["items",": "],["Array","<{ "],["product","_"],["retailer","_"],["id",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]],"meta":{"line":371,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L371"}},{"name":"interactiveMessageData","readonly":true,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L32"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addFooter","params":[{"name":"footerText","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":402,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L402"}},{"name":"addSection","params":[{"name":"section","optional":false,"type":[[["{"],["\nproduct","_"],["items",": "],["Array","<{ "],["product","_"],["retailer","_"],["id",": "],["string","; }>,"],["\ntitle",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":398,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L398"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ninteractive",": { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine"," & "],["undefined"," | { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Interactive\n","} & {"],["\ninteractive",": {"],["\naction",": {"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string",","],["\nsections",": "],["Array","<{ "],["title",": "],["string","; "],["product","_"],["items",": { "],["product","_"],["retailer","_"],["id",": "],["string","; }[]; }>"],["\n","},"],["\nbody",": {"],["\ntext",": "],["string\n","},"],["\nfooter",": {"],["\ntext",": "],["string\n","},"],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","} & "],["undefined"," | {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["ProductList\n","}"],["\n","}"]]]],"meta":{"line":406,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L406"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":367,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L367"}},{"name":"QuickReplyButtonInteractionEvent","extends":[[["InteractionEvent"]]],"implements":[[["QuickReplyButtonInteractionEventInterface"]]],"construct":{"name":"new QuickReplyButtonInteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nbuttonPayload",": "],["string",","],["\nbuttonText",": "],["string",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"button","type":[[["{"],["\npayload",": "],["string",","],["\ntext",": "],["string\n","}"]]],"meta":{"line":129,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L129"}},{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L125"}},{"name":"ReactionEvent","extends":[[["MessageEvent"]]],"implements":[[["ReactionEventInterface"]]],"construct":{"name":"new ReactionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nid",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nreaction",": "],["ReactionMessage",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"reaction","type":[[["ReactionMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/reaction/index.ts#L12"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/reaction/index.ts#L11"}},{"name":"ReactionMessage","extends":[[["BaseMessage","<"],["'reaction'",">"]]],"implements":[[["ReactionMessageInterface"]]],"construct":{"name":"new ReactionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nmessageId",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nemoji",": "],["string",","],["\nmessageId",": "],["string\n","}"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/reaction/index.ts#L8"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nreaction",": {"],["\nemoji",": "],["string",","],["\nmessage","_"],["id",": "],["string\n","},"],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Reaction\n","}"]]]],"meta":{"line":25,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/reaction/index.ts#L25"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/reaction/index.ts#L7"}},{"name":"ReplyButtonInteractionEvent","extends":[[["InteractionEvent"]]],"implements":[[["ButtonReplyInteractionMessageEventInterface"]]],"construct":{"name":"new ReplyButtonInteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nbuttonId",": "],["string",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string",","],["\ntitle",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"buttonId","type":[[["string"]]],"meta":{"line":92,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L92"}},{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}},{"name":"title","type":[[["string"]]],"meta":{"line":91,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L91"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":87,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L87"}},{"name":"StatusUpdateEvent","extends":[[["BaseEvent"]]],"implements":[[["StatusUpdateEventInterface"]]],"construct":{"name":"new StatusUpdateEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":136,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L136"}},{"name":"StickerMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumSticker",">"]]],"implements":[[["StickerMessageInterface"]]],"construct":{"name":"new StickerMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]],"meta":{"line":179,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L179"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nsticker",": "],["Object",","],["\nto",": "],["string",","],["\ntype",": "],["Sticker\n","}"]]]],"meta":{"line":198,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L198"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":175,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L175"}},{"name":"StickerMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["StickerMessageEventInterface"]]],"construct":{"name":"new StickerMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\nsticker",": "],["StickerMessage",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"sticker","type":[[["StickerMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/sticker/index.ts#L12"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/sticker/index.ts#L11"}},{"name":"TextMessage","description":"Text message component builder","extends":[[["BaseMessage","<"],["'text'",">"]]],"implements":[[["TextMessageInterface"]]],"construct":{"name":"new TextMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nallowPreview",": "],["true",","],["\ntext",": "],["string\n","}"]]]}]},"props":[{"name":"data","readonly":true,"type":[[["{"],["\nallowPreview",": "],["true",","],["\ntext",": "],["string\n","}"]]],"meta":{"line":14,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/text/index.ts#L14"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for text message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\npreview","_"],["url",": "],["boolean",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\ntext",": {"],["\nbody",": "],["string",","],["\npreview","_"],["url",": "],["boolean\n","},"],["\nto",": "],["string",","],["\ntype",": "],["Text\n","}"]]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/text/index.ts#L31"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/text/index.ts#L13"}},{"name":"TextMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["TextMessageEventInterface"]]],"construct":{"name":"new TextMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntext",": "],["TextMessage",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"text","type":[[["TextMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/text/index.ts#L12"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/text/index.ts#L11"}},{"name":"UnknownEvent","implements":[[["UnknownEventInterface"]]],"construct":{"name":"new UnknownEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\ncode",": "],["string",","],["\nmessage",": "],["string",","],["\ntitle",": "],["string\n","}"]]]}]},"props":[{"name":"code","type":[[["string"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/index.ts#L8"}},{"name":"message","type":[[["string"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/index.ts#L9"}},{"name":"title","type":[[["string"]]],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/index.ts#L10"}}],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/index.ts#L7"}},{"name":"VideoMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumVideo",">"]]],"implements":[[["VideoMessageInterface"]]],"construct":{"name":"new VideoMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]],"meta":{"line":82,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L82"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","}"]]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L99"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":78,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L78"}},{"name":"VideoMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["VideoMessageEventInterface"]]],"construct":{"name":"new VideoMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string",","],["\nvideo",": "],["VideoMessage\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}},{"name":"video","type":[[["VideoMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/video/index.ts#L12"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/video/index.ts#L11"}},{"name":"Webhook","description":"The webhook client for listening to incoming event notifications","extends":[[["EventEmitter"]]],"implements":[[["WebhookInterface"]]],"construct":{"name":"new Webhook","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\nport",": "],["number",","],["\nwebhookEndpoint",": "],["string",","],["\nwebhookSecret",": "],["string\n","}"]]]}]},"props":[{"name":"client","access":"private","type":[[["Client"]]],"meta":{"line":64,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L64"}},{"name":"endpoint","access":"private","type":[[["string"]]],"meta":{"line":59,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L59"}},{"name":"listening","access":"private","default":"false","type":[[["boolean"]]],"meta":{"line":62,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L62"}},{"name":"port","access":"private","default":"3000","type":[[["number"]]],"meta":{"line":60,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L60"}},{"name":"server","access":"private","type":[[["Express"]]],"meta":{"line":61,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L61"}},{"name":"webhookSecret","access":"private","type":[[["string"]]],"meta":{"line":63,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L63"}},{"name":"captureRejectionSymbol","description":"Value: `Symbol.for('nodejs.rejection')`\n\nSee how to write a custom `rejection handler`.","scope":"static","readonly":true,"type":[[["("],["typeof"," "],["captureRejectionSymbol",")"]]],"meta":{"line":402,"file":"events.d.ts"}},{"name":"captureRejections","description":"Value: [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)\n\nChange the default `captureRejections` option on all new `EventEmitter` objects.","scope":"static","type":[[["boolean"]]],"meta":{"line":409,"file":"events.d.ts"}},{"name":"defaultMaxListeners","description":"By default, a maximum of `10` listeners can be registered for any single\nevent. This limit can be changed for individual `EventEmitter` instances\nusing the `emitter.setMaxListeners(n)` method. To change the default\nfor _all_`EventEmitter` instances, the `events.defaultMaxListeners`property can be used. If this value is not a positive number, a `RangeError`is thrown.\n\nTake caution when setting the `events.defaultMaxListeners` because the\nchange affects _all_`EventEmitter` instances, including those created before\nthe change is made. However, calling `emitter.setMaxListeners(n)` still has\nprecedence over `events.defaultMaxListeners`.\n\nThis is not a hard limit. The `EventEmitter` instance will allow\nmore listeners to be added but will output a trace warning to stderr indicating\nthat a \"possible EventEmitter memory leak\" has been detected. For any single`EventEmitter`, the `emitter.getMaxListeners()` and `emitter.setMaxListeners()`methods can be used to\ntemporarily avoid this warning:\n\n```js\nimport { EventEmitter } from 'node:events';\nconst emitter = new EventEmitter();\nemitter.setMaxListeners(emitter.getMaxListeners() + 1);\nemitter.once('event', () => {\n // do stuff\n emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));\n});\n```\n\nThe `--trace-warnings` command-line flag can be used to display the\nstack trace for such warnings.\n\nThe emitted warning can be inspected with `process.on('warning')` and will\nhave the additional `emitter`, `type`, and `count` properties, referring to\nthe event emitter instance, the event's name and the number of attached\nlisteners, respectively.\nIts `name` property is set to `'MaxListenersExceededWarning'`.","scope":"static","type":[[["number"]]],"meta":{"line":446,"file":"events.d.ts"}},{"name":"errorMonitor","description":"This symbol shall be used to install a listener for only monitoring `'error'`events. Listeners installed using this symbol are called before the regular`'error'` listeners are called.\n\nInstalling a listener using this symbol does not change the behavior once an`'error'` event is emitted. Therefore, the process will still crash if no\nregular `'error'` listener is installed.","scope":"static","readonly":true,"type":[[["("],["typeof"," "],["errorMonitor",")"]]],"meta":{"line":395,"file":"events.d.ts"}}],"methods":[{"name":"[captureRejectionSymbol]","params":[{"name":"error","optional":false,"type":[[["Error"]]]},{"name":"event","optional":false,"type":[[["string"]]]},{"name":"args","optional":false,"variable":true,"type":[[["Array","<"],["any",">"]]]}],"returns":[[[["void"]]]],"meta":{"line":112,"file":"events.d.ts"}},{"name":"_getRequestHandler","access":"private","params":[{"name":"request","optional":false,"type":[[["Request","<"],["ParamsDictionary",", "],["any",", "],["any",", "],["ParsedQs",", "],["Record","<"],["string",", "],["any",">>"]]]},{"name":"response","optional":false,"type":[[["Response","<"],["any",", "],["Record","<"],["string",", "],["any",">>"]]]}],"returns":[[[["void"]]]],"meta":{"line":96,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L96"}},{"name":"_postRequestHandler","params":[{"name":"request","optional":false,"type":[[["Request","<"],["ParamsDictionary",", "],["any",", "],["any",", "],["ParsedQs",", "],["Record","<"],["string",", "],["any",">>"]]]},{"name":"response","optional":false,"type":[[["Response","<"],["any",", "],["Record","<"],["string",", "],["any",">>"]]]}],"returns":[[[["void"]]]],"meta":{"line":109,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L109"}},{"name":"addListener","description":"Alias for `emitter.on(eventName, listener)`.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":510,"file":"events.d.ts"}},{"name":"emit","description":"Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments\nto each.\n\nReturns `true` if the event had listeners, `false` otherwise.\n\n```js\nimport { EventEmitter } from 'node:events';\nconst myEmitter = new EventEmitter();\n\n// First listener\nmyEmitter.on('event', function firstListener() {\n console.log('Helloooo! first listener');\n});\n// Second listener\nmyEmitter.on('event', function secondListener(arg1, arg2) {\n console.log(`event with parameters ${arg1}, ${arg2} in second listener`);\n});\n// Third listener\nmyEmitter.on('event', function thirdListener(...args) {\n const parameters = args.join(', ');\n console.log(`event with parameters ${parameters} in third listener`);\n});\n\nconsole.log(myEmitter.listeners('event'));\n\nmyEmitter.emit('event', 1, 2, 3, 4, 5);\n\n// Prints:\n// [\n// [Function: firstListener],\n// [Function: secondListener],\n// [Function: thirdListener]\n// ]\n// Helloooo! first listener\n// event with parameters 1, 2 in second listener\n// event with parameters 1, 2, 3, 4, 5 in third listener\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"args","optional":false,"variable":true,"type":[[["Array","<"],["any",">"]]]}],"returns":[[[["boolean"]]]],"meta":{"line":772,"file":"events.d.ts"}},{"name":"eventNames","description":"Returns an array listing the events for which the emitter has registered\nlisteners. The values in the array are strings or `Symbol`s.\n\n```js\nimport { EventEmitter } from 'node:events';\n\nconst myEE = new EventEmitter();\nmyEE.on('foo', () => {});\nmyEE.on('bar', () => {});\n\nconst sym = Symbol('symbol');\nmyEE.on(sym, () => {});\n\nconsole.log(myEE.eventNames());\n// Prints: [ 'foo', 'bar', Symbol(symbol) ]\n```","returns":[[[["Array","<"],["string"," | "],["symbol",">"]]]],"meta":{"line":835,"file":"events.d.ts"}},{"name":"getEndpoint","description":"Getter for the webhook endpoint","returns":[[[["string"]]]],"meta":{"line":645,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L645"}},{"name":"getMaxListeners","description":"Returns the current max listener value for the `EventEmitter` which is either\nset by `emitter.setMaxListeners(n)` or defaults to defaultMaxListeners.","returns":[[[["number"]]]],"meta":{"line":687,"file":"events.d.ts"}},{"name":"getPort","description":"Returns current configured webhook port","returns":[[[["number"]]]],"meta":{"line":661,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L661"}},{"name":"isListening","description":"Returns if webhooks is listening","returns":[[[["boolean"]]]],"meta":{"line":677,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L677"}},{"name":"listen","description":"starts listening on the webhook server","params":[{"name":"cb","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["void"]]]}],"returns":[[[["void"]]]],"meta":{"line":684,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L684"}},{"name":"listenerCount","description":"Returns the number of listeners listening for the event named `eventName`.\nIf `listener` is provided, it will return how many times the listener is found\nin the list of the listeners of the event.","params":[{"name":"eventName","description":"The name of the event being listened for","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The event handler function","optional":true,"type":[[["Function"]]]}],"returns":[[[["number"]]]],"meta":{"line":781,"file":"events.d.ts"}},{"name":"listeners","description":"Returns a copy of the array of listeners for the event named `eventName`.\n\n```js\nserver.on('connection', (stream) => {\n console.log('someone connected!');\n});\nconsole.log(util.inspect(server.listeners('connection')));\n// Prints: [ [Function] ]\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":700,"file":"events.d.ts"}},{"name":"off","description":"Alias for `emitter.removeListener()`.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":660,"file":"events.d.ts"}},{"name":"on","description":"Adds the `listener` function to the end of the listeners array for the\nevent named `eventName`. No checks are made to see if the `listener` has\nalready been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple\ntimes.\n\n```js\nserver.on('connection', (stream) => {\n console.log('someone connected!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.\n\nBy default, event listeners are invoked in the order they are added. The`emitter.prependListener()` method can be used as an alternative to add the\nevent listener to the beginning of the listeners array.\n\n```js\nimport { EventEmitter } from 'node:events';\nconst myEE = new EventEmitter();\nmyEE.on('foo', () => console.log('a'));\nmyEE.prependListener('foo', () => console.log('b'));\nmyEE.emit('foo');\n// Prints:\n// b\n// a\n```","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":542,"file":"events.d.ts"}},{"name":"once","description":"Adds a **one-time**`listener` function for the event named `eventName`. The\nnext time `eventName` is triggered, this listener is removed and then invoked.\n\n```js\nserver.once('connection', (stream) => {\n console.log('Ah, we have our first user!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.\n\nBy default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the\nevent listener to the beginning of the listeners array.\n\n```js\nimport { EventEmitter } from 'node:events';\nconst myEE = new EventEmitter();\nmyEE.once('foo', () => console.log('a'));\nmyEE.prependOnceListener('foo', () => console.log('b'));\nmyEE.emit('foo');\n// Prints:\n// b\n// a\n```","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":572,"file":"events.d.ts"}},{"name":"prependListener","description":"Adds the `listener` function to the _beginning_ of the listeners array for the\nevent named `eventName`. No checks are made to see if the `listener` has\nalready been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple\ntimes.\n\n```js\nserver.prependListener('connection', (stream) => {\n console.log('someone connected!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":799,"file":"events.d.ts"}},{"name":"prependOnceListener","description":"Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this\nlistener is removed, and then invoked.\n\n```js\nserver.prependOnceListener('connection', (stream) => {\n console.log('Ah, we have our first user!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":815,"file":"events.d.ts"}},{"name":"rawListeners","description":"Returns a copy of the array of listeners for the event named `eventName`,\nincluding any wrappers (such as those created by `.once()`).\n\n```js\nimport { EventEmitter } from 'node:events';\nconst emitter = new EventEmitter();\nemitter.once('log', () => console.log('log once'));\n\n// Returns a new Array with a function `onceWrapper` which has a property\n// `listener` which contains the original listener bound above\nconst listeners = emitter.rawListeners('log');\nconst logFnWrapper = listeners[0];\n\n// Logs \"log once\" to the console and does not unbind the `once` event\nlogFnWrapper.listener();\n\n// Logs \"log once\" to the console and removes the listener\nlogFnWrapper();\n\nemitter.on('log', () => console.log('log persistently'));\n// Will return a new Array with a single function bound by `.on()` above\nconst newListeners = emitter.rawListeners('log');\n\n// Logs \"log persistently\" twice\nnewListeners[0]();\nemitter.emit('log');\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":731,"file":"events.d.ts"}},{"name":"removeAllListeners","description":"Removes all listeners, or those of the specified `eventName`.\n\nIt is bad practice to remove listeners added elsewhere in the code,\nparticularly when the `EventEmitter` instance was created by some other\ncomponent or module (e.g. sockets or file streams).\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"event","optional":true,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":671,"file":"events.d.ts"}},{"name":"removeListener","description":"Removes the specified `listener` from the listener array for the event named`eventName`.\n\n```js\nconst callback = (stream) => {\n console.log('someone connected!');\n};\nserver.on('connection', callback);\n// ...\nserver.removeListener('connection', callback);\n```\n\n`removeListener()` will remove, at most, one instance of a listener from the\nlistener array. If any single listener has been added multiple times to the\nlistener array for the specified `eventName`, then `removeListener()` must be\ncalled multiple times to remove each instance.\n\nOnce an event is emitted, all listeners attached to it at the\ntime of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution\nwill not remove them from`emit()` in progress. Subsequent events behave as expected.\n\n```js\nimport { EventEmitter } from 'node:events';\nclass MyEmitter extends EventEmitter {}\nconst myEmitter = new MyEmitter();\n\nconst callbackA = () => {\n console.log('A');\n myEmitter.removeListener('event', callbackB);\n};\n\nconst callbackB = () => {\n console.log('B');\n};\n\nmyEmitter.on('event', callbackA);\n\nmyEmitter.on('event', callbackB);\n\n// callbackA removes listener callbackB but it will still be called.\n// Internal listener array at time of emit [callbackA, callbackB]\nmyEmitter.emit('event');\n// Prints:\n// A\n// B\n\n// callbackB is now removed.\n// Internal listener array [callbackA]\nmyEmitter.emit('event');\n// Prints:\n// A\n```\n\nBecause listeners are managed using an internal array, calling this will\nchange the position indices of any listener registered _after_ the listener\nbeing removed. This will not impact the order in which listeners are called,\nbut it means that any copies of the listener array as returned by\nthe `emitter.listeners()` method will need to be recreated.\n\nWhen a single function has been added as a handler multiple times for a single\nevent (as in the example below), `removeListener()` will remove the most\nrecently added instance. In the example the `once('ping')`listener is removed:\n\n```js\nimport { EventEmitter } from 'node:events';\nconst ee = new EventEmitter();\n\nfunction pong() {\n console.log('pong');\n}\n\nee.on('ping', pong);\nee.once('ping', pong);\nee.removeListener('ping', pong);\n\nee.emit('ping');\nee.emit('ping');\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":655,"file":"events.d.ts"}},{"name":"setEndpoint","description":"Set new webhook endpoint (this will replace the previously set webhook endpoint)","params":[{"name":"path","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":653,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L653"}},{"name":"setMaxListeners","description":"By default `EventEmitter`s will print a warning if more than `10` listeners are\nadded for a particular event. This is a useful default that helps finding\nmemory leaks. The `emitter.setMaxListeners()` method allows the limit to be\nmodified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners.\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"n","optional":false,"type":[[["number"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":681,"file":"events.d.ts"}},{"name":"setPort","description":"Set new webhook port (this will replace the previously set webhook port)","params":[{"name":"port","optional":false,"type":[[["number"]]]}],"returns":[[[["void"]]]],"meta":{"line":669,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L669"}},{"name":"addAbortListener","description":"Listens once to the `abort` event on the provided `signal`.\n\nListening to the `abort` event on abort signals is unsafe and may\nlead to resource leaks since another third party with the signal can\ncall `e.stopImmediatePropagation()`. Unfortunately Node.js cannot change\nthis since it would violate the web standard. Additionally, the original\nAPI makes it easy to forget to remove listeners.\n\nThis API allows safely using `AbortSignal`s in Node.js APIs by solving these\ntwo issues by listening to the event such that `stopImmediatePropagation` does\nnot prevent the listener from running.\n\nReturns a disposable so that it may be unsubscribed from more easily.\n\n```js\nimport { addAbortListener } from 'node:events';\n\nfunction example(signal) {\n let disposable;\n try {\n signal.addEventListener('abort', (e) => e.stopImmediatePropagation());\n disposable = addAbortListener(signal, (e) => {\n // Do something when signal is aborted.\n });\n } finally {\n disposable?.[Symbol.dispose]();\n }\n}\n```","scope":"static","params":[{"name":"signal","optional":false,"type":[[["AbortSignal"]]]},{"name":"resource","optional":false,"type":[[["("],["event",": "],["Event",") => "],["void"]]]}],"returns":[{"types":[[["Disposable"]]],"description":"Disposable that removes the `abort` listener."}],"returnsDescription":"Disposable that removes the `abort` listener.","meta":{"line":387,"file":"events.d.ts"}},{"name":"getEventListeners","description":"Returns a copy of the array of listeners for the event named `eventName`.\n\nFor `EventEmitter`s this behaves exactly the same as calling `.listeners` on\nthe emitter.\n\nFor `EventTarget`s this is the only way to get the event listeners for the\nevent target. This is useful for debugging and diagnostic purposes.\n\n```js\nimport { getEventListeners, EventEmitter } from 'node:events';\n\n{\n const ee = new EventEmitter();\n const listener = () => console.log('Events are fun');\n ee.on('foo', listener);\n console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]\n}\n{\n const et = new EventTarget();\n const listener = () => console.log('Events are fun');\n et.addEventListener('foo', listener);\n console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]\n}\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"," | _"],["DOMEventTarget"]]]},{"name":"name","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":308,"file":"events.d.ts"}},{"name":"getMaxListeners","description":"Returns the currently set max amount of listeners.\n\nFor `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on\nthe emitter.\n\nFor `EventTarget`s this is the only way to get the max event listeners for the\nevent target. If the number of event handlers on a single EventTarget exceeds\nthe max set, the EventTarget will print a warning.\n\n```js\nimport { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';\n\n{\n const ee = new EventEmitter();\n console.log(getMaxListeners(ee)); // 10\n setMaxListeners(11, ee);\n console.log(getMaxListeners(ee)); // 11\n}\n{\n const et = new EventTarget();\n console.log(getMaxListeners(et)); // 10\n setMaxListeners(11, et);\n console.log(getMaxListeners(et)); // 11\n}\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"," | _"],["DOMEventTarget"]]]}],"returns":[[[["number"]]]],"meta":{"line":337,"file":"events.d.ts"}},{"name":"listenerCount","description":"A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`.\n\n```js\nimport { EventEmitter, listenerCount } from 'node:events';\n\nconst myEmitter = new EventEmitter();\nmyEmitter.on('event', () => {});\nmyEmitter.on('event', () => {});\nconsole.log(listenerCount(myEmitter, 'event'));\n// Prints: 2\n```","scope":"static","deprecated":"Since v3.2.0 - Use `listenerCount` instead.","params":[{"name":"emitter","description":"The emitter to query","optional":false,"type":[[["EventEmitter"]]]},{"name":"eventName","description":"The event name","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["number"]]]],"meta":{"line":280,"file":"events.d.ts"}},{"name":"on","description":"```js\nimport { on, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ee = new EventEmitter();\n\n// Emit later on\nprocess.nextTick(() => {\n ee.emit('foo', 'bar');\n ee.emit('foo', 42);\n});\n\nfor await (const event of on(ee, 'foo')) {\n // The execution of this inner block is synchronous and it\n // processes one event at a time (even with await). Do not use\n // if concurrent execution is required.\n console.log(event); // prints ['bar'] [42]\n}\n// Unreachable here\n```\n\nReturns an `AsyncIterator` that iterates `eventName` events. It will throw\nif the `EventEmitter` emits `'error'`. It removes all listeners when\nexiting the loop. The `value` returned by each iteration is an array\ncomposed of the emitted event arguments.\n\nAn `AbortSignal` can be used to cancel waiting on events:\n\n```js\nimport { on, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ac = new AbortController();\n\n(async () => {\n const ee = new EventEmitter();\n\n // Emit later on\n process.nextTick(() => {\n ee.emit('foo', 'bar');\n ee.emit('foo', 42);\n });\n\n for await (const event of on(ee, 'foo', { signal: ac.signal })) {\n // The execution of this inner block is synchronous and it\n // processes one event at a time (even with await). Do not use\n // if concurrent execution is required.\n console.log(event); // prints ['bar'] [42]\n }\n // Unreachable here\n})();\n\nprocess.nextTick(() => ac.abort());\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"]]]},{"name":"eventName","description":"The name of the event being listened for","optional":false,"type":[[["string"]]]},{"name":"options","optional":true,"type":[[["StaticEventEmitterOptions"]]]}],"returns":[{"types":[[["AsyncIterableIterator","<"],["any",">"]]],"description":"that iterates `eventName` events emitted by the `emitter`"}],"returnsDescription":"that iterates `eventName` events emitted by the `emitter`","meta":{"line":258,"file":"events.d.ts"}},{"name":"once","description":"Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given\nevent or that is rejected if the `EventEmitter` emits `'error'` while waiting.\nThe `Promise` will resolve with an array of all the arguments emitted to the\ngiven event.\n\nThis method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event\nsemantics and does not listen to the `'error'` event.\n\n```js\nimport { once, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ee = new EventEmitter();\n\nprocess.nextTick(() => {\n ee.emit('myevent', 42);\n});\n\nconst [value] = await once(ee, 'myevent');\nconsole.log(value);\n\nconst err = new Error('kaboom');\nprocess.nextTick(() => {\n ee.emit('error', err);\n});\n\ntry {\n await once(ee, 'myevent');\n} catch (err) {\n console.error('error happened', err);\n}\n```\n\nThe special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the\n'`error'` event itself, then it is treated as any other kind of event without\nspecial handling:\n\n```js\nimport { EventEmitter, once } from 'node:events';\n\nconst ee = new EventEmitter();\n\nonce(ee, 'error')\n .then(([err]) => console.log('ok', err.message))\n .catch((err) => console.error('error', err.message));\n\nee.emit('error', new Error('boom'));\n\n// Prints: ok boom\n```\n\nAn `AbortSignal` can be used to cancel waiting for the event:\n\n```js\nimport { EventEmitter, once } from 'node:events';\n\nconst ee = new EventEmitter();\nconst ac = new AbortController();\n\nasync function foo(emitter, event, signal) {\n try {\n await once(emitter, event, { signal });\n console.log('event emitted!');\n } catch (error) {\n if (error.name === 'AbortError') {\n console.error('Waiting for the event was canceled!');\n } else {\n console.error('There was an error', error.message);\n }\n }\n}\n\nfoo(ee, 'foo', ac.signal);\nac.abort(); // Abort waiting for the event\nee.emit('foo'); // Prints: Waiting for the event was canceled!\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["_"],["NodeEventTarget"]]]},{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"options","optional":true,"type":[[["StaticEventEmitterOptions"]]]}],"returns":[[[["Promise","<"],["Array","<"],["any",">>"]]]],"meta":{"line":193,"file":"events.d.ts"}},{"name":"setMaxListeners","description":"```js\nimport { setMaxListeners, EventEmitter } from 'node:events';\n\nconst target = new EventTarget();\nconst emitter = new EventEmitter();\n\nsetMaxListeners(5, target, emitter);\n```","scope":"static","params":[{"name":"n","description":"A non-negative number. The maximum number of listeners per `EventTarget` event.","optional":true,"type":[[["number"]]]},{"name":"eventTargets","optional":false,"variable":true,"type":[[["Array","<"],["EventEmitter"," | _"],["DOMEventTarget",">"]]]}],"returns":[[[["void"]]]],"meta":{"line":352,"file":"events.d.ts"}}],"meta":{"line":58,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L58"}}],"functions":[],"interfaces":[],"typedefs":[{"name":"AdInteractionSourceMediaTypeEnum","meta":{"line":46,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L46"},"props":[{"name":"Image","type":[[["image"]]]},{"name":"Video","type":[[["video"]]]}]},{"name":"AdInteractionSourceTypeEnum","meta":{"line":41,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L41"},"props":[{"name":"Ad","type":[[["ad"]]]},{"name":"Post","type":[[["post"]]]}]},{"name":"InteractiveMessageTypeEnum","meta":{"line":67,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L67"},"props":[{"name":"Button","type":[[["button"]]]},{"name":"Catalog","type":[[["catalog_message"]]]},{"name":"Flow","type":[[["flow"]]]},{"name":"List","type":[[["list"]]]},{"name":"Product","type":[[["product"]]]},{"name":"ProductList","type":[[["product_list"]]]}]},{"name":"MediaTypeEnum","meta":{"line":1,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L1"},"props":[{"name":"Audio","type":[[["audio"]]]},{"name":"Document","type":[[["document"]]]},{"name":"Image","type":[[["image"]]]},{"name":"Sticker","type":[[["sticker"]]]},{"name":"Video","type":[[["video"]]]}]},{"name":"AdInteractionEventInterface","meta":{"line":55,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L55"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"source","optional":false,"type":[[["{"],["\nctwaClid",": "],["string",","],["\ndescription",": "],["string",","],["\nid",": "],["string",","],["\nmediaType",": "],["AdInteractionSourceMediaTypeEnum",","],["\nmediaUrl",": "],["string",","],["\nthumbnailUrl",": "],["string",","],["\ntitle",": "],["string",","],["\ntype",": "],["AdInteractionSourceTypeEnum",","],["\nurl",": "],["string\n","}"]]]},{"name":"text","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"AudioMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/audio/interface.ts#L8"},"props":[{"name":"audio","optional":false,"type":[[["AudioMessage"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"AudioMessageInterface","meta":{"line":32,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L32"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"BaseEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]}]},{"name":"BaseManagerInterface","description":"Base manager interface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/base/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]}]},{"name":"ButtonInteractionMessageInterface","meta":{"line":24,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L24"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nbuttons",": "],["Array","<{"],["\nid",": "],["string",","],["\ntitle",": "],["string\n","}>"],["\n","}"]]]},{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"ButtonReplyInteractionMessageEventInterface","meta":{"line":23,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L23"},"props":[{"name":"buttonId","optional":false,"type":[[["string"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]},{"name":"title","optional":false,"type":[[["string"]]]}]},{"name":"ContactMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/contacts/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"contact","optional":false,"type":[[["ContactMessage"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"CustomerIdentityChangeEventInterface","meta":{"line":6,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/interface.ts#L6"},"props":[{"name":"acknowledged","optional":false,"type":[[["string"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"creationTimestamp","optional":false,"type":[[["string"]]]},{"name":"hash","optional":false,"type":[[["string"]]]}]},{"name":"CustomerNumberChangeEventInterface","meta":{"line":6,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/interface.ts#L6"},"props":[{"name":"changeDescription","optional":false,"type":[[["string"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"newWaId","optional":false,"type":[[["string"]]]},{"name":"oldWaId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"DocumentMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/document/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"document","optional":false,"type":[[["DocumentMessage"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"DocumentMessageInterface","meta":{"line":48,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L48"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nlink",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"ImageMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/image/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"image","optional":false,"type":[[["ImageMessage"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"ImageMessageInterface","meta":{"line":40,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L40"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"InteractionMessageEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"InteractiveMessageInterface","meta":{"line":12,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L12"},"props":[{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"ListInteractionMessageEventInterface","meta":{"line":13,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L13"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"description","optional":false,"type":[[["string"]]]},{"name":"listId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]},{"name":"title","optional":false,"type":[[["string"]]]}]},{"name":"ListInteractionMessageInterface","meta":{"line":34,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L34"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nbuttonText",": "],["string",","],["\nsections",": "],["Array","<{"],["\nrows",": "],["Array","<{ "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]]},{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"LocationMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/location/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"location","optional":false,"type":[[["LocationMessage"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"LocationMessageInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/location/interface.ts#L3"},"props":[{"name":"data","optional":false,"type":[[["{"],["\naddress",": "],["string",","],["\nlatitude",": "],["number",","],["\nlongitude",": "],["number",","],["\nname",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"MediaManagerInterface","description":"Media manager interface","meta":{"line":10,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/interface.ts#L10"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"delete","optional":false,"type":[[["("],["mediaId",": "],["string",") => "],["Promise","<"],["boolean",">"]]]},{"name":"getUrl","optional":false,"type":[[["("],["mediaId",": "],["string",") => "],["Promise","<{"],["\nfile","_"],["size",": "],["number",","],["\nid",": "],["string",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nmime","_"],["type",": "],["string",","],["\nsha256",": "],["string",","],["\nurl",": "],["string\n","}>"]]]},{"name":"upload","optional":false,"type":[[["("],["params",": {"],["\nfilePath",": "],["string",","],["\nmediaType",": "],["string\n","}) => "],["Promise","<"],["string",">"]]]}]},{"name":"MediaMessageEventInterface","meta":{"line":17,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L17"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MediaMessageInterface","meta":{"line":24,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L24"},"props":[{"name":"caption","optional":true,"type":[[["string"]]]},{"name":"fileName","optional":true,"type":[[["string"]]]},{"name":"id","optional":true,"type":[[["string"]]]},{"name":"link","optional":true,"type":[[["string"]]]},{"name":"type","optional":false,"type":[[["MediaTypeEnum"]]]}]},{"name":"MessageDeliveryEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-delivered/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageEventInterface","meta":{"line":11,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L11"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageFailedEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-failed/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"failReason","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageManagerInterface","description":"Message manager interface\\","meta":{"line":10,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/interface.ts#L10"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"reply","optional":false,"type":[[["("],["props",": {"],["\nmessage",": "],["T",","],["\nphoneNumber",": "],["string",","],["\nreplyToMessageId",": "],["string\n","}) => "],["Promise","<"],["string",">"]]]},{"name":"send","optional":false,"type":[[["("],["props",": {"],["\nmessage",": "],["T",","],["\nphoneNumber",": "],["string\n","}) => "],["Promise","<"],["string",">"]]]}]},{"name":"MessageReadEventInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-read/interface.ts#L3"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageSentEventInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-sent/interface.ts#L3"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageUndeliveredEventInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-undelivered/interface.ts#L3"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"OrderMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/order/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"order","optional":false,"type":[[["Order"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"PhoneNumberManagerInterface","description":"Base manager interface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/phone/interface.ts#L3"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"sendVerificationCode","optional":false,"type":[[["("],["phoneNumber",": "],["string",") => "],["Promise","<"],["boolean",">"]]]},{"name":"verifyCode","optional":false,"type":[[["("],["code",": "],["string",") => "],["Promise","<"],["boolean",">"]]]}]},{"name":"ProductInquiryEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/interface.ts#L7"},"props":[{"name":"catalogId","optional":false,"type":[[["string"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"productId","optional":false,"type":[[["string"]]]},{"name":"text","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"ProductInteractionMessageInterface","meta":{"line":45,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L45"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string\n","}"]]]},{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"ProductListInteractionMessageInterface","meta":{"line":56,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L56"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string",","],["\nsections",": "],["Array","<{"],["\nproduct","_"],["items",": "],["Array","<{ "],["product","_"],["retailer","_"],["id",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]]},{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"QuickReplyButtonInteractionEventInterface","meta":{"line":33,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L33"},"props":[{"name":"button","optional":false,"type":[[["{"],["\npayload",": "],["string",","],["\ntext",": "],["string\n","}"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"ReactionEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/reaction/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"reaction","optional":false,"type":[[["ReactionMessage"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"ReactionMessageInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/reaction/interface.ts#L3"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nmessageId",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"StatusUpdateEventInterface","meta":{"line":24,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L24"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"StickerMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/sticker/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"sticker","optional":false,"type":[[["StickerMessage"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"StickerMessageInterface","meta":{"line":44,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L44"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"TextMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/text/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"text","optional":false,"type":[[["TextMessage"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"TextMessageInterface","meta":{"line":5,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/text/interface.ts#L5"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ntext",": "],["null"," | "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"toJson","optional":false,"type":[[["("],["params",": {"],["\nto",": "],["string\n","}) => {"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\npreview","_"],["url",": "],["boolean",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\ntext",": {"],["\nbody",": "],["string",","],["\npreview","_"],["url",": "],["boolean\n","},"],["\nto",": "],["string",","],["\ntype",": "],["Text\n","}"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"UnknownEventInterface","meta":{"line":4,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/interface.ts#L4"},"props":[{"name":"code","optional":false,"type":[[["string"]]]},{"name":"message","optional":false,"type":[[["string"]]]},{"name":"title","optional":false,"type":[[["string"]]]}]},{"name":"VideoMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/video/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]},{"name":"video","optional":false,"type":[[["VideoMessage"]]]}]},{"name":"VideoMessageInterface","meta":{"line":36,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L36"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"MessageContext","type":[[["{"],["\nfrom",": "],["string\n","}"]]],"meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L3"},"props":[{"name":"from","optional":false,"type":[[["string"]]]}]}],"externals":[],"custom":{"general":{"name":"General","files":{"welcome":{"name":"Welcome","type":"md","content":"## [View the documentation here.](https://discord.js.org/docs/packages/discord.js/main)\n","path":"README.md"}}}}} \ No newline at end of file diff --git a/packages/wapi.js/package.json b/packages/wapi.js/package.json index 79bcbb0..8065875 100644 --- a/packages/wapi.js/package.json +++ b/packages/wapi.js/package.json @@ -22,7 +22,7 @@ "lint": "pnpm eslint . --max-warnings=20", "pretty": "pnpm prettier --write \"src/**/*.ts\"", "clean-install": "rm -rf ./node_modules && pnpm install --frozen-lockfile", - "doc:gen": "docgen -i './src/*.ts' './src/**/*.ts' -c ./docs/index.json -r ./ -o ./docs/docs.json --typescript" + "doc:gen": "docgen -i '*.ts' -c ./docs/index.json -r ./ -o ./docs/docs.json --typescript" }, "keywords": [], "author": { From d99b4d3f5a674a410f62c807929a40c884b7dc94 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:39:14 +0530 Subject: [PATCH 21/52] feat: wip Signed-off-by: sarthakjdev --- .github/workflows/documentation-build.yaml | 88 +++++++++++++++++++++ .github/workflows/format-tag.ts | 18 +++++ .github/workflows/website-preview.yaml | 89 ++++++++++++++++++++++ .github/workflows/website-prod.yaml | 52 +++++++++++++ 4 files changed, 247 insertions(+) create mode 100644 .github/workflows/documentation-build.yaml create mode 100644 .github/workflows/format-tag.ts create mode 100644 .github/workflows/website-preview.yaml create mode 100644 .github/workflows/website-prod.yaml diff --git a/.github/workflows/documentation-build.yaml b/.github/workflows/documentation-build.yaml new file mode 100644 index 0000000..b4496fe --- /dev/null +++ b/.github/workflows/documentation-build.yaml @@ -0,0 +1,88 @@ +name: Documentation +on: + push: + branches: + - "master" + - "feat/documentation" + paths: + - "packages/wapi.js/src/**" + tags: + - "**" + workflow_dispatch: + inputs: + ref: + description: "The branch, tag or SHA to checkout" + required: true + ref_type: + type: choice + description: "Branch or tag" + options: + - branch + - tag + required: true +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + build: + name: Build & upload documentation + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: User Node.js LTS + uses: actions/setup-node@v2 + + - name: Install pnpm + uses: pnpm/action-setup@v2.2.4 + with: + run_install: false + + - name: Install Dependencies + run: pnpm install --frozen-lockfile + + - name: Build + run: pnpm run build + + - name: Generate docs + run: pnpm run doc:gen + + - name: Checkout docs repository + uses: actions/checkout@v3 + with: + repository: "sarthakjdev/wapijs-docs-json" + token: ${{ secrets.WAPIJS_DOCS_ACCESS_TOKEN }} + path: "out" + + - name: Extract package and semver from tag + if: ${{ github.ref_type == 'tag' }} + id: extract-tag + uses: ./format-tag + with: + tag: ${{ github.ref_name }} + + - name: Move docs to correct directory + if: ${{ github.ref_type == 'tag' }} + env: + PACKAGE: ${{ steps.extract-tag.outputs.package }} + SEMVER: ${{ steps.extract-tag.outputs.semver }} + run: | + mkdir -p "out/wapi.js" + mv "packages/wapi.js/docs/docs.json" "out/wapi.js/${SEMVER}.json" + + - name: Move docs to correct directory + if: ${{ github.ref_type == 'branch' }} + run: | + mkdir -p "out/wapi.js" + mv "packages/wapi.js/docs/docs.json" "out/wapi.js/${GITHUB_REF_NAME}.json" + + - name: Commit and push + run: | + cd out + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + git add . + git commit -m "Docs build for ${GITHUB_REF_TYPE} ${GITHUB_REF_NAME}: ${GITHUB_SHA}" || true + git push diff --git a/.github/workflows/format-tag.ts b/.github/workflows/format-tag.ts new file mode 100644 index 0000000..cb4ae52 --- /dev/null +++ b/.github/workflows/format-tag.ts @@ -0,0 +1,18 @@ +export function formatTag(tag: string) { + const parsed = /(?:^@.*\/(?.*)@v?)?(?\d+.\d+.\d+)-?.*/.exec(tag); + const parsedPackage = /(?.*)@v?-?.*/.exec(tag); + + if (parsed?.groups) { + const isSubpackage = typeof parsed.groups.package === 'string'; + const pkg = isSubpackage ? parsed.groups.package : parsedPackage?.groups?.package ?? 'discord.js'; + const semver = parsed.groups.semver; + + return { + isSubpackage, + package: pkg, + semver, + }; + } + + return null; +} diff --git a/.github/workflows/website-preview.yaml b/.github/workflows/website-preview.yaml new file mode 100644 index 0000000..b210c17 --- /dev/null +++ b/.github/workflows/website-preview.yaml @@ -0,0 +1,89 @@ +name: Preview Deploy Documentation + +on: + workflow_dispatch: {} + push: + branches-ignore: + - "master" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + docs: + environment: Preview + timeout-minutes: 15 + runs-on: ubuntu-latest + env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: User Node.js LTS + uses: actions/setup-node@v2 + + - name: Install pnpm + uses: pnpm/action-setup@v2.2.4 + + - name: Install Vercel CLI + run: pnpm -g add vercel@canary + + - name: Install Dependencies + run: pnpm install --frozen-lockfile + working-directory: apps/wapijs.co + + - name: Trigger Staging Deployment + run: vercel deploy -y --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt + + - name: Deployment Success + if: ${{ success() }} + uses: actions/github-script@v6 + with: + script: | + const fs = require("fs") + const path = require("path") + const { data: pullRequestData } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ + owner: context.repo.owner, + repo: context.repo.repo, + commit_sha: context.payload.after + }) + + const deploymentUrl = fs.readFileSync(path.resolve(path.resolve(), './deployment-url.txt'), 'utf8') + + if(pullRequestData[0]){ + await github.rest.issues.createComment({ + issue_number: pullRequestData[0].number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `#### 🟢 Deployment success: + Deployed Url: ${deploymentUrl}` + }) + } else { + throw new Error('Pull request data not found') + } + + - name: Deployment Failure + if: ${{ failure() }} + uses: actions/github-script@v5 + with: + script: | + const { data: pullRequestData } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ + owner: context.repo.owner, + repo: context.repo.repo, + commit_sha: context.payload.after + }) + + if(pullRequestData[0]){ + await github.rest.issues.createComment({ + issue_number: pullRequestData[0].number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `#### ❌ Deployment failed: + ` + }) + } else { + throw new Error('Pull request data not found') + } diff --git a/.github/workflows/website-prod.yaml b/.github/workflows/website-prod.yaml new file mode 100644 index 0000000..987f0eb --- /dev/null +++ b/.github/workflows/website-prod.yaml @@ -0,0 +1,52 @@ +name: Deploy Documentation + +on: + workflow_dispatch: {} + push: + branches: + - "master" + paths: ["apps/wapijs.co/**"] + +jobs: + docs: + environment: Production + timeout-minutes: 15 + runs-on: ubuntu-latest + env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: User Node.js LTS + uses: actions/setup-node@v2 + + - name: Install pnpm + uses: pnpm/action-setup@v2.2.4 + + - name: Install Vercel CLI + run: pnpm -g add vercel@canary + + - name: Install Dependencies + run: pnpm install --frozen-lockfile + working-directory: apps/wapijs.co + + - name: Build + run: pnpm run build + working-directory: apps/wapijs.co + + - name: Trigger Production Deployment + run: vercel deploy -y --prod --token=${{ secrets.VERCEL_TOKEN }} > deployment-url.txt + + - name: Deployment Failure Alert + if: ${{ failure() }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_CHANNEL: general + SLACK_COLOR: ${{ job.status }} + SLACK_ICON: https://github.com/rtCamp.png?size=48 + SLACK_MESSAGE: "production deployment failed, check [HERE](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" + SLACK_TITLE: "🚨🚨🚨 [WAPIJS.CO] MASTER BRANCH DEPLOYMENT FAILED 🚨🚨🚨" + SLACK_USERNAME: sarthakjdev + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} From 8df1f2593479bb22c8fd76844cdb08b4b6e32aa1 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:40:48 +0530 Subject: [PATCH 22/52] feat: wip Signed-off-by: sarthakjdev --- .github/workflows/documentation-build.yaml | 2 +- packages/wapi.js/.eslintignore | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/documentation-build.yaml b/.github/workflows/documentation-build.yaml index b4496fe..df0106c 100644 --- a/.github/workflows/documentation-build.yaml +++ b/.github/workflows/documentation-build.yaml @@ -5,7 +5,7 @@ on: - "master" - "feat/documentation" paths: - - "packages/wapi.js/src/**" + - "packages/wapi.js/**" tags: - "**" workflow_dispatch: diff --git a/packages/wapi.js/.eslintignore b/packages/wapi.js/.eslintignore index 1521c8b..16c5327 100644 --- a/packages/wapi.js/.eslintignore +++ b/packages/wapi.js/.eslintignore @@ -1 +1,2 @@ dist + From 9ede57b6174eb566e5285aef2ff61fbd7b03fb65 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:42:31 +0530 Subject: [PATCH 23/52] feat: wip Signed-off-by: sarthakjdev --- turbo.json | 102 ++++++++++++++++++++++------------------------------- 1 file changed, 43 insertions(+), 59 deletions(-) diff --git a/turbo.json b/turbo.json index 4deaf7d..642af7a 100644 --- a/turbo.json +++ b/turbo.json @@ -1,61 +1,45 @@ { - "$schema": "https://turbo.build/schema.json", - "pipeline": { - "clean": {}, - "build:esm": { - "cache": false, - "dependsOn": [ - "^build" - ], - "outputs": [ - "./dist/**/*" - ] - }, - "build:cjs": { - "cache": false, - "dependsOn": [ - "^build" - ], - "outputs": [ - "./dist/**/*" - ] - }, - "build": { - "cache": false, - "dependsOn": [ - "^build" - ], - "outputs": [ - "./dist/**/*" - ] - }, - "test": { - "dependsOn": [ - "build" - ], - "inputs": [ - "src/**/*.tsx", - "src/**/*.ts", - "test/**/*.ts", - "test/**/*.tsx" - ] - }, - "pretty": { - "cache": false, - "outputMode": "errors-only" - }, - "lint": { - "cache": false, - "inputs": [ - "src/**/*.tsx", - "src/**/*.ts", - "test/**/*.ts", - "test/**/*.tsx" - ], - "outputMode": "errors-only" - }, - "watch": { - "cache": false - } + "$schema": "https://turbo.build/schema.json", + "pipeline": { + "clean": {}, + "build:esm": { + "cache": false, + "dependsOn": ["^build"], + "outputs": ["./dist/**/*"] + }, + "build:cjs": { + "cache": false, + "dependsOn": ["^build"], + "outputs": ["./dist/**/*"] + }, + "build": { + "cache": false, + "dependsOn": ["^build"], + "outputs": ["./dist/**/*"] + }, + "test": { + "dependsOn": ["build"], + "inputs": ["src/**/*.tsx", "src/**/*.ts", "test/**/*.ts", "test/**/*.tsx"] + }, + "pretty": { + "cache": false, + "outputMode": "errors-only" + }, + "lint": { + "cache": false, + "inputs": [ + "src/**/*.tsx", + "src/**/*.ts", + "test/**/*.ts", + "test/**/*.tsx" + ], + "outputMode": "errors-only" + }, + "watch": { + "cache": false + }, + "doc:gen": { + "cache": false } -} \ No newline at end of file + } +} From f5c6ce60ab4e17ddb782deb2757a36cc9b0edacb Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:43:24 +0530 Subject: [PATCH 24/52] feat: wip Signed-off-by: sarthakjdev --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 5a5fbf7..c2f98e8 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "lint": "turbo run lint --concurrency=3", "prepare": "husky install", "pretty": "turbo pretty --concurrency=3", - "clean-install": "turbo run clean-install" + "clean-install": "turbo run clean-install", + "doc:gen": "turbo run doc:gen" }, "keywords": [ "whatsapp-cloud-api", From fe42814e6daceb9121d0986086054f9baadfd06d Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:44:11 +0530 Subject: [PATCH 25/52] feat: wip Signed-off-by: sarthakjdev --- .gitignore | 1 + packages/wapi.js/docs/docs.json | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 packages/wapi.js/docs/docs.json diff --git a/.gitignore b/.gitignore index 6da703a..5a18858 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ coverage .vscode/* cache .next +docs.json diff --git a/packages/wapi.js/docs/docs.json b/packages/wapi.js/docs/docs.json deleted file mode 100644 index 5987c25..0000000 --- a/packages/wapi.js/docs/docs.json +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"generator":"0.12.1","format":30,"date":1714339677425},"classes":[{"name":"AdInteractionEvent","extends":[[["MessageEvent"]]],"implements":[[["AdInteractionEventInterface"]]],"construct":{"name":"new AdInteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nid",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nsource",": {"],["\nctwaClid",": "],["string",","],["\ndescription",": "],["string",","],["\nid",": "],["string",","],["\nmediaType",": "],["AdInteractionSourceMediaTypeEnum",","],["\nmediaUrl",": "],["string",","],["\nthumbnailUrl",": "],["string",","],["\ntitle",": "],["string",","],["\ntype",": "],["AdInteractionSourceTypeEnum",","],["\nurl",": "],["string\n","},"],["\ntext",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"source","type":[[["{"],["\nctwaClid",": "],["string",","],["\ndescription",": "],["string",","],["\nid",": "],["string",","],["\nmediaType",": "],["AdInteractionSourceMediaTypeEnum",","],["\nmediaUrl",": "],["string",","],["\nthumbnailUrl",": "],["string",","],["\ntitle",": "],["string",","],["\ntype",": "],["AdInteractionSourceTypeEnum",","],["\nurl",": "],["string\n","}"]]],"meta":{"line":166,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L166"}},{"name":"text","type":[[["string"]]],"meta":{"line":165,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L165"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":164,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L164"}},{"name":"AudioMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumAudio",">"]]],"implements":[[["AudioMessageInterface"]]],"construct":{"name":"new AudioMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]],"meta":{"line":34,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L34"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\naudio",": "],["Object",","],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Audio\n","}"]]]],"meta":{"line":51,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L51"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L30"}},{"name":"AudioMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["AudioMessageEventInterface"]]],"construct":{"name":"new AudioMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\naudio",": "],["AudioMessage",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"audio","type":[[["AudioMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/audio/index.ts#L12"}},{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/audio/index.ts#L11"}},{"name":"BaseEvent","implements":[[["BaseEventInterface"]]],"construct":{"name":"new BaseEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}}],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L16"}},{"name":"BaseManager","description":"Base Manager for all the other manager","implements":[[["BaseManagerInterface"]]],"construct":{"name":"new BaseManager","params":[{"name":"client","optional":false,"type":[[["Client"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/base/index.ts#L10"}}],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/base/index.ts#L9"}},{"name":"ButtonInteractionMessage","extends":[[["InteractiveMessage"]]],"implements":[[["ButtonInteractionMessageInterface"]]],"construct":{"name":"new ButtonInteractionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nbuttons",": "],["Array","<{"],["\nid",": "],["string",","],["\ntitle",": "],["string\n","}>,"],["\nfooterText",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nbuttons",": "],["Array","<{"],["\nid",": "],["string",","],["\ntitle",": "],["string\n","}>"],["\n","}"]]],"meta":{"line":66,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L66"}},{"name":"interactiveMessageData","readonly":true,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L32"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addFooter","params":[{"name":"footerText","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":91,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L91"}},{"name":"addHeader","returns":[[[["void"]]]],"meta":{"line":89,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L89"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ninteractive",": { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine"," & "],["undefined"," | { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Interactive\n","} & {"],["\ninteractive",": {"],["\naction",": {"],["\nbuttons",": "],["Array","<{ "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }>"],["\n","},"],["\nbody",": {"],["\ntext",": "],["string\n","},"],["\nfooter",": {"],["\ntext",": "],["string\n","},"],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["Button\n","}"],["\n","}"]]]],"meta":{"line":98,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L98"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":62,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L62"}},{"name":"Client","extends":[[["EventEmitter"]]],"implements":[[["ClientInterface"]]],"construct":{"name":"new Client","params":[{"name":"params","optional":false,"type":[[["{"],["\napiAccessToken",": "],["string",","],["\nbusinessAccountId",": "],["string",","],["\nphoneNumberId",": "],["string",","],["\nport",": "],["number",","],["\nwebhookEndpoint",": "],["string",","],["\nwebhookSecret",": "],["string\n","}"]]]}]},"props":[{"name":"media","description":"Media manager to upload, get and media via whatsapp cloud api","type":[[["MediaManager"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L30"}},{"name":"message","description":"Message manager to manage the outgoing messaging operations.","type":[[["MessageManager"]]],"meta":{"line":44,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L44"}},{"name":"phone","description":"Phone number manager to verify phone numbers for your","type":[[["PhoneNumberManager"]]],"meta":{"line":23,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L23"}},{"name":"readyAtTimeStamp","description":"Unix Timestamp at which client gets into ClientStatusEnum.Ready state","readonly":true,"default":"null","type":[[["null"," | "],["number"]]],"meta":{"line":59,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L59"}},{"name":"requester","description":"Requester is an internal utility to communicate with Whatsapp cloud api","type":[[["RequestClient"]]],"meta":{"line":66,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L66"}},{"name":"status","description":"Status of the client","default":"null","type":[[["null"," | "],["ClientStatusEnum"]]],"meta":{"line":51,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L51"}},{"name":"webhook","description":"Webhook manager to handle the incoming message and event listening","type":[[["Webhook"]]],"meta":{"line":37,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L37"}},{"name":"captureRejectionSymbol","description":"Value: `Symbol.for('nodejs.rejection')`\n\nSee how to write a custom `rejection handler`.","scope":"static","readonly":true,"type":[[["("],["typeof"," "],["captureRejectionSymbol",")"]]],"meta":{"line":402,"file":"events.d.ts"}},{"name":"captureRejections","description":"Value: [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)\n\nChange the default `captureRejections` option on all new `EventEmitter` objects.","scope":"static","type":[[["boolean"]]],"meta":{"line":409,"file":"events.d.ts"}},{"name":"defaultMaxListeners","description":"By default, a maximum of `10` listeners can be registered for any single\nevent. This limit can be changed for individual `EventEmitter` instances\nusing the `emitter.setMaxListeners(n)` method. To change the default\nfor _all_`EventEmitter` instances, the `events.defaultMaxListeners`property can be used. If this value is not a positive number, a `RangeError`is thrown.\n\nTake caution when setting the `events.defaultMaxListeners` because the\nchange affects _all_`EventEmitter` instances, including those created before\nthe change is made. However, calling `emitter.setMaxListeners(n)` still has\nprecedence over `events.defaultMaxListeners`.\n\nThis is not a hard limit. The `EventEmitter` instance will allow\nmore listeners to be added but will output a trace warning to stderr indicating\nthat a \"possible EventEmitter memory leak\" has been detected. For any single`EventEmitter`, the `emitter.getMaxListeners()` and `emitter.setMaxListeners()`methods can be used to\ntemporarily avoid this warning:\n\n```js\nimport { EventEmitter } from 'node:events';\nconst emitter = new EventEmitter();\nemitter.setMaxListeners(emitter.getMaxListeners() + 1);\nemitter.once('event', () => {\n // do stuff\n emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));\n});\n```\n\nThe `--trace-warnings` command-line flag can be used to display the\nstack trace for such warnings.\n\nThe emitted warning can be inspected with `process.on('warning')` and will\nhave the additional `emitter`, `type`, and `count` properties, referring to\nthe event emitter instance, the event's name and the number of attached\nlisteners, respectively.\nIts `name` property is set to `'MaxListenersExceededWarning'`.","scope":"static","type":[[["number"]]],"meta":{"line":446,"file":"events.d.ts"}},{"name":"errorMonitor","description":"This symbol shall be used to install a listener for only monitoring `'error'`events. Listeners installed using this symbol are called before the regular`'error'` listeners are called.\n\nInstalling a listener using this symbol does not change the behavior once an`'error'` event is emitted. Therefore, the process will still crash if no\nregular `'error'` listener is installed.","scope":"static","readonly":true,"type":[[["("],["typeof"," "],["errorMonitor",")"]]],"meta":{"line":395,"file":"events.d.ts"}}],"methods":[{"name":"[captureRejectionSymbol]","params":[{"name":"error","optional":false,"type":[[["Error"]]]},{"name":"event","optional":false,"type":[[["string"]]]},{"name":"args","optional":false,"variable":true,"type":[[["Array","<"],["any",">"]]]}],"returns":[[[["void"]]]],"meta":{"line":112,"file":"events.d.ts"}},{"name":"addListener","description":"Alias for `emitter.on(eventName, listener)`.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":510,"file":"events.d.ts"}},{"name":"emit","description":"Function to emit a new event on incoming webhook or wapi events","params":[{"name":"eventName","optional":false,"type":[[["T"]]]},{"name":"data","optional":false,"type":[[["WapiEventDataMap","["],["T","]"]]]}],"returns":[[[["boolean"]]]],"meta":{"line":146,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L146"}},{"name":"eventNames","description":"Returns an array listing the events for which the emitter has registered\nlisteners. The values in the array are strings or `Symbol`s.\n\n```js\nimport { EventEmitter } from 'node:events';\n\nconst myEE = new EventEmitter();\nmyEE.on('foo', () => {});\nmyEE.on('bar', () => {});\n\nconst sym = Symbol('symbol');\nmyEE.on(sym, () => {});\n\nconsole.log(myEE.eventNames());\n// Prints: [ 'foo', 'bar', Symbol(symbol) ]\n```","returns":[[[["Array","<"],["string"," | "],["symbol",">"]]]],"meta":{"line":835,"file":"events.d.ts"}},{"name":"getMaxListeners","description":"Returns the current max listener value for the `EventEmitter` which is either\nset by `emitter.setMaxListeners(n)` or defaults to defaultMaxListeners.","returns":[[[["number"]]]],"meta":{"line":687,"file":"events.d.ts"}},{"name":"initiate","description":"Function to initiate the wapi client and start listening to the incoming webhook events","returns":[[[["void"]]]],"meta":{"line":214,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L214"}},{"name":"listenerCount","description":"Returns the number of listeners listening for the event named `eventName`.\nIf `listener` is provided, it will return how many times the listener is found\nin the list of the listeners of the event.","params":[{"name":"eventName","description":"The name of the event being listened for","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The event handler function","optional":true,"type":[[["Function"]]]}],"returns":[[[["number"]]]],"meta":{"line":781,"file":"events.d.ts"}},{"name":"listeners","description":"Returns a copy of the array of listeners for the event named `eventName`.\n\n```js\nserver.on('connection', (stream) => {\n console.log('someone connected!');\n});\nconsole.log(util.inspect(server.listeners('connection')));\n// Prints: [ [Function] ]\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":700,"file":"events.d.ts"}},{"name":"off","description":"Alias for `emitter.removeListener()`.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":660,"file":"events.d.ts"}},{"name":"on","description":"Function to attach event listener to wapi client","params":[{"name":"eventName","optional":false,"type":[[["T"]]]},{"name":"listener","optional":false,"type":[[["("],["data",": "],["WapiEventDataMap","["],["T","]) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":155,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L155"}},{"name":"once","description":"Adds a **one-time**`listener` function for the event named `eventName`. The\nnext time `eventName` is triggered, this listener is removed and then invoked.\n\n```js\nserver.once('connection', (stream) => {\n console.log('Ah, we have our first user!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.\n\nBy default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the\nevent listener to the beginning of the listeners array.\n\n```js\nimport { EventEmitter } from 'node:events';\nconst myEE = new EventEmitter();\nmyEE.once('foo', () => console.log('a'));\nmyEE.prependOnceListener('foo', () => console.log('b'));\nmyEE.emit('foo');\n// Prints:\n// b\n// a\n```","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":572,"file":"events.d.ts"}},{"name":"prependListener","description":"Adds the `listener` function to the _beginning_ of the listeners array for the\nevent named `eventName`. No checks are made to see if the `listener` has\nalready been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple\ntimes.\n\n```js\nserver.prependListener('connection', (stream) => {\n console.log('someone connected!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":799,"file":"events.d.ts"}},{"name":"prependOnceListener","description":"Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this\nlistener is removed, and then invoked.\n\n```js\nserver.prependOnceListener('connection', (stream) => {\n console.log('Ah, we have our first user!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":815,"file":"events.d.ts"}},{"name":"rawListeners","description":"Returns a copy of the array of listeners for the event named `eventName`,\nincluding any wrappers (such as those created by `.once()`).\n\n```js\nimport { EventEmitter } from 'node:events';\nconst emitter = new EventEmitter();\nemitter.once('log', () => console.log('log once'));\n\n// Returns a new Array with a function `onceWrapper` which has a property\n// `listener` which contains the original listener bound above\nconst listeners = emitter.rawListeners('log');\nconst logFnWrapper = listeners[0];\n\n// Logs \"log once\" to the console and does not unbind the `once` event\nlogFnWrapper.listener();\n\n// Logs \"log once\" to the console and removes the listener\nlogFnWrapper();\n\nemitter.on('log', () => console.log('log persistently'));\n// Will return a new Array with a single function bound by `.on()` above\nconst newListeners = emitter.rawListeners('log');\n\n// Logs \"log persistently\" twice\nnewListeners[0]();\nemitter.emit('log');\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":731,"file":"events.d.ts"}},{"name":"removeAllListeners","description":"Removes all listeners, or those of the specified `eventName`.\n\nIt is bad practice to remove listeners added elsewhere in the code,\nparticularly when the `EventEmitter` instance was created by some other\ncomponent or module (e.g. sockets or file streams).\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"event","optional":true,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Client"]]]],"meta":{"line":671,"file":"events.d.ts"}},{"name":"removeListener","description":"Removes the specified `listener` from the listener array for the event named`eventName`.\n\n```js\nconst callback = (stream) => {\n console.log('someone connected!');\n};\nserver.on('connection', callback);\n// ...\nserver.removeListener('connection', callback);\n```\n\n`removeListener()` will remove, at most, one instance of a listener from the\nlistener array. If any single listener has been added multiple times to the\nlistener array for the specified `eventName`, then `removeListener()` must be\ncalled multiple times to remove each instance.\n\nOnce an event is emitted, all listeners attached to it at the\ntime of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution\nwill not remove them from`emit()` in progress. Subsequent events behave as expected.\n\n```js\nimport { EventEmitter } from 'node:events';\nclass MyEmitter extends EventEmitter {}\nconst myEmitter = new MyEmitter();\n\nconst callbackA = () => {\n console.log('A');\n myEmitter.removeListener('event', callbackB);\n};\n\nconst callbackB = () => {\n console.log('B');\n};\n\nmyEmitter.on('event', callbackA);\n\nmyEmitter.on('event', callbackB);\n\n// callbackA removes listener callbackB but it will still be called.\n// Internal listener array at time of emit [callbackA, callbackB]\nmyEmitter.emit('event');\n// Prints:\n// A\n// B\n\n// callbackB is now removed.\n// Internal listener array [callbackA]\nmyEmitter.emit('event');\n// Prints:\n// A\n```\n\nBecause listeners are managed using an internal array, calling this will\nchange the position indices of any listener registered _after_ the listener\nbeing removed. This will not impact the order in which listeners are called,\nbut it means that any copies of the listener array as returned by\nthe `emitter.listeners()` method will need to be recreated.\n\nWhen a single function has been added as a handler multiple times for a single\nevent (as in the example below), `removeListener()` will remove the most\nrecently added instance. In the example the `once('ping')`listener is removed:\n\n```js\nimport { EventEmitter } from 'node:events';\nconst ee = new EventEmitter();\n\nfunction pong() {\n console.log('pong');\n}\n\nee.on('ping', pong);\nee.once('ping', pong);\nee.removeListener('ping', pong);\n\nee.emit('ping');\nee.emit('ping');\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Client"]]]],"meta":{"line":655,"file":"events.d.ts"}},{"name":"setMaxListeners","description":"By default `EventEmitter`s will print a warning if more than `10` listeners are\nadded for a particular event. This is a useful default that helps finding\nmemory leaks. The `emitter.setMaxListeners()` method allows the limit to be\nmodified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners.\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"n","optional":false,"type":[[["number"]]]}],"returns":[[[["Client"]]]],"meta":{"line":681,"file":"events.d.ts"}},{"name":"addAbortListener","description":"Listens once to the `abort` event on the provided `signal`.\n\nListening to the `abort` event on abort signals is unsafe and may\nlead to resource leaks since another third party with the signal can\ncall `e.stopImmediatePropagation()`. Unfortunately Node.js cannot change\nthis since it would violate the web standard. Additionally, the original\nAPI makes it easy to forget to remove listeners.\n\nThis API allows safely using `AbortSignal`s in Node.js APIs by solving these\ntwo issues by listening to the event such that `stopImmediatePropagation` does\nnot prevent the listener from running.\n\nReturns a disposable so that it may be unsubscribed from more easily.\n\n```js\nimport { addAbortListener } from 'node:events';\n\nfunction example(signal) {\n let disposable;\n try {\n signal.addEventListener('abort', (e) => e.stopImmediatePropagation());\n disposable = addAbortListener(signal, (e) => {\n // Do something when signal is aborted.\n });\n } finally {\n disposable?.[Symbol.dispose]();\n }\n}\n```","scope":"static","params":[{"name":"signal","optional":false,"type":[[["AbortSignal"]]]},{"name":"resource","optional":false,"type":[[["("],["event",": "],["Event",") => "],["void"]]]}],"returns":[{"types":[[["Disposable"]]],"description":"Disposable that removes the `abort` listener."}],"returnsDescription":"Disposable that removes the `abort` listener.","meta":{"line":387,"file":"events.d.ts"}},{"name":"getClient","description":"getter for client","scope":"static","returns":[[[["("],["typeof"," "],["Client",")"]]]],"meta":{"line":135,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L135"}},{"name":"getEventListeners","description":"Returns a copy of the array of listeners for the event named `eventName`.\n\nFor `EventEmitter`s this behaves exactly the same as calling `.listeners` on\nthe emitter.\n\nFor `EventTarget`s this is the only way to get the event listeners for the\nevent target. This is useful for debugging and diagnostic purposes.\n\n```js\nimport { getEventListeners, EventEmitter } from 'node:events';\n\n{\n const ee = new EventEmitter();\n const listener = () => console.log('Events are fun');\n ee.on('foo', listener);\n console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]\n}\n{\n const et = new EventTarget();\n const listener = () => console.log('Events are fun');\n et.addEventListener('foo', listener);\n console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]\n}\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"," | _"],["DOMEventTarget"]]]},{"name":"name","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":308,"file":"events.d.ts"}},{"name":"getMaxListeners","description":"Returns the currently set max amount of listeners.\n\nFor `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on\nthe emitter.\n\nFor `EventTarget`s this is the only way to get the max event listeners for the\nevent target. If the number of event handlers on a single EventTarget exceeds\nthe max set, the EventTarget will print a warning.\n\n```js\nimport { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';\n\n{\n const ee = new EventEmitter();\n console.log(getMaxListeners(ee)); // 10\n setMaxListeners(11, ee);\n console.log(getMaxListeners(ee)); // 11\n}\n{\n const et = new EventTarget();\n console.log(getMaxListeners(et)); // 10\n setMaxListeners(11, et);\n console.log(getMaxListeners(et)); // 11\n}\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"," | _"],["DOMEventTarget"]]]}],"returns":[[[["number"]]]],"meta":{"line":337,"file":"events.d.ts"}},{"name":"listenerCount","description":"A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`.\n\n```js\nimport { EventEmitter, listenerCount } from 'node:events';\n\nconst myEmitter = new EventEmitter();\nmyEmitter.on('event', () => {});\nmyEmitter.on('event', () => {});\nconsole.log(listenerCount(myEmitter, 'event'));\n// Prints: 2\n```","scope":"static","deprecated":"Since v3.2.0 - Use `listenerCount` instead.","params":[{"name":"emitter","description":"The emitter to query","optional":false,"type":[[["EventEmitter"]]]},{"name":"eventName","description":"The event name","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["number"]]]],"meta":{"line":280,"file":"events.d.ts"}},{"name":"on","description":"```js\nimport { on, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ee = new EventEmitter();\n\n// Emit later on\nprocess.nextTick(() => {\n ee.emit('foo', 'bar');\n ee.emit('foo', 42);\n});\n\nfor await (const event of on(ee, 'foo')) {\n // The execution of this inner block is synchronous and it\n // processes one event at a time (even with await). Do not use\n // if concurrent execution is required.\n console.log(event); // prints ['bar'] [42]\n}\n// Unreachable here\n```\n\nReturns an `AsyncIterator` that iterates `eventName` events. It will throw\nif the `EventEmitter` emits `'error'`. It removes all listeners when\nexiting the loop. The `value` returned by each iteration is an array\ncomposed of the emitted event arguments.\n\nAn `AbortSignal` can be used to cancel waiting on events:\n\n```js\nimport { on, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ac = new AbortController();\n\n(async () => {\n const ee = new EventEmitter();\n\n // Emit later on\n process.nextTick(() => {\n ee.emit('foo', 'bar');\n ee.emit('foo', 42);\n });\n\n for await (const event of on(ee, 'foo', { signal: ac.signal })) {\n // The execution of this inner block is synchronous and it\n // processes one event at a time (even with await). Do not use\n // if concurrent execution is required.\n console.log(event); // prints ['bar'] [42]\n }\n // Unreachable here\n})();\n\nprocess.nextTick(() => ac.abort());\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"]]]},{"name":"eventName","description":"The name of the event being listened for","optional":false,"type":[[["string"]]]},{"name":"options","optional":true,"type":[[["StaticEventEmitterOptions"]]]}],"returns":[{"types":[[["AsyncIterableIterator","<"],["any",">"]]],"description":"that iterates `eventName` events emitted by the `emitter`"}],"returnsDescription":"that iterates `eventName` events emitted by the `emitter`","meta":{"line":258,"file":"events.d.ts"}},{"name":"once","description":"Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given\nevent or that is rejected if the `EventEmitter` emits `'error'` while waiting.\nThe `Promise` will resolve with an array of all the arguments emitted to the\ngiven event.\n\nThis method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event\nsemantics and does not listen to the `'error'` event.\n\n```js\nimport { once, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ee = new EventEmitter();\n\nprocess.nextTick(() => {\n ee.emit('myevent', 42);\n});\n\nconst [value] = await once(ee, 'myevent');\nconsole.log(value);\n\nconst err = new Error('kaboom');\nprocess.nextTick(() => {\n ee.emit('error', err);\n});\n\ntry {\n await once(ee, 'myevent');\n} catch (err) {\n console.error('error happened', err);\n}\n```\n\nThe special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the\n'`error'` event itself, then it is treated as any other kind of event without\nspecial handling:\n\n```js\nimport { EventEmitter, once } from 'node:events';\n\nconst ee = new EventEmitter();\n\nonce(ee, 'error')\n .then(([err]) => console.log('ok', err.message))\n .catch((err) => console.error('error', err.message));\n\nee.emit('error', new Error('boom'));\n\n// Prints: ok boom\n```\n\nAn `AbortSignal` can be used to cancel waiting for the event:\n\n```js\nimport { EventEmitter, once } from 'node:events';\n\nconst ee = new EventEmitter();\nconst ac = new AbortController();\n\nasync function foo(emitter, event, signal) {\n try {\n await once(emitter, event, { signal });\n console.log('event emitted!');\n } catch (error) {\n if (error.name === 'AbortError') {\n console.error('Waiting for the event was canceled!');\n } else {\n console.error('There was an error', error.message);\n }\n }\n}\n\nfoo(ee, 'foo', ac.signal);\nac.abort(); // Abort waiting for the event\nee.emit('foo'); // Prints: Waiting for the event was canceled!\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["_"],["NodeEventTarget"]]]},{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"options","optional":true,"type":[[["StaticEventEmitterOptions"]]]}],"returns":[[[["Promise","<"],["Array","<"],["any",">>"]]]],"meta":{"line":193,"file":"events.d.ts"}},{"name":"setMaxListeners","description":"```js\nimport { setMaxListeners, EventEmitter } from 'node:events';\n\nconst target = new EventTarget();\nconst emitter = new EventEmitter();\n\nsetMaxListeners(5, target, emitter);\n```","scope":"static","params":[{"name":"n","description":"A non-negative number. The maximum number of listeners per `EventTarget` event.","optional":true,"type":[[["number"]]]},{"name":"eventTargets","optional":false,"variable":true,"type":[[["Array","<"],["EventEmitter"," | _"],["DOMEventTarget",">"]]]}],"returns":[[[["void"]]]],"meta":{"line":352,"file":"events.d.ts"}}],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/client/index.ts#L17"}},{"name":"Contact","construct":{"name":"new Contact","params":[{"name":"params","optional":false,"type":[[["{"],["\nname",": {"],["\nfirst","_"],["name",": "],["string",","],["\nformatted","_"],["name",": "],["string",","],["\nlast","_"],["name",": "],["string",","],["\nmiddle","_"],["name",": "],["string",","],["\nprefix",": "],["string",","],["\nsuffix",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"addresses","type":[[["Array","<{"],["\ncity",": "],["string",","],["\ncountry",": "],["string",","],["\ncountry","_"],["code",": "],["string",","],["\nstate",": "],["string",","],["\nstreet",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'\n","}>"]]],"meta":{"line":19,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L19"}},{"name":"birthday","type":[[["string"]]],"meta":{"line":23,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L23"}},{"name":"emails","type":[[["Array","<{"],["\nemail",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'\n","}>"]]],"meta":{"line":21,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L21"}},{"name":"name","type":[[["{"],["\nfirst","_"],["name",": "],["string",","],["\nformatted","_"],["name",": "],["string",","],["\nlast","_"],["name",": "],["string",","],["\nmiddle","_"],["name",": "],["string",","],["\nprefix",": "],["string",","],["\nsuffix",": "],["string\n","}"]]],"meta":{"line":25,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L25"}},{"name":"org","type":[[["{"],["\ncompany",": "],["string",","],["\ndepartment",": "],["string",","],["\ntitle",": "],["string\n","}"]]],"meta":{"line":24,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L24"}},{"name":"phones","type":[[["Array","<{"],["\nphone",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'"," | "],["'CELL'"," | "],["'MAIN'"," | "],["'IPHONE'",","],["\nwa","_"],["id",": "],["string\n","}>"]]],"meta":{"line":22,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L22"}},{"name":"urls","type":[[["Array","<{"],["\ntype",": "],["'HOME'"," | "],["'WORK'",","],["\nurl",": "],["string\n","}>"]]],"meta":{"line":20,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L20"}}],"methods":[{"name":"addAddress","params":[{"name":"address","optional":false,"type":[[["{"],["\ncity",": "],["string",","],["\ncountry",": "],["string",","],["\ncountry","_"],["code",": "],["string",","],["\nstate",": "],["string",","],["\nstreet",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":55,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L55"}},{"name":"addEmail","params":[{"name":"email","optional":false,"type":[[["{"],["\nemail",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":63,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L63"}},{"name":"addPhone","params":[{"name":"phone","optional":false,"type":[[["{"],["\nphone",": "],["string",","],["\ntype",": "],["'HOME'"," | "],["'WORK'"," | "],["'CELL'"," | "],["'MAIN'"," | "],["'IPHONE'",","],["\nwa","_"],["id",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L67"}},{"name":"addUrl","params":[{"name":"url","optional":false,"type":[[["{"],["\ntype",": "],["'HOME'"," | "],["'WORK'",","],["\nurl",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":59,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L59"}},{"name":"setBirthday","params":[{"name":"date","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":71,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L71"}},{"name":"setFirstName","params":[{"name":"firstName","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":35,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L35"}},{"name":"setLastName","params":[{"name":"lastName","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L31"}},{"name":"setMiddleName","params":[{"name":"middleName","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":39,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L39"}},{"name":"setNamePrefix","params":[{"name":"prefix","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":47,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L47"}},{"name":"setNameSuffix","params":[{"name":"suffix","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":43,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L43"}},{"name":"setOrg","params":[{"name":"org","optional":false,"type":[[["{"],["\ncompany",": "],["string",","],["\ndepartment",": "],["string",","],["\ntitle",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":51,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L51"}}],"meta":{"line":18,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L18"}},{"name":"ContactMessage","extends":[[["BaseMessage","<"],["'contacts'",">"]]],"implements":[[["ContactMessageInterface"]]],"construct":{"name":"new ContactMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\ncontacts",": "],["Array","<"],["Contact",">"],["\n","}"]]]}]},"props":[{"name":"contacts","type":[[["Array","<"],["Contact",">"]]],"meta":{"line":82,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L82"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addContact","params":[{"name":"contact","optional":false,"type":[[["Contact"]]]}],"returns":[[[["void"]]]],"meta":{"line":97,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L97"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontacts",": "],["Array","<{"],["\naddresses",": "],["Array","<{ "],["type",": "],["\"HOME\""," | "],["\"WORK\"","; "],["street","?: "],["string"," | "],["undefined","; "],["city","?: "],["string"," | "],["undefined","; "],["state","?: "],["string"," | "],["undefined","; "],["country","?: "],["string"," | "],["undefined","; "],["country","_"],["code","?: "],["string"," | "],["undefined","; }>,"],["\nbirthday",": "],["string",","],["\nemails",": "],["Array","<{ "],["type",": "],["\"HOME\""," | "],["\"WORK\"","; "],["email","?: "],["string"," | "],["undefined","; }>,"],["\nname",": { "],["formatted","_"],["name",": "],["string","; "],["first","_"],["name","?: "],["string"," | "],["undefined","; "],["last","_"],["name","?: "],["string"," | "],["undefined","; "],["middle","_"],["name","?: "],["string"," | "],["undefined","; "],["suffix","?: "],["string"," | "],["undefined","; "],["prefix","?: "],["string"," | "],["undefined","; },"],["\norg",": { "],["company","?: "],["string"," | "],["undefined","; "],["title","?: "],["string"," | "],["undefined","; "],["department","?: "],["string"," | "],["undefined","; },"],["\nphones",": "],["Array","<{ "],["phone","?: "],["string"," | "],["undefined","; "],["type","?: "],["\"HOME\""," | "],["\"WORK\""," | "],["\"CELL\""," | "],["\"MAIN\""," | "],["\"IPHONE\""," | "],["undefined","; "],["wa","_"],["id","?: "],["string"," | "],["undefined","; }>,"],["\nurls",": "],["Array","<{ "],["type",": "],["\"HOME\""," | "],["\"WORK\"","; "],["url",": "],["string","; }>"],["\n","}>,"],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Contacts\n","}"]]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L101"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":81,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/contact/index.ts#L81"}},{"name":"ContactMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["ContactMessageEventInterface"]]],"construct":{"name":"new ContactMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\ncontact",": "],["ContactMessage",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"contact","type":[[["ContactMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/contacts/index.ts#L12"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/contacts/index.ts#L11"}},{"name":"CustomerIdentityChangeEvent","implements":[[["CustomerIdentityChangeEventInterface"]]],"construct":{"name":"new CustomerIdentityChangeEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nacknowledged",": "],["string",","],["\nclient",": "],["Client",","],["\ncreationTimestamp",": "],["string",","],["\nhash",": "],["string",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"acknowledged","type":[[["string"]]],"meta":{"line":6,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L6"}},{"name":"client","type":[[["Client"]]],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L5"}},{"name":"creationTimestamp","type":[[["string"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L7"}},{"name":"hash","type":[[["string"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L8"}}],"meta":{"line":4,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/index.ts#L4"}},{"name":"CustomerNumberChangeEvent","implements":[[["CustomerNumberChangeEventInterface"]]],"construct":{"name":"new CustomerNumberChangeEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nchangeDescription",": "],["string",","],["\nclient",": "],["Client",","],["\nnewWaId",": "],["string",","],["\noldWaId",": "],["string",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"changeDescription","type":[[["string"]]],"meta":{"line":6,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L6"}},{"name":"client","type":[[["Client"]]],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L5"}},{"name":"newWaId","type":[[["string"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L7"}},{"name":"oldWaId","type":[[["string"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L9"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L8"}}],"meta":{"line":4,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/index.ts#L4"}},{"name":"DocumentMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumDocument",">"]]],"implements":[[["DocumentMessageInterface"]]],"construct":{"name":"new DocumentMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nlink",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nlink",": "],["string\n","}"]]],"meta":{"line":229,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L229"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ndocument",": "],["Object",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Document\n","}"]]]],"meta":{"line":250,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L250"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":225,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L225"}},{"name":"DocumentMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["DocumentMessageEventInterface"]]],"construct":{"name":"new DocumentMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\ndocument",": "],["DocumentMessage",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"document","type":[[["DocumentMessage"]]],"meta":{"line":15,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/document/index.ts#L15"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/document/index.ts#L11"}},{"name":"ImageMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumImage",">"]]],"implements":[[["ImageMessageInterface"]]],"construct":{"name":"new ImageMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]],"meta":{"line":131,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L131"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nimage",": "],["Object",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Image\n","}"]]]],"meta":{"line":147,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L147"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":127,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L127"}},{"name":"ImageMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["ImageMessageEventInterface"]]],"construct":{"name":"new ImageMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nimage",": "],["ImageMessage",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"image","type":[[["ImageMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/image/index.ts#L12"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/image/index.ts#L11"}},{"name":"InteractionEvent","extends":[[["MessageEvent"]]],"implements":[[["InteractionMessageEventInterface"]]],"construct":{"name":"new InteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":18,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L18"}},{"name":"ListInteractionEvent","extends":[[["InteractionEvent"]]],"implements":[[["ListInteractionMessageEventInterface"]]],"construct":{"name":"new ListInteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\ndescription",": "],["string",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nlistId",": "],["string",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string",","],["\ntitle",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"description","type":[[["string"]]],"meta":{"line":52,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L52"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"listId","type":[[["string"]]],"meta":{"line":51,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L51"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}},{"name":"title","type":[[["string"]]],"meta":{"line":50,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L50"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":46,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L46"}},{"name":"ListInteractionMessage","extends":[[["InteractiveMessage"]]],"implements":[[["ListInteractionMessageInterface"]]],"construct":{"name":"new ListInteractionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nbuttonText",": "],["string",","],["\nfooterText",": "],["string",","],["\nsections",": "],["Array","<{"],["\nrows",": "],["Array","<{ "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nbuttonText",": "],["string",","],["\nsections",": "],["Array","<{"],["\nrows",": "],["Array","<{ "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]],"meta":{"line":166,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L166"}},{"name":"interactiveMessageData","readonly":true,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L32"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addFooter","params":[{"name":"footerText","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":198,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L198"}},{"name":"addHeader","returns":[[[["void"]]]],"meta":{"line":196,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L196"}},{"name":"addSection","params":[{"name":"section","optional":false,"type":[[["{"],["\nrows",": "],["Array","<{ "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }>,"],["\ntitle",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":192,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L192"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ninteractive",": { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine"," & "],["undefined"," | { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Interactive\n","} & {"],["\ninteractive",": {"],["\naction",": {"],["\nbutton",": "],["string",","],["\nsections",": "],["Array","<{ "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }>"],["\n","},"],["\nbody",": {"],["\ntext",": "],["string\n","},"],["\nfooter",": {"],["\ntext",": "],["string\n","},"],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["List\n","}"],["\n","}"]]]],"meta":{"line":202,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L202"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":162,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L162"}},{"name":"LocationMessage","extends":[[["BaseMessage","<"],["'location'",">"]]],"implements":[[["LocationMessageInterface"]]],"construct":{"name":"new LocationMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\naddress",": "],["string",","],["\nlatitude",": "],["number",","],["\nlongitude",": "],["number",","],["\nname",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\naddress",": "],["string",","],["\nlatitude",": "],["number",","],["\nlongitude",": "],["number",","],["\nname",": "],["string\n","}"]]],"meta":{"line":14,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/location/index.ts#L14"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nlocation",": {"],["\naddress",": "],["string",","],["\nlatitude",": "],["number",","],["\nlongitude",": "],["number",","],["\nname",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Location\n","}"]]]],"meta":{"line":35,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/location/index.ts#L35"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/location/index.ts#L13"}},{"name":"LocationMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["LocationMessageEventInterface"]]],"construct":{"name":"new LocationMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nlocation",": "],["LocationMessage",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"location","type":[[["LocationMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/location/index.ts#L12"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/location/index.ts#L11"}},{"name":"MediaManager","description":"manager to handle media","extends":[[["BaseManager"]]],"implements":[[["MediaManagerInterface"]]],"construct":{"name":"new MediaManager","params":[{"name":"props","optional":false,"type":[[["{"],["\nclient",": "],["Client\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L13"}}],"methods":[{"name":"delete","description":"Function used to delete uploaded media on whatsapp using media id","params":[{"name":"mediaId","optional":false,"type":[[["string"]]]}],"returns":[[[["Promise","<"],["boolean",">"]]]],"meta":{"line":48,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L48"}},{"name":"getUrl","description":"Function used to get the URL of an media using media id from whatsapp","params":[{"name":"mediaId","optional":false,"type":[[["string"]]]}],"returns":[[[["Promise","<{"],["\nfile","_"],["size",": "],["number",","],["\nid",": "],["string",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nmime","_"],["type",": "],["string",","],["\nsha256",": "],["string",","],["\nurl",": "],["string\n","}>"]]]],"meta":{"line":28,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L28"}},{"name":"upload","description":"Function to upload media","params":[{"name":"params","optional":false,"type":[[["{"],["\nfilePath",": "],["string",","],["\nmediaType",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":66,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L66"}}],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/index.ts#L12"}},{"name":"MediaMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["MediaMessageEventInterface"]]],"construct":{"name":"new MediaMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":98,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L98"}},{"name":"MessageDeliveryEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageDeliveryEventInterface"]]],"construct":{"name":"new MessageDeliveryEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-delivered/index.ts#L10"}},{"name":"MessageEvent","extends":[[["BaseEvent"]]],"implements":[[["MessageEventInterface"]]],"construct":{"name":"new MessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\nfrom",": "],["string",","],["\nid",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":28,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L28"}},{"name":"MessageFailedEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageFailedEventInterface"]]],"construct":{"name":"new MessageFailedEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfailReason",": "],["string",","],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"failReason","type":[[["string"]]],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-failed/index.ts#L11"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-failed/index.ts#L10"}},{"name":"MessageManager","description":"manager to handle outgoing messages for wapi","extends":[[["BaseManager"]]],"implements":[[["MessageManagerInterface"]]],"construct":{"name":"new MessageManager","params":[{"name":"props","optional":false,"type":[[["{"],["\nclient",": "],["Client\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/index.ts#L13"}}],"methods":[{"name":"reply","description":"Function used to reply to a message using a message id","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T",","],["\nphoneNumber",": "],["string",","],["\nreplyToMessageId",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":42,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/index.ts#L42"}},{"name":"send","description":"Function used to send message","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":24,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/index.ts#L24"}}],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/index.ts#L12"}},{"name":"MessageReadEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageReadEventInterface"]]],"construct":{"name":"new MessageReadEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-read/index.ts#L10"}},{"name":"MessageSentEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageSentEventInterface"]]],"construct":{"name":"new MessageSentEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-sent/index.ts#L5"}},{"name":"MessageUndeliveredEvent","extends":[[["StatusUpdateEvent"]]],"implements":[[["MessageUndeliveredEventInterface"]]],"construct":{"name":"new MessageUndeliveredEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-undelivered/index.ts#L5"}},{"name":"OrderMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["OrderMessageEventInterface"]]],"construct":{"name":"new OrderMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\norder",": "],["Order",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"order","type":[[["Order"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/order/index.ts#L12"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/order/index.ts#L11"}},{"name":"PhoneNumberManager","description":"Base manager interface","extends":[[["BaseManager"]]],"implements":[[["PhoneNumberManagerInterface"]]],"construct":{"name":"new PhoneNumberManager","params":[{"name":"props","optional":false,"type":[[["{"],["\nclient",": "],["Client\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/base/index.ts#L10"}}],"methods":[{"name":"sendVerificationCode","params":[{"name":"phoneNumber","optional":false,"type":[[["string"]]]}],"returns":[[[["Promise","<"],["boolean",">"]]]],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/phone/index.ts#L10"}},{"name":"verifyCode","params":[{"name":"code","optional":false,"type":[[["string"]]]}],"returns":[[[["Promise","<"],["boolean",">"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/phone/index.ts#L16"}}],"meta":{"line":5,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/phone/index.ts#L5"}},{"name":"ProductInquiryEvent","extends":[[["MessageEvent"]]],"implements":[[["ProductInquiryEventInterface"]]],"construct":{"name":"new ProductInquiryEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\ncatalogId",": "],["string",","],["\nfrom",": "],["string",","],["\nid",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nproductId",": "],["string",","],["\ntext",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"catalogId","type":[[["string"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/index.ts#L12"}},{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"productId","type":[[["string"]]],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/index.ts#L11"}},{"name":"text","type":[[["string"]]],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/index.ts#L13"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/index.ts#L10"}},{"name":"ProductInteractionMessage","extends":[[["InteractiveMessage"]]],"implements":[[["ProductInteractionMessageInterface"]]],"construct":{"name":"new ProductInteractionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nbuttonText",": "],["string",","],["\ncatalogId",": "],["string",","],["\nfooterText",": "],["string",","],["\nproductRetailerId",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string\n","}"]]],"meta":{"line":272,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L272"}},{"name":"interactiveMessageData","readonly":true,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L32"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addFooter","params":[{"name":"footerText","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":297,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L297"}},{"name":"addHeader","returns":[[[["void"]]]],"meta":{"line":295,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L295"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ninteractive",": { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine"," & "],["undefined"," | { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Interactive\n","} & {"],["\ninteractive",": {"],["\naction",": {"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string\n","},"],["\nbody",": {"],["\ntext",": "],["string\n","},"],["\nfooter",": {"],["\ntext",": "],["string\n","},"],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["Product\n","}"],["\n","}"]]]],"meta":{"line":301,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L301"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":268,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L268"}},{"name":"ProductListInteractionMessage","extends":[[["InteractiveMessage"]]],"implements":[[["ProductListInteractionMessageInterface"]]],"construct":{"name":"new ProductListInteractionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nbuttonText",": "],["string",","],["\ncatalogId",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\nproductRetailerId",": "],["string",","],["\nsections",": "],["Array","<{"],["\nproduct","_"],["items",": "],["Array","<{ "],["product","_"],["retailer","_"],["id",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string",","],["\nsections",": "],["Array","<{"],["\nproduct","_"],["items",": "],["Array","<{ "],["product","_"],["retailer","_"],["id",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]],"meta":{"line":371,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L371"}},{"name":"interactiveMessageData","readonly":true,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L32"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"addFooter","params":[{"name":"footerText","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":402,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L402"}},{"name":"addSection","params":[{"name":"section","optional":false,"type":[[["{"],["\nproduct","_"],["items",": "],["Array","<{ "],["product","_"],["retailer","_"],["id",": "],["string","; }>,"],["\ntitle",": "],["string\n","}"]]]}],"returns":[[[["void"]]]],"meta":{"line":398,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L398"}},{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\ninteractive",": { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine"," & "],["undefined"," | { "],["type",": "],["InteractiveMessageTypeEnumButton","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["buttons",": { "],["type",": "],["\"reply\"","; "],["reply",": { "],["id",": "],["string","; "],["title",": "],["string","; }; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProductList","; "],["body",": { "],["text",": "],["string","; }; "],["header",": { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ "],["id",": "],["string","; "],["caption","?: "],["string"," | "],["undefined","; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; }; "],["action",": { ...; }; "],["footer","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumProduct","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumCatalog","; "],["action",": { "],["catalogId",": "],["string","; "],["productRetailerId",": "],["string","; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { "],["type",": "],["HeaderTypeEnumImage","; "],["image",": ({ ...; } | { ...; }) & ({ ...; } | ... "],["1"," "],["more"," ... | "],["undefined","); } | { ...; } | { ...; } | { ...; } | "],["undefined","; "],["body","?: { ...; }... | { "],["type",": "],["InteractiveMessageTypeEnumList","; "],["action",": { "],["button",": "],["string","; "],["sections",": { "],["title",": "],["string","; "],["rows",": { "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }[]; }[]; }; "],["footer","?: { "],["text",": "],["string","; } | "],["undefined","; "],["header","?: { ...; } | ... "],["3"," "],["more"," ... | "],["undefined","; "],["body","?: { ...; } | "],["undefined","; } | { "],["type",": "],["InteractiveMessageTypeEnumFlow","; "],["body",": { "],["text",": "],["string","; }; "],["action",": { "],["mode",": "],["\"draft\""," | "],["\"published\"","; "],["flow","_"],["message","_"],["version",": "],["\"3\"","; "],["flow","_"],["token",": "],["string","; "],["flow","_"],["id",": "],["string","; "],["flow","_"],["cta",": "],["string","; "],["flow","_"],["action","?: "],["\"navigate\""," | ... "],["1"," "],["more"," ... | "],["undefined","; "],["flow","_"],["action","_"],["payload","?: { ...; } | "],["undefined","; }; "],["footer","?: { ...; } | "],["undefine",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Interactive\n","} & {"],["\ninteractive",": {"],["\naction",": {"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string",","],["\nsections",": "],["Array","<{ "],["title",": "],["string","; "],["product","_"],["items",": { "],["product","_"],["retailer","_"],["id",": "],["string","; }[]; }>"],["\n","},"],["\nbody",": {"],["\ntext",": "],["string\n","},"],["\nfooter",": {"],["\ntext",": "],["string\n","},"],["\nheader",": {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","} & "],["undefined"," | {"],["\nimage",": "],["Object",","],["\ntype",": "],["Image\n","} | {"],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","} | {"],["\ndocument",": "],["Object",","],["\ntype",": "],["Document\n","} | {"],["\ntext",": "],["string",","],["\ntype",": "],["Text\n","},"],["\ntype",": "],["ProductList\n","}"],["\n","}"]]]],"meta":{"line":406,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L406"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":367,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/index.ts#L367"}},{"name":"QuickReplyButtonInteractionEvent","extends":[[["InteractionEvent"]]],"implements":[[["QuickReplyButtonInteractionEventInterface"]]],"construct":{"name":"new QuickReplyButtonInteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nbuttonPayload",": "],["string",","],["\nbuttonText",": "],["string",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"button","type":[[["{"],["\npayload",": "],["string",","],["\ntext",": "],["string\n","}"]]],"meta":{"line":129,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L129"}},{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L125"}},{"name":"ReactionEvent","extends":[[["MessageEvent"]]],"implements":[[["ReactionEventInterface"]]],"construct":{"name":"new ReactionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nid",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nreaction",": "],["ReactionMessage",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"reaction","type":[[["ReactionMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/reaction/index.ts#L12"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/reaction/index.ts#L11"}},{"name":"ReactionMessage","extends":[[["BaseMessage","<"],["'reaction'",">"]]],"implements":[[["ReactionMessageInterface"]]],"construct":{"name":"new ReactionMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nmessageId",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nemoji",": "],["string",","],["\nmessageId",": "],["string\n","}"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/reaction/index.ts#L8"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","params":[{"name":"params","optional":false,"type":[[["{"],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nreaction",": {"],["\nemoji",": "],["string",","],["\nmessage","_"],["id",": "],["string\n","},"],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Reaction\n","}"]]]],"meta":{"line":25,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/reaction/index.ts#L25"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/reaction/index.ts#L7"}},{"name":"ReplyButtonInteractionEvent","extends":[[["InteractionEvent"]]],"implements":[[["ButtonReplyInteractionMessageEventInterface"]]],"construct":{"name":"new ReplyButtonInteractionEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nbuttonId",": "],["string",","],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntimestamp",": "],["string",","],["\ntitle",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"buttonId","type":[[["string"]]],"meta":{"line":92,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L92"}},{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}},{"name":"title","type":[[["string"]]],"meta":{"line":91,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L91"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":87,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/index.ts#L87"}},{"name":"StatusUpdateEvent","extends":[[["BaseEvent"]]],"implements":[[["StatusUpdateEventInterface"]]],"construct":{"name":"new StatusUpdateEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\nfrom",": "],["string",","],["\ntimestamp",": "],["string\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":137,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L137"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":138,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L138"}}],"meta":{"line":136,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L136"}},{"name":"StickerMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumSticker",">"]]],"implements":[[["StickerMessageInterface"]]],"construct":{"name":"new StickerMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]],"meta":{"line":179,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L179"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nsticker",": "],["Object",","],["\nto",": "],["string",","],["\ntype",": "],["Sticker\n","}"]]]],"meta":{"line":198,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L198"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":175,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L175"}},{"name":"StickerMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["StickerMessageEventInterface"]]],"construct":{"name":"new StickerMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\nsticker",": "],["StickerMessage",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"sticker","type":[[["StickerMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/sticker/index.ts#L12"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/sticker/index.ts#L11"}},{"name":"TextMessage","description":"Text message component builder","extends":[[["BaseMessage","<"],["'text'",">"]]],"implements":[[["TextMessageInterface"]]],"construct":{"name":"new TextMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\nallowPreview",": "],["true",","],["\ntext",": "],["string\n","}"]]]}]},"props":[{"name":"data","readonly":true,"type":[[["{"],["\nallowPreview",": "],["true",","],["\ntext",": "],["string\n","}"]]],"meta":{"line":14,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/text/index.ts#L14"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for text message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\npreview","_"],["url",": "],["boolean",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\ntext",": {"],["\nbody",": "],["string",","],["\npreview","_"],["url",": "],["boolean\n","},"],["\nto",": "],["string",","],["\ntype",": "],["Text\n","}"]]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/text/index.ts#L31"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":13,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/text/index.ts#L13"}},{"name":"TextMessageEvent","extends":[[["MessageEvent"]]],"implements":[[["TextMessageEventInterface"]]],"construct":{"name":"new TextMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmessageId",": "],["string",","],["\ntext",": "],["TextMessage",","],["\ntimestamp",": "],["string\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"text","type":[[["TextMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/text/index.ts#L12"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}}],"methods":[{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/text/index.ts#L11"}},{"name":"UnknownEvent","implements":[[["UnknownEventInterface"]]],"construct":{"name":"new UnknownEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\ncode",": "],["string",","],["\nmessage",": "],["string",","],["\ntitle",": "],["string\n","}"]]]}]},"props":[{"name":"code","type":[[["string"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/index.ts#L8"}},{"name":"message","type":[[["string"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/index.ts#L9"}},{"name":"title","type":[[["string"]]],"meta":{"line":10,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/index.ts#L10"}}],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/index.ts#L7"}},{"name":"VideoMessage","extends":[[["BaseMessage","<"],["MessageTypeEnumVideo",">"]]],"implements":[[["VideoMessageInterface"]]],"construct":{"name":"new VideoMessage","params":[{"name":"params","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]]}]},"props":[{"name":"data","type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]],"meta":{"line":82,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L82"}},{"name":"messaging_product","type":[[["'whatsapp'"]]],"meta":{"line":8,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L8"}},{"name":"recipient_type","type":[[["'individual'"]]],"meta":{"line":9,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L9"}},{"name":"type","type":[[["MessageTypeEnum"]]],"meta":{"line":7,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L7"}}],"methods":[{"name":"toJson","description":"Function used to get the get the whatsapp cloud api payload for audio message","params":[{"name":"params","optional":false,"type":[[["{"],["\nreplyToMessageId",": "],["string",","],["\nto",": "],["string\n","}"]]]}],"returns":[[[["{"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\nto",": "],["string",","],["\ntype",": "],["Video",","],["\nvideo",": "],["Object\n","}"]]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L99"}},{"name":"parseConstructorPayload","scope":"static","params":[{"name":"schema","optional":false,"type":[[["ZodType","<"],["any",", "],["ZodTypeDef",", "],["any",">"]]]},{"name":"payload","optional":false,"type":[[["any"]]]}],"returns":[[[["any"]]]],"meta":{"line":16,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/message/index.ts#L16"}}],"meta":{"line":78,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/index.ts#L78"}},{"name":"VideoMessageEvent","extends":[[["MediaMessageEvent"]]],"implements":[[["VideoMessageEventInterface"]]],"construct":{"name":"new VideoMessageEvent","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\ndata",": {"],["\nfrom",": "],["string",","],["\nisForwarded",": "],["boolean",","],["\nmediaId",": "],["string",","],["\nmessageId",": "],["string",","],["\nmimeType",": "],["string",","],["\nsha256",": "],["string",","],["\ntimestamp",": "],["string",","],["\nvideo",": "],["VideoMessage\n","}"],["\n","}"]]]}]},"props":[{"name":"client","type":[[["Client"]]],"meta":{"line":17,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L17"}},{"name":"context","type":[[["MessageContext"]]],"meta":{"line":30,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L30"}},{"name":"isForwarded","type":[[["boolean"]]],"meta":{"line":32,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L32"}},{"name":"mediaId","type":[[["string"]]],"meta":{"line":99,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L99"}},{"name":"messageId","type":[[["string"]]],"meta":{"line":29,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L29"}},{"name":"mimeType","type":[[["string"]]],"meta":{"line":100,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L100"}},{"name":"sha256","type":[[["string"]]],"meta":{"line":101,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L101"}},{"name":"timestamp","type":[[["number"]]],"meta":{"line":31,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L31"}},{"name":"video","type":[[["VideoMessage"]]],"meta":{"line":12,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/video/index.ts#L12"}}],"methods":[{"name":"getUrl","returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":125,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L125"}},{"name":"react","params":[{"name":"params","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nphoneNumber",": "],["string\n","}"]]]}],"returns":[[[["Promise","<"],["string",">"]]]],"meta":{"line":67,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L67"}},{"name":"read","returns":[[[["Promise","<"],["any",">"]]]],"meta":{"line":83,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L83"}},{"name":"reply","params":[{"name":"props","optional":false,"type":[[["{"],["\nmessage",": "],["T\n","}"]]]}],"returns":[[[["Promise","<"],["void",">"]]]],"meta":{"line":54,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/index.ts#L54"}}],"meta":{"line":11,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/video/index.ts#L11"}},{"name":"Webhook","description":"The webhook client for listening to incoming event notifications","extends":[[["EventEmitter"]]],"implements":[[["WebhookInterface"]]],"construct":{"name":"new Webhook","params":[{"name":"params","optional":false,"type":[[["{"],["\nclient",": "],["Client",","],["\nport",": "],["number",","],["\nwebhookEndpoint",": "],["string",","],["\nwebhookSecret",": "],["string\n","}"]]]}]},"props":[{"name":"client","access":"private","type":[[["Client"]]],"meta":{"line":64,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L64"}},{"name":"endpoint","access":"private","type":[[["string"]]],"meta":{"line":59,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L59"}},{"name":"listening","access":"private","default":"false","type":[[["boolean"]]],"meta":{"line":62,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L62"}},{"name":"port","access":"private","default":"3000","type":[[["number"]]],"meta":{"line":60,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L60"}},{"name":"server","access":"private","type":[[["Express"]]],"meta":{"line":61,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L61"}},{"name":"webhookSecret","access":"private","type":[[["string"]]],"meta":{"line":63,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L63"}},{"name":"captureRejectionSymbol","description":"Value: `Symbol.for('nodejs.rejection')`\n\nSee how to write a custom `rejection handler`.","scope":"static","readonly":true,"type":[[["("],["typeof"," "],["captureRejectionSymbol",")"]]],"meta":{"line":402,"file":"events.d.ts"}},{"name":"captureRejections","description":"Value: [boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)\n\nChange the default `captureRejections` option on all new `EventEmitter` objects.","scope":"static","type":[[["boolean"]]],"meta":{"line":409,"file":"events.d.ts"}},{"name":"defaultMaxListeners","description":"By default, a maximum of `10` listeners can be registered for any single\nevent. This limit can be changed for individual `EventEmitter` instances\nusing the `emitter.setMaxListeners(n)` method. To change the default\nfor _all_`EventEmitter` instances, the `events.defaultMaxListeners`property can be used. If this value is not a positive number, a `RangeError`is thrown.\n\nTake caution when setting the `events.defaultMaxListeners` because the\nchange affects _all_`EventEmitter` instances, including those created before\nthe change is made. However, calling `emitter.setMaxListeners(n)` still has\nprecedence over `events.defaultMaxListeners`.\n\nThis is not a hard limit. The `EventEmitter` instance will allow\nmore listeners to be added but will output a trace warning to stderr indicating\nthat a \"possible EventEmitter memory leak\" has been detected. For any single`EventEmitter`, the `emitter.getMaxListeners()` and `emitter.setMaxListeners()`methods can be used to\ntemporarily avoid this warning:\n\n```js\nimport { EventEmitter } from 'node:events';\nconst emitter = new EventEmitter();\nemitter.setMaxListeners(emitter.getMaxListeners() + 1);\nemitter.once('event', () => {\n // do stuff\n emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));\n});\n```\n\nThe `--trace-warnings` command-line flag can be used to display the\nstack trace for such warnings.\n\nThe emitted warning can be inspected with `process.on('warning')` and will\nhave the additional `emitter`, `type`, and `count` properties, referring to\nthe event emitter instance, the event's name and the number of attached\nlisteners, respectively.\nIts `name` property is set to `'MaxListenersExceededWarning'`.","scope":"static","type":[[["number"]]],"meta":{"line":446,"file":"events.d.ts"}},{"name":"errorMonitor","description":"This symbol shall be used to install a listener for only monitoring `'error'`events. Listeners installed using this symbol are called before the regular`'error'` listeners are called.\n\nInstalling a listener using this symbol does not change the behavior once an`'error'` event is emitted. Therefore, the process will still crash if no\nregular `'error'` listener is installed.","scope":"static","readonly":true,"type":[[["("],["typeof"," "],["errorMonitor",")"]]],"meta":{"line":395,"file":"events.d.ts"}}],"methods":[{"name":"[captureRejectionSymbol]","params":[{"name":"error","optional":false,"type":[[["Error"]]]},{"name":"event","optional":false,"type":[[["string"]]]},{"name":"args","optional":false,"variable":true,"type":[[["Array","<"],["any",">"]]]}],"returns":[[[["void"]]]],"meta":{"line":112,"file":"events.d.ts"}},{"name":"_getRequestHandler","access":"private","params":[{"name":"request","optional":false,"type":[[["Request","<"],["ParamsDictionary",", "],["any",", "],["any",", "],["ParsedQs",", "],["Record","<"],["string",", "],["any",">>"]]]},{"name":"response","optional":false,"type":[[["Response","<"],["any",", "],["Record","<"],["string",", "],["any",">>"]]]}],"returns":[[[["void"]]]],"meta":{"line":96,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L96"}},{"name":"_postRequestHandler","params":[{"name":"request","optional":false,"type":[[["Request","<"],["ParamsDictionary",", "],["any",", "],["any",", "],["ParsedQs",", "],["Record","<"],["string",", "],["any",">>"]]]},{"name":"response","optional":false,"type":[[["Response","<"],["any",", "],["Record","<"],["string",", "],["any",">>"]]]}],"returns":[[[["void"]]]],"meta":{"line":109,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L109"}},{"name":"addListener","description":"Alias for `emitter.on(eventName, listener)`.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":510,"file":"events.d.ts"}},{"name":"emit","description":"Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments\nto each.\n\nReturns `true` if the event had listeners, `false` otherwise.\n\n```js\nimport { EventEmitter } from 'node:events';\nconst myEmitter = new EventEmitter();\n\n// First listener\nmyEmitter.on('event', function firstListener() {\n console.log('Helloooo! first listener');\n});\n// Second listener\nmyEmitter.on('event', function secondListener(arg1, arg2) {\n console.log(`event with parameters ${arg1}, ${arg2} in second listener`);\n});\n// Third listener\nmyEmitter.on('event', function thirdListener(...args) {\n const parameters = args.join(', ');\n console.log(`event with parameters ${parameters} in third listener`);\n});\n\nconsole.log(myEmitter.listeners('event'));\n\nmyEmitter.emit('event', 1, 2, 3, 4, 5);\n\n// Prints:\n// [\n// [Function: firstListener],\n// [Function: secondListener],\n// [Function: thirdListener]\n// ]\n// Helloooo! first listener\n// event with parameters 1, 2 in second listener\n// event with parameters 1, 2, 3, 4, 5 in third listener\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"args","optional":false,"variable":true,"type":[[["Array","<"],["any",">"]]]}],"returns":[[[["boolean"]]]],"meta":{"line":772,"file":"events.d.ts"}},{"name":"eventNames","description":"Returns an array listing the events for which the emitter has registered\nlisteners. The values in the array are strings or `Symbol`s.\n\n```js\nimport { EventEmitter } from 'node:events';\n\nconst myEE = new EventEmitter();\nmyEE.on('foo', () => {});\nmyEE.on('bar', () => {});\n\nconst sym = Symbol('symbol');\nmyEE.on(sym, () => {});\n\nconsole.log(myEE.eventNames());\n// Prints: [ 'foo', 'bar', Symbol(symbol) ]\n```","returns":[[[["Array","<"],["string"," | "],["symbol",">"]]]],"meta":{"line":835,"file":"events.d.ts"}},{"name":"getEndpoint","description":"Getter for the webhook endpoint","returns":[[[["string"]]]],"meta":{"line":645,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L645"}},{"name":"getMaxListeners","description":"Returns the current max listener value for the `EventEmitter` which is either\nset by `emitter.setMaxListeners(n)` or defaults to defaultMaxListeners.","returns":[[[["number"]]]],"meta":{"line":687,"file":"events.d.ts"}},{"name":"getPort","description":"Returns current configured webhook port","returns":[[[["number"]]]],"meta":{"line":661,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L661"}},{"name":"isListening","description":"Returns if webhooks is listening","returns":[[[["boolean"]]]],"meta":{"line":677,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L677"}},{"name":"listen","description":"starts listening on the webhook server","params":[{"name":"cb","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["void"]]]}],"returns":[[[["void"]]]],"meta":{"line":684,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L684"}},{"name":"listenerCount","description":"Returns the number of listeners listening for the event named `eventName`.\nIf `listener` is provided, it will return how many times the listener is found\nin the list of the listeners of the event.","params":[{"name":"eventName","description":"The name of the event being listened for","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The event handler function","optional":true,"type":[[["Function"]]]}],"returns":[[[["number"]]]],"meta":{"line":781,"file":"events.d.ts"}},{"name":"listeners","description":"Returns a copy of the array of listeners for the event named `eventName`.\n\n```js\nserver.on('connection', (stream) => {\n console.log('someone connected!');\n});\nconsole.log(util.inspect(server.listeners('connection')));\n// Prints: [ [Function] ]\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":700,"file":"events.d.ts"}},{"name":"off","description":"Alias for `emitter.removeListener()`.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":660,"file":"events.d.ts"}},{"name":"on","description":"Adds the `listener` function to the end of the listeners array for the\nevent named `eventName`. No checks are made to see if the `listener` has\nalready been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple\ntimes.\n\n```js\nserver.on('connection', (stream) => {\n console.log('someone connected!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.\n\nBy default, event listeners are invoked in the order they are added. The`emitter.prependListener()` method can be used as an alternative to add the\nevent listener to the beginning of the listeners array.\n\n```js\nimport { EventEmitter } from 'node:events';\nconst myEE = new EventEmitter();\nmyEE.on('foo', () => console.log('a'));\nmyEE.prependListener('foo', () => console.log('b'));\nmyEE.emit('foo');\n// Prints:\n// b\n// a\n```","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":542,"file":"events.d.ts"}},{"name":"once","description":"Adds a **one-time**`listener` function for the event named `eventName`. The\nnext time `eventName` is triggered, this listener is removed and then invoked.\n\n```js\nserver.once('connection', (stream) => {\n console.log('Ah, we have our first user!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.\n\nBy default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the\nevent listener to the beginning of the listeners array.\n\n```js\nimport { EventEmitter } from 'node:events';\nconst myEE = new EventEmitter();\nmyEE.once('foo', () => console.log('a'));\nmyEE.prependOnceListener('foo', () => console.log('b'));\nmyEE.emit('foo');\n// Prints:\n// b\n// a\n```","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":572,"file":"events.d.ts"}},{"name":"prependListener","description":"Adds the `listener` function to the _beginning_ of the listeners array for the\nevent named `eventName`. No checks are made to see if the `listener` has\nalready been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple\ntimes.\n\n```js\nserver.prependListener('connection', (stream) => {\n console.log('someone connected!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":799,"file":"events.d.ts"}},{"name":"prependOnceListener","description":"Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this\nlistener is removed, and then invoked.\n\n```js\nserver.prependOnceListener('connection', (stream) => {\n console.log('Ah, we have our first user!');\n});\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","description":"The name of the event.","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","description":"The callback function","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":815,"file":"events.d.ts"}},{"name":"rawListeners","description":"Returns a copy of the array of listeners for the event named `eventName`,\nincluding any wrappers (such as those created by `.once()`).\n\n```js\nimport { EventEmitter } from 'node:events';\nconst emitter = new EventEmitter();\nemitter.once('log', () => console.log('log once'));\n\n// Returns a new Array with a function `onceWrapper` which has a property\n// `listener` which contains the original listener bound above\nconst listeners = emitter.rawListeners('log');\nconst logFnWrapper = listeners[0];\n\n// Logs \"log once\" to the console and does not unbind the `once` event\nlogFnWrapper.listener();\n\n// Logs \"log once\" to the console and removes the listener\nlogFnWrapper();\n\nemitter.on('log', () => console.log('log persistently'));\n// Will return a new Array with a single function bound by `.on()` above\nconst newListeners = emitter.rawListeners('log');\n\n// Logs \"log persistently\" twice\nnewListeners[0]();\nemitter.emit('log');\n```","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":731,"file":"events.d.ts"}},{"name":"removeAllListeners","description":"Removes all listeners, or those of the specified `eventName`.\n\nIt is bad practice to remove listeners added elsewhere in the code,\nparticularly when the `EventEmitter` instance was created by some other\ncomponent or module (e.g. sockets or file streams).\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"event","optional":true,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":671,"file":"events.d.ts"}},{"name":"removeListener","description":"Removes the specified `listener` from the listener array for the event named`eventName`.\n\n```js\nconst callback = (stream) => {\n console.log('someone connected!');\n};\nserver.on('connection', callback);\n// ...\nserver.removeListener('connection', callback);\n```\n\n`removeListener()` will remove, at most, one instance of a listener from the\nlistener array. If any single listener has been added multiple times to the\nlistener array for the specified `eventName`, then `removeListener()` must be\ncalled multiple times to remove each instance.\n\nOnce an event is emitted, all listeners attached to it at the\ntime of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution\nwill not remove them from`emit()` in progress. Subsequent events behave as expected.\n\n```js\nimport { EventEmitter } from 'node:events';\nclass MyEmitter extends EventEmitter {}\nconst myEmitter = new MyEmitter();\n\nconst callbackA = () => {\n console.log('A');\n myEmitter.removeListener('event', callbackB);\n};\n\nconst callbackB = () => {\n console.log('B');\n};\n\nmyEmitter.on('event', callbackA);\n\nmyEmitter.on('event', callbackB);\n\n// callbackA removes listener callbackB but it will still be called.\n// Internal listener array at time of emit [callbackA, callbackB]\nmyEmitter.emit('event');\n// Prints:\n// A\n// B\n\n// callbackB is now removed.\n// Internal listener array [callbackA]\nmyEmitter.emit('event');\n// Prints:\n// A\n```\n\nBecause listeners are managed using an internal array, calling this will\nchange the position indices of any listener registered _after_ the listener\nbeing removed. This will not impact the order in which listeners are called,\nbut it means that any copies of the listener array as returned by\nthe `emitter.listeners()` method will need to be recreated.\n\nWhen a single function has been added as a handler multiple times for a single\nevent (as in the example below), `removeListener()` will remove the most\nrecently added instance. In the example the `once('ping')`listener is removed:\n\n```js\nimport { EventEmitter } from 'node:events';\nconst ee = new EventEmitter();\n\nfunction pong() {\n console.log('pong');\n}\n\nee.on('ping', pong);\nee.once('ping', pong);\nee.removeListener('ping', pong);\n\nee.emit('ping');\nee.emit('ping');\n```\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"listener","optional":false,"type":[[["("],["args",": "],["Array","<"],["any",">) => "],["void"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":655,"file":"events.d.ts"}},{"name":"setEndpoint","description":"Set new webhook endpoint (this will replace the previously set webhook endpoint)","params":[{"name":"path","optional":false,"type":[[["string"]]]}],"returns":[[[["void"]]]],"meta":{"line":653,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L653"}},{"name":"setMaxListeners","description":"By default `EventEmitter`s will print a warning if more than `10` listeners are\nadded for a particular event. This is a useful default that helps finding\nmemory leaks. The `emitter.setMaxListeners()` method allows the limit to be\nmodified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners.\n\nReturns a reference to the `EventEmitter`, so that calls can be chained.","params":[{"name":"n","optional":false,"type":[[["number"]]]}],"returns":[[[["Webhook"]]]],"meta":{"line":681,"file":"events.d.ts"}},{"name":"setPort","description":"Set new webhook port (this will replace the previously set webhook port)","params":[{"name":"port","optional":false,"type":[[["number"]]]}],"returns":[[[["void"]]]],"meta":{"line":669,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L669"}},{"name":"addAbortListener","description":"Listens once to the `abort` event on the provided `signal`.\n\nListening to the `abort` event on abort signals is unsafe and may\nlead to resource leaks since another third party with the signal can\ncall `e.stopImmediatePropagation()`. Unfortunately Node.js cannot change\nthis since it would violate the web standard. Additionally, the original\nAPI makes it easy to forget to remove listeners.\n\nThis API allows safely using `AbortSignal`s in Node.js APIs by solving these\ntwo issues by listening to the event such that `stopImmediatePropagation` does\nnot prevent the listener from running.\n\nReturns a disposable so that it may be unsubscribed from more easily.\n\n```js\nimport { addAbortListener } from 'node:events';\n\nfunction example(signal) {\n let disposable;\n try {\n signal.addEventListener('abort', (e) => e.stopImmediatePropagation());\n disposable = addAbortListener(signal, (e) => {\n // Do something when signal is aborted.\n });\n } finally {\n disposable?.[Symbol.dispose]();\n }\n}\n```","scope":"static","params":[{"name":"signal","optional":false,"type":[[["AbortSignal"]]]},{"name":"resource","optional":false,"type":[[["("],["event",": "],["Event",") => "],["void"]]]}],"returns":[{"types":[[["Disposable"]]],"description":"Disposable that removes the `abort` listener."}],"returnsDescription":"Disposable that removes the `abort` listener.","meta":{"line":387,"file":"events.d.ts"}},{"name":"getEventListeners","description":"Returns a copy of the array of listeners for the event named `eventName`.\n\nFor `EventEmitter`s this behaves exactly the same as calling `.listeners` on\nthe emitter.\n\nFor `EventTarget`s this is the only way to get the event listeners for the\nevent target. This is useful for debugging and diagnostic purposes.\n\n```js\nimport { getEventListeners, EventEmitter } from 'node:events';\n\n{\n const ee = new EventEmitter();\n const listener = () => console.log('Events are fun');\n ee.on('foo', listener);\n console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]\n}\n{\n const et = new EventTarget();\n const listener = () => console.log('Events are fun');\n et.addEventListener('foo', listener);\n console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]\n}\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"," | _"],["DOMEventTarget"]]]},{"name":"name","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["Array","<"],["Function",">"]]]],"meta":{"line":308,"file":"events.d.ts"}},{"name":"getMaxListeners","description":"Returns the currently set max amount of listeners.\n\nFor `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on\nthe emitter.\n\nFor `EventTarget`s this is the only way to get the max event listeners for the\nevent target. If the number of event handlers on a single EventTarget exceeds\nthe max set, the EventTarget will print a warning.\n\n```js\nimport { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';\n\n{\n const ee = new EventEmitter();\n console.log(getMaxListeners(ee)); // 10\n setMaxListeners(11, ee);\n console.log(getMaxListeners(ee)); // 11\n}\n{\n const et = new EventTarget();\n console.log(getMaxListeners(et)); // 10\n setMaxListeners(11, et);\n console.log(getMaxListeners(et)); // 11\n}\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"," | _"],["DOMEventTarget"]]]}],"returns":[[[["number"]]]],"meta":{"line":337,"file":"events.d.ts"}},{"name":"listenerCount","description":"A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`.\n\n```js\nimport { EventEmitter, listenerCount } from 'node:events';\n\nconst myEmitter = new EventEmitter();\nmyEmitter.on('event', () => {});\nmyEmitter.on('event', () => {});\nconsole.log(listenerCount(myEmitter, 'event'));\n// Prints: 2\n```","scope":"static","deprecated":"Since v3.2.0 - Use `listenerCount` instead.","params":[{"name":"emitter","description":"The emitter to query","optional":false,"type":[[["EventEmitter"]]]},{"name":"eventName","description":"The event name","optional":false,"type":[[["string"," | "],["symbol"]]]}],"returns":[[[["number"]]]],"meta":{"line":280,"file":"events.d.ts"}},{"name":"on","description":"```js\nimport { on, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ee = new EventEmitter();\n\n// Emit later on\nprocess.nextTick(() => {\n ee.emit('foo', 'bar');\n ee.emit('foo', 42);\n});\n\nfor await (const event of on(ee, 'foo')) {\n // The execution of this inner block is synchronous and it\n // processes one event at a time (even with await). Do not use\n // if concurrent execution is required.\n console.log(event); // prints ['bar'] [42]\n}\n// Unreachable here\n```\n\nReturns an `AsyncIterator` that iterates `eventName` events. It will throw\nif the `EventEmitter` emits `'error'`. It removes all listeners when\nexiting the loop. The `value` returned by each iteration is an array\ncomposed of the emitted event arguments.\n\nAn `AbortSignal` can be used to cancel waiting on events:\n\n```js\nimport { on, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ac = new AbortController();\n\n(async () => {\n const ee = new EventEmitter();\n\n // Emit later on\n process.nextTick(() => {\n ee.emit('foo', 'bar');\n ee.emit('foo', 42);\n });\n\n for await (const event of on(ee, 'foo', { signal: ac.signal })) {\n // The execution of this inner block is synchronous and it\n // processes one event at a time (even with await). Do not use\n // if concurrent execution is required.\n console.log(event); // prints ['bar'] [42]\n }\n // Unreachable here\n})();\n\nprocess.nextTick(() => ac.abort());\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["EventEmitter"]]]},{"name":"eventName","description":"The name of the event being listened for","optional":false,"type":[[["string"]]]},{"name":"options","optional":true,"type":[[["StaticEventEmitterOptions"]]]}],"returns":[{"types":[[["AsyncIterableIterator","<"],["any",">"]]],"description":"that iterates `eventName` events emitted by the `emitter`"}],"returnsDescription":"that iterates `eventName` events emitted by the `emitter`","meta":{"line":258,"file":"events.d.ts"}},{"name":"once","description":"Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given\nevent or that is rejected if the `EventEmitter` emits `'error'` while waiting.\nThe `Promise` will resolve with an array of all the arguments emitted to the\ngiven event.\n\nThis method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event\nsemantics and does not listen to the `'error'` event.\n\n```js\nimport { once, EventEmitter } from 'node:events';\nimport process from 'node:process';\n\nconst ee = new EventEmitter();\n\nprocess.nextTick(() => {\n ee.emit('myevent', 42);\n});\n\nconst [value] = await once(ee, 'myevent');\nconsole.log(value);\n\nconst err = new Error('kaboom');\nprocess.nextTick(() => {\n ee.emit('error', err);\n});\n\ntry {\n await once(ee, 'myevent');\n} catch (err) {\n console.error('error happened', err);\n}\n```\n\nThe special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the\n'`error'` event itself, then it is treated as any other kind of event without\nspecial handling:\n\n```js\nimport { EventEmitter, once } from 'node:events';\n\nconst ee = new EventEmitter();\n\nonce(ee, 'error')\n .then(([err]) => console.log('ok', err.message))\n .catch((err) => console.error('error', err.message));\n\nee.emit('error', new Error('boom'));\n\n// Prints: ok boom\n```\n\nAn `AbortSignal` can be used to cancel waiting for the event:\n\n```js\nimport { EventEmitter, once } from 'node:events';\n\nconst ee = new EventEmitter();\nconst ac = new AbortController();\n\nasync function foo(emitter, event, signal) {\n try {\n await once(emitter, event, { signal });\n console.log('event emitted!');\n } catch (error) {\n if (error.name === 'AbortError') {\n console.error('Waiting for the event was canceled!');\n } else {\n console.error('There was an error', error.message);\n }\n }\n}\n\nfoo(ee, 'foo', ac.signal);\nac.abort(); // Abort waiting for the event\nee.emit('foo'); // Prints: Waiting for the event was canceled!\n```","scope":"static","params":[{"name":"emitter","optional":false,"type":[[["_"],["NodeEventTarget"]]]},{"name":"eventName","optional":false,"type":[[["string"," | "],["symbol"]]]},{"name":"options","optional":true,"type":[[["StaticEventEmitterOptions"]]]}],"returns":[[[["Promise","<"],["Array","<"],["any",">>"]]]],"meta":{"line":193,"file":"events.d.ts"}},{"name":"setMaxListeners","description":"```js\nimport { setMaxListeners, EventEmitter } from 'node:events';\n\nconst target = new EventTarget();\nconst emitter = new EventEmitter();\n\nsetMaxListeners(5, target, emitter);\n```","scope":"static","params":[{"name":"n","description":"A non-negative number. The maximum number of listeners per `EventTarget` event.","optional":true,"type":[[["number"]]]},{"name":"eventTargets","optional":false,"variable":true,"type":[[["Array","<"],["EventEmitter"," | _"],["DOMEventTarget",">"]]]}],"returns":[[[["void"]]]],"meta":{"line":352,"file":"events.d.ts"}}],"meta":{"line":58,"file":"index.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/index.ts#L58"}}],"functions":[],"interfaces":[],"typedefs":[{"name":"AdInteractionSourceMediaTypeEnum","meta":{"line":46,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L46"},"props":[{"name":"Image","type":[[["image"]]]},{"name":"Video","type":[[["video"]]]}]},{"name":"AdInteractionSourceTypeEnum","meta":{"line":41,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L41"},"props":[{"name":"Ad","type":[[["ad"]]]},{"name":"Post","type":[[["post"]]]}]},{"name":"InteractiveMessageTypeEnum","meta":{"line":67,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L67"},"props":[{"name":"Button","type":[[["button"]]]},{"name":"Catalog","type":[[["catalog_message"]]]},{"name":"Flow","type":[[["flow"]]]},{"name":"List","type":[[["list"]]]},{"name":"Product","type":[[["product"]]]},{"name":"ProductList","type":[[["product_list"]]]}]},{"name":"MediaTypeEnum","meta":{"line":1,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L1"},"props":[{"name":"Audio","type":[[["audio"]]]},{"name":"Document","type":[[["document"]]]},{"name":"Image","type":[[["image"]]]},{"name":"Sticker","type":[[["sticker"]]]},{"name":"Video","type":[[["video"]]]}]},{"name":"AdInteractionEventInterface","meta":{"line":55,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L55"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"source","optional":false,"type":[[["{"],["\nctwaClid",": "],["string",","],["\ndescription",": "],["string",","],["\nid",": "],["string",","],["\nmediaType",": "],["AdInteractionSourceMediaTypeEnum",","],["\nmediaUrl",": "],["string",","],["\nthumbnailUrl",": "],["string",","],["\ntitle",": "],["string",","],["\ntype",": "],["AdInteractionSourceTypeEnum",","],["\nurl",": "],["string\n","}"]]]},{"name":"text","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"AudioMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/audio/interface.ts#L8"},"props":[{"name":"audio","optional":false,"type":[[["AudioMessage"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"AudioMessageInterface","meta":{"line":32,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L32"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"BaseEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]}]},{"name":"BaseManagerInterface","description":"Base manager interface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/base/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]}]},{"name":"ButtonInteractionMessageInterface","meta":{"line":24,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L24"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nbuttons",": "],["Array","<{"],["\nid",": "],["string",","],["\ntitle",": "],["string\n","}>"],["\n","}"]]]},{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"ButtonReplyInteractionMessageEventInterface","meta":{"line":23,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L23"},"props":[{"name":"buttonId","optional":false,"type":[[["string"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]},{"name":"title","optional":false,"type":[[["string"]]]}]},{"name":"ContactMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/contacts/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"contact","optional":false,"type":[[["ContactMessage"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"CustomerIdentityChangeEventInterface","meta":{"line":6,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-identity-changed/interface.ts#L6"},"props":[{"name":"acknowledged","optional":false,"type":[[["string"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"creationTimestamp","optional":false,"type":[[["string"]]]},{"name":"hash","optional":false,"type":[[["string"]]]}]},{"name":"CustomerNumberChangeEventInterface","meta":{"line":6,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/customer-number-changed/interface.ts#L6"},"props":[{"name":"changeDescription","optional":false,"type":[[["string"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"newWaId","optional":false,"type":[[["string"]]]},{"name":"oldWaId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"DocumentMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/document/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"document","optional":false,"type":[[["DocumentMessage"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"DocumentMessageInterface","meta":{"line":48,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L48"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nfilename",": "],["string",","],["\nlink",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"ImageMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/image/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"image","optional":false,"type":[[["ImageMessage"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"ImageMessageInterface","meta":{"line":40,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L40"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"InteractionMessageEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"InteractiveMessageInterface","meta":{"line":12,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L12"},"props":[{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"ListInteractionMessageEventInterface","meta":{"line":13,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L13"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"description","optional":false,"type":[[["string"]]]},{"name":"listId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]},{"name":"title","optional":false,"type":[[["string"]]]}]},{"name":"ListInteractionMessageInterface","meta":{"line":34,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L34"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nbuttonText",": "],["string",","],["\nsections",": "],["Array","<{"],["\nrows",": "],["Array","<{ "],["id",": "],["string","; "],["title",": "],["string","; "],["description",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]]},{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"LocationMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/location/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"location","optional":false,"type":[[["LocationMessage"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"LocationMessageInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/location/interface.ts#L3"},"props":[{"name":"data","optional":false,"type":[[["{"],["\naddress",": "],["string",","],["\nlatitude",": "],["number",","],["\nlongitude",": "],["number",","],["\nname",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"MediaManagerInterface","description":"Media manager interface","meta":{"line":10,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/media/interface.ts#L10"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"delete","optional":false,"type":[[["("],["mediaId",": "],["string",") => "],["Promise","<"],["boolean",">"]]]},{"name":"getUrl","optional":false,"type":[[["("],["mediaId",": "],["string",") => "],["Promise","<{"],["\nfile","_"],["size",": "],["number",","],["\nid",": "],["string",","],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\nmime","_"],["type",": "],["string",","],["\nsha256",": "],["string",","],["\nurl",": "],["string\n","}>"]]]},{"name":"upload","optional":false,"type":[[["("],["params",": {"],["\nfilePath",": "],["string",","],["\nmediaType",": "],["string\n","}) => "],["Promise","<"],["string",">"]]]}]},{"name":"MediaMessageEventInterface","meta":{"line":17,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L17"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MediaMessageInterface","meta":{"line":24,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L24"},"props":[{"name":"caption","optional":true,"type":[[["string"]]]},{"name":"fileName","optional":true,"type":[[["string"]]]},{"name":"id","optional":true,"type":[[["string"]]]},{"name":"link","optional":true,"type":[[["string"]]]},{"name":"type","optional":false,"type":[[["MediaTypeEnum"]]]}]},{"name":"MessageDeliveryEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-delivered/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageEventInterface","meta":{"line":11,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L11"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageFailedEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-failed/interface.ts#L7"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"failReason","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageManagerInterface","description":"Message manager interface\\","meta":{"line":10,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/message/interface.ts#L10"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"reply","optional":false,"type":[[["("],["props",": {"],["\nmessage",": "],["T",","],["\nphoneNumber",": "],["string",","],["\nreplyToMessageId",": "],["string\n","}) => "],["Promise","<"],["string",">"]]]},{"name":"send","optional":false,"type":[[["("],["props",": {"],["\nmessage",": "],["T",","],["\nphoneNumber",": "],["string\n","}) => "],["Promise","<"],["string",">"]]]}]},{"name":"MessageReadEventInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-read/interface.ts#L3"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageSentEventInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-sent/interface.ts#L3"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"MessageUndeliveredEventInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/message-undelivered/interface.ts#L3"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"OrderMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/order/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"order","optional":false,"type":[[["Order"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"PhoneNumberManagerInterface","description":"Base manager interface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/manager/phone/interface.ts#L3"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"sendVerificationCode","optional":false,"type":[[["("],["phoneNumber",": "],["string",") => "],["Promise","<"],["boolean",">"]]]},{"name":"verifyCode","optional":false,"type":[[["("],["code",": "],["string",") => "],["Promise","<"],["boolean",">"]]]}]},{"name":"ProductInquiryEventInterface","meta":{"line":7,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/product-inquiry/interface.ts#L7"},"props":[{"name":"catalogId","optional":false,"type":[[["string"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"productId","optional":false,"type":[[["string"]]]},{"name":"text","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"ProductInteractionMessageInterface","meta":{"line":45,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L45"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string\n","}"]]]},{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"ProductListInteractionMessageInterface","meta":{"line":56,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/interaction/interface.ts#L56"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncatalogId",": "],["string",","],["\nproductRetailerId",": "],["string",","],["\nsections",": "],["Array","<{"],["\nproduct","_"],["items",": "],["Array","<{ "],["product","_"],["retailer","_"],["id",": "],["string","; }>,"],["\ntitle",": "],["string\n","}>"],["\n","}"]]]},{"name":"interactiveMessageData","optional":false,"type":[[["{"],["\nbodyText",": "],["string",","],["\nfooterText",": "],["string",","],["\ntype",": "],["InteractiveMessageTypeEnum\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"QuickReplyButtonInteractionEventInterface","meta":{"line":33,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/interaction/interface.ts#L33"},"props":[{"name":"button","optional":false,"type":[[["{"],["\npayload",": "],["string",","],["\ntext",": "],["string\n","}"]]]},{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"ReactionEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/reaction/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"reaction","optional":false,"type":[[["ReactionMessage"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"ReactionMessageInterface","meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/reaction/interface.ts#L3"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nemoji",": "],["string",","],["\nmessageId",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"StatusUpdateEventInterface","meta":{"line":24,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L24"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"StickerMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/sticker/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"sticker","optional":false,"type":[[["StickerMessage"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"StickerMessageInterface","meta":{"line":44,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L44"},"props":[{"name":"data","optional":false,"type":[[["{"],["\nlink",": "],["string\n","} | {"],["\nid",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"TextMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/text/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"text","optional":false,"type":[[["TextMessage"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]}]},{"name":"TextMessageInterface","meta":{"line":5,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/text/interface.ts#L5"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ntext",": "],["null"," | "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"toJson","optional":false,"type":[[["("],["params",": {"],["\nto",": "],["string\n","}) => {"],["\nbiz","_"],["opaque","_"],["callback","_"],["data",": "],["string",","],["\ncontext",": {"],["\nmessage","_"],["id",": "],["string\n","},"],["\nmessaging","_"],["product",": "],["'whatsapp'",","],["\npreview","_"],["url",": "],["boolean",","],["\nrecipient","_"],["type",": "],["'individual'",","],["\ntext",": {"],["\nbody",": "],["string",","],["\npreview","_"],["url",": "],["boolean\n","},"],["\nto",": "],["string",","],["\ntype",": "],["Text\n","}"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"UnknownEventInterface","meta":{"line":4,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/unknown/interface.ts#L4"},"props":[{"name":"code","optional":false,"type":[[["string"]]]},{"name":"message","optional":false,"type":[[["string"]]]},{"name":"title","optional":false,"type":[[["string"]]]}]},{"name":"VideoMessageEventInterface","meta":{"line":8,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/video/interface.ts#L8"},"props":[{"name":"client","optional":false,"type":[[["Client"]]]},{"name":"context","optional":false,"type":[[["MessageContext"]]]},{"name":"getUrl","optional":false,"type":[[["(..."],["args",": "],["unknown","[]) => "],["Promise","<"],["string",">"]]]},{"name":"mediaId","optional":false,"type":[[["string"]]]},{"name":"messageId","optional":false,"type":[[["string"]]]},{"name":"mimeType","optional":false,"type":[[["string"]]]},{"name":"sha256","optional":false,"type":[[["string"]]]},{"name":"timestamp","optional":false,"type":[[["number"]]]},{"name":"video","optional":false,"type":[[["VideoMessage"]]]}]},{"name":"VideoMessageInterface","meta":{"line":36,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/structures/media/interface.ts#L36"},"props":[{"name":"data","optional":false,"type":[[["{"],["\ncaption",": "],["string",","],["\nid",": "],["string\n","} | {"],["\ncaption",": "],["string",","],["\nlink",": "],["string\n","}"]]]},{"name":"messaging_product","optional":false,"type":[[["'whatsapp'"]]]},{"name":"recipient_type","optional":false,"type":[[["'individual'"]]]},{"name":"type","optional":false,"type":[[["MessageTypeEnum"]]]}]},{"name":"MessageContext","type":[[["{"],["\nfrom",": "],["string\n","}"]]],"meta":{"line":3,"file":"interface.ts","url":"https://github.com/sarthakjdev/wapi.js/blob/1c3bcfe/packages/wapi.js/src/webhook/events/base/interface.ts#L3"},"props":[{"name":"from","optional":false,"type":[[["string"]]]}]}],"externals":[],"custom":{"general":{"name":"General","files":{"welcome":{"name":"Welcome","type":"md","content":"## [View the documentation here.](https://discord.js.org/docs/packages/discord.js/main)\n","path":"README.md"}}}}} \ No newline at end of file From 8a36ada2ec94677940944da840829302913ee59e Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:46:56 +0530 Subject: [PATCH 26/52] feat: wip Signed-off-by: sarthakjdev --- .github/workflows/documentation-build.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/documentation-build.yaml b/.github/workflows/documentation-build.yaml index df0106c..3f96889 100644 --- a/.github/workflows/documentation-build.yaml +++ b/.github/workflows/documentation-build.yaml @@ -26,6 +26,7 @@ concurrency: jobs: build: + environment: Production name: Build & upload documentation runs-on: ubuntu-latest steps: From 80d50a0e3a910967b8ac1e3fccf014528ff4c4ee Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:47:34 +0530 Subject: [PATCH 27/52] feat: wip Signed-off-by: sarthakjdev --- .github/workflows/release.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a4d4709..e8ce965 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -5,6 +5,7 @@ on: jobs: npm-publish: + environment: Production timeout-minutes: 10 runs-on: ubuntu-latest steps: From 8a519784416b00b1ebc824a0c5720b709beef140 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:49:28 +0530 Subject: [PATCH 28/52] feat: wip Signed-off-by: sarthakjdev --- packages/wapi.js/.eslintignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/wapi.js/.eslintignore b/packages/wapi.js/.eslintignore index 16c5327..53c37a1 100644 --- a/packages/wapi.js/.eslintignore +++ b/packages/wapi.js/.eslintignore @@ -1,2 +1 @@ -dist - +dist \ No newline at end of file From 213e9a78961a3d470fe008b3a6cc29e323db0a49 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 03:54:26 +0530 Subject: [PATCH 29/52] feat: wip Signed-off-by: sarthakjdev --- packages/wapi.js/.eslintignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wapi.js/.eslintignore b/packages/wapi.js/.eslintignore index 53c37a1..1521c8b 100644 --- a/packages/wapi.js/.eslintignore +++ b/packages/wapi.js/.eslintignore @@ -1 +1 @@ -dist \ No newline at end of file +dist From 2efc4811160a594e30bb996f24053b602c374941 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 04:07:29 +0530 Subject: [PATCH 30/52] test: workflow Signed-off-by: sarthakjdev --- .github/workflows/documentation-build.yaml | 12 ++++++++++-- packages/wapi.js/.eslintignore | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/documentation-build.yaml b/.github/workflows/documentation-build.yaml index 3f96889..ec69984 100644 --- a/.github/workflows/documentation-build.yaml +++ b/.github/workflows/documentation-build.yaml @@ -76,8 +76,16 @@ jobs: - name: Move docs to correct directory if: ${{ github.ref_type == 'branch' }} run: | - mkdir -p "out/wapi.js" - mv "packages/wapi.js/docs/docs.json" "out/wapi.js/${GITHUB_REF_NAME}.json" + input_string="$GITHUB_REF_NAME" + if [[ "$input_string" == *"/"* ]]; then + documentation_file_name=$(echo "$input_string" | cut -d'/' -f2) + echo "Extracted: $documentation_file_name" + else + documentation_file_name="$GITHUB_REF_NAME" + echo "No slash in the string, nothing to extract." + fi + mkdir -p "out/wapi.js" + mv "packages/wapi.js/docs/docs.json" "out/wapi.js/${documentation_file_name}.json" - name: Commit and push run: | diff --git a/packages/wapi.js/.eslintignore b/packages/wapi.js/.eslintignore index 1521c8b..53c37a1 100644 --- a/packages/wapi.js/.eslintignore +++ b/packages/wapi.js/.eslintignore @@ -1 +1 @@ -dist +dist \ No newline at end of file From 910213b9854b3335be754a5c188bb7b5ec8e64b4 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 13:20:18 +0530 Subject: [PATCH 31/52] feat: add favicon data Signed-off-by: sarthakjdev --- .github/workflows/documentation-build.yaml | 1 - .../public/android-chrome-192x192.png | Bin 0 -> 8360 bytes .../public/android-chrome-256x256.png | Bin 0 -> 11749 bytes apps/wapijs.co/public/apple-touch-icon.png | Bin 0 -> 7830 bytes apps/wapijs.co/public/browserconfig.xml | 9 ++++ apps/wapijs.co/public/favicon-16x16.png | Bin 0 -> 905 bytes apps/wapijs.co/public/favicon-32x32.png | Bin 0 -> 1687 bytes apps/wapijs.co/public/favicon.ico | Bin 0 -> 15086 bytes apps/wapijs.co/public/mstile-150x150.png | Bin 0 -> 5093 bytes apps/wapijs.co/public/safari-pinned-tab.svg | 43 ++++++++++++++++++ apps/wapijs.co/public/site.webmanifest | 19 ++++++++ 11 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 apps/wapijs.co/public/android-chrome-192x192.png create mode 100644 apps/wapijs.co/public/android-chrome-256x256.png create mode 100644 apps/wapijs.co/public/apple-touch-icon.png create mode 100644 apps/wapijs.co/public/browserconfig.xml create mode 100644 apps/wapijs.co/public/favicon-16x16.png create mode 100644 apps/wapijs.co/public/favicon-32x32.png create mode 100644 apps/wapijs.co/public/favicon.ico create mode 100644 apps/wapijs.co/public/mstile-150x150.png create mode 100644 apps/wapijs.co/public/safari-pinned-tab.svg create mode 100644 apps/wapijs.co/public/site.webmanifest diff --git a/.github/workflows/documentation-build.yaml b/.github/workflows/documentation-build.yaml index ec69984..d5e8058 100644 --- a/.github/workflows/documentation-build.yaml +++ b/.github/workflows/documentation-build.yaml @@ -3,7 +3,6 @@ on: push: branches: - "master" - - "feat/documentation" paths: - "packages/wapi.js/**" tags: diff --git a/apps/wapijs.co/public/android-chrome-192x192.png b/apps/wapijs.co/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..b29682df8df0bd7d08b96d4365fe1f4b56884e68 GIT binary patch literal 8360 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 literal 0 HcmV?d00001 diff --git a/apps/wapijs.co/public/android-chrome-256x256.png b/apps/wapijs.co/public/android-chrome-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..5129671074af61051d845fc1edfcb236c16f9112 GIT binary patch literal 11749 zcmdVAQ*>p|6DWM*Ozg}=6Wg|J+qTUU+nm_8F|loPl1$8rd2W9Hx9{P5zjy7mcJJNY z)m>HHRb5qGk&5yXh;TS?0000{N>WrA008^?1OvcAe-*mU<>p@nq=k^25CG5+5C3ii z_4Q9^BB?9~0CpF#-T*h5!I}1^|HVnBA$w`_%w#EF&Qb0R8vm zcb6r9)xfw)$%(<7K;pwNQG5LwpalSE!=yxoR6RE?w>?tupZs<|o;;3rE&*6wCjcQ7 zLO~!UX&-S^Wttf#jZ>s4*|AeBdLqzN=Sr%2%|GdmbfSni5fgv17=yx^J`x|Frj%f` zkXkHC&bF_R7ETBQTy$OU!g!O8rB~rIqeL=+(&svdjQTCh;CCqqF1U zF%I=?rk)3pQUnPWI6l`F0}JIZCoIa#x*}g(?^bkFEn#kod@;ndqkR&1^Nz>^dZ{qBY3QBPmd)!pTJ*|kLVrfPAt&!K zcjNx{{@u~B@h2q$Jud3a?|!F9T<7)-@KTQAX}Qo;3jZ!=+ZT|=Q{cu?DY6y4g61A%Q)CEw`q99YY!I&%CT~q zv297w%jXM)yxME&jVL+-rR=+G8L=jOJ&LOcme+lJA|P)3A}dw;wcDBNLbvU_)*|o^ zgbq%XR?mfYG%FUs`qP&*a0oc$;oKP*rfIfZ-|pB`a2$L4$60g^dT%4lKBj>xR;zmB z9J!7grSWgyLiW`%tohq0ca_!kijU3bO<3-wtNLcd5cAMc_Jpg|!X_2js#cQ3@Kt5A zvUxA80)auTs0!b={2X`WYJ3kH|uzNC_8SdmFrkhtTE*oJLVnPmKmEoFJy;Xrk`AnQFJnE&ilu`>}1oQpc$7ECeepf|G**~woy zdW`#YS#<2I8X%VfjbQMr+3PrN_8v&tZ}pm#PO@6fH|X@p!cv9hu->Z5k6xm5>LH2( zTYUIqX!Xe(BE7jm`u#C>b|i9ls?~Kk`4<)?{jb?q^X=o0BhoVA?5p}8FcFwp<15m( z`3%3So%?s22t z?DB#x+7pBcE_GxQaQw8>}XwPZqD;^v&WWoTUQJJ0iphpCyov{9ARP6%bkn@yxM=z zDE7_W_4Rzsg)DZibSby^z_%G$uepG4dI$J7_pMcKNRDl{xP0v8Hj%!6Bzr;`+Q-+^ z|3S4IOwh2@GHZytwCn@4&|xNkHN*?0f1MMU-iQ~fP~^G@@rETUvskS!@V*a841W8~ z&_RCmYN(k^8eKj2`O=%e_lJpCF1C%Oi>;N8X$zlQV&q!$SmQXA7pKF?ZQLExTkG=b zCo(yFX`Z2X6$rfjFc!C>`8a&I%`=F^SnuY6Un_Q2X;|M5LGVJ(gs9PKdHqZmbW|fkcR(5uq&^nbPBuo(t$Ux`ED9qGuD|Dct^ed6n|IP;y9pr@iUy*D z2KNPK$Mq7T*^tQjb2^I5B1H|=n|uBhc2O%YY>* zCRuB`RXF1o91|zqk-GwOUO;Hxf#o1~*(_@T{h@9SOZa?`8ue&w2R&JI($+cm|Ey!y zFQBsLLcC9)i?Uo=AY>24DTOF5CM9i4HgI^G{NY$uAf=Hd2R`7N-1=8Fj49??wpzJ* z{YxidU`(@E(Y&}NtQ3t0`Dc>KKIwjF$0pOoaXCijCHJAIwC!0Ujl}1*n@pa0mCerF zcYCJ7e|nDEf1sVaZ^s%bOu9m9F7DmxFx7M%IIwH}sleZ8yPTl8CI5ue0Ya%bcB5MA zP!8co|J?QQXO<~#9A;k;YNf7G0*@;l9w<1=eii3XLCwu8qJzv0vG)RDz-wkbYd9Pw{PKnma zzZ}e~oH;$9E^M60=zi)y{ygUm0qn@GP%tGUw3jB3dSJkWUs-IdUMO^?3}*DWeI48M z>!(fbt4JuQr8Z3VQ2yWUk@6cJUKq4UJqME{+&`>dP8^)?Hxy>>^h!UM#jC&Wo|=N$b*oQ=3{z4rK>n{|9A-Wnp*sG{!z4C2^FHT>bnClEB?eXIm+TPgrMb5V(lO>plPGsRs1*Aw^D{Y9lJ>XM3#}wISgibC8|ZE>JFBzy zt966P0!fzhFFY&>T1f5SVTuevV7Frbs@7?-Z8Pkai=%te#6ltnAmk4n<6aEU+5J9y zT{_$jalJkA2@_Tr+3!PEljihUd z-~>rh8?n7iw{~S?nL3EOpHeUtD_TZHt^t`i!d)JJcn_2_$Vd|=B-s1VL+o5Q}P5@ za(-kP)&$jbUMTCbMA#x~^>kOP#JF0hwv;|7=o5PdgNGDHq)b8*Ci7W0q9!Yyzk*tP z0zxTMn3|@!w({W2yQB-4^EvSf!yuE=8@TBy9Ac?sk0f*W;_Tkg0BL;hUS4KB*8u z8$LLV#zbizVau#Uu%RQ7X+C%|jjYEEz}tQl%Z#eQte3F*-S*v3t^sFSDvN&MP!@gR zD0CZLE3(YS`c(IaL-*1hXKy!rXme_{Lg74s(eOrfw{c!sS0Z{7_PY_fqYu)mpZc1J zrf3Ii+;}c@9GmA9`CM%3%Vo3NvmU|`1;%pPz*~?hMjo+Y}@?vZ+IZJ_^z!Dq;A7ELal_0O;&!o1(d2umt+0H^QL448+b zfdH_QBnurKdz7|`C}@Eqb1~rmNhm6gv#$K3ZOLoRh=oVq51-9NNJku-fl|}ci%t+_ z*oHA}&hpK`d#gBET|_=4-CiCusi8#j+O{0w7uvo zNLb$bI~Q#?_g$F7$+i$|U^_~i^efd~Yc`VK$lM=pjX;H8G|)gycn3w(d95k;#b@(8 z4l2!b;YV4!ll4GYU>Z2?8Shb%a9-hO!-kEH0|w*+i0$$IHQ!Ep z^HN%e&E<|kKY&HYI!)#wU~A~<;C`U@Pr>xloHBk=KM5=U>0|;sXg0S?17p-e&0w|I z_GG=ku;?z5HZxg$u`A&N?xjSR=SRe2=;`#Xx0nX)^sgQf(L&<|4ogQ4-Tqi+I#?yc zFE6B!I+k?PQ<2CQ>a4baHd45q$=eH&ka_Sz9S3yqQ}{mDdlFYN%cfc^3{ouA z+^9_wk>LaJyAQ^xX9u6xGL2+|V)f{l#lWN-vpr!%D#f`pbXFTpkF&$YdVgsya+cyb z{N(FuxN0xSvtK^XsB<=FoB#4{vmLoIr~U>ePdlyX(3eZYUV>~$y|~7Ej}^@3gu{mx zbs8-b+&T6Ls*)gX%8?q)MjuXWxVET5vazqDQ!>pevUcA6#{xo&`$-{1twcm`Z+oK+ z<`aW*IXX0-%2o@e0cXs==7UQEkw7Q<%CAV3Vz6DJG`rxcSVzwoShz-=f4I%C`Y z#D~zwbZa_x73 zciYZn=eEZ;PNO**wiWUuCl{Rasy;(eS;dWSOC1|CxvaO!6-{|`i z&-vK~+YW`3arQG$dT}7GVC+j0qS1|Avf%9dn}o6s;feL%m(pdi`5 zUWf&dO`vi3lZd{fAu9OJ>maTS|DAxR$pg{F)jTU88VExi8F`As+O#AF2P?PN%Jx-e){YJUM#gbdt6F0#Y z)to5FP`cFh z5*E0SD(PqLD>pSZ*ebTfXyY*(F36!7x}K+CP3L?+@1c9s>e4oB4Qt#J*XwuY6oFy^ z$=6& zPz{vo1*$A0&Q6(68N3wpWvwJn`k`m74BM!e@ub=S_-=S4{TB_wx_m^94Hu=Z7|HSq zzx%E8?1)x$tXC7&SLdFCJrJ}M_?AJXTyn+YDvY0~9T%@Q25o)oij@D}_d!o^ZTTo6 zd>M-y@g&um&OPz^>!i6SKVh42>+-2R`t9buhIJJrYgqEoLC=zEl zwkDj4%XrpEEF6q7Utj9g$Z!R4dW{;?*B;X&yh6^-X`Wp{k#B~a##YwFcC7}{pF~S8 zgfMK~kN*=mf4M9}#2v}dIAA&^WCvo+Yr^cou9--waBI@85^Sm>k{{r&hhZXCQ7%Ah zJ+F_)*-T=P&?HI_@Sa{q6=K40_&wgAiD(3@>`B39@LBA06ju5*@lq7q9pl9PQK>AY zHfN8We~rCCIQc-#ZWBxVgl)*)fB*u^%<%kP;Mqf{e{OtqWr#5Vx)n93uk)ae=GQRx zu!$FoA~M@P^#crHh`x!Hyng$q6}%JjOj+q9;7UTAegtzzcT(EI$K$@RzC>#roiw|zYd2Vza2q%ciYTW_)lvDz?b=y)m(Q-OG%NLZ zKOD9?Q6Rjv<;(wlmwfZtxO3vZklNg5LV9MU>CORGSm+v>8<%#})(Bn4mQLPszc5mx zRv(NL;?b>sH{_%!?15nCp6j#HDuP5ufNk+_R!XLUicnZYZaf_?;`=i~%9lH%>D#{W z@9g$3iB50dMs63=1?0((y*MlSO@JHp2;!TEp}E|$^FR7h0j3GnGr$g(3ZE?^J$V)x zWHvMb^qaP#ufWMrla4uP^V8TG2_VHRuXDGhoTQFq9K-yO<@tNdYLI~1jdVP4Iz3n2 zYK~!T{2m6#Ki;D?3$rKU<>#hS?k>XT%1wRenk zfZppTKQ8+QtZ46CBLa0oYallj2#Vlaet;n{y-@8(_H&up7`&oT(C(+0hDQuI$%ZGA zg|mOATlK_LC}}7-VDyPPpf$l~jQ|YYi-$A4tJ2q}&*qMNw7Skkz#oARNwf0Y$xJa9 z{#6HmyZv|F_c^U=Q<8s@^+KjJNpby!Wqzy4&jaW8@tb{QoMt%~iMU_tm&^0%u9NO8?>y@I&pf4M6MPFi zSX5nUO4=6q<+V&yoQ?N`GkR_C{k423_#gEs0G7q&7Xv`X9PUnl=) zSO%L#oL!wy-rvq3aavYa>Ods~TZf&+QCW_Q&rv@5|(<0?W->2q+MvZI&Q=@ zjss`6`V<@Nf8lsHc2m?C7Osw z&?k!K=3c{5;0_w4@9S5Lpk)2G{O3bq0l?996T8Dm13rw8cCl-mBmOmdg8Yp~bh@L2 zRfx}G=97o1l*O_uo@K)8pYtWbcnyw$(b^`Jj+ z)djf`dV%*+yw(Zq_n<=zPJMCVa-TkI+AUp9S$S+%v4nr2{kY`NxG~ z>2l#bbVJz@Z$+P1Gurk6fh{*QoLuziaZuJv!_}DIi-}6m(A6*ys!dSj=A9a^l>7nY z3xgT?6e)7mj<7%f&H(ThWZb#&g4V$x4db=hV=_Dd3BUL>8F8yxT-U9|b@VKDf}(#2 zK3dMKKJ8CUKzf2-u-3Qti?l+tLGE{~KG_NgY-WMg=;`4FT>O#y-YeJ|IBlFy$%F^{ zG5>s`Le9UsvfL72oB!vMrA%+ID-ZAYEsLf$LHa%8Qcl91GWc2>Y1LAu-V+&9e`c-_ zZ@SBR-$izP*$i2UG@VXB-IsgykcAc80JWAWB866;6G|GzdaK;lCLgA*2yRZ z&M?xK8#{EB;F@z*-5XK$ZV~ zr6NcyRB3UQw_ocGX2rx>N897$N;Og4cTlrA+Qoqqb#d{*yns1eL;%?8Dmu0f&F1+rq}!G}%0T!tHN zj$aW4>r*#{Dym^}8bUkh+Svj;@Hm_^HXK_Dz5c`+gE46Orkr$Voa+T#L_LAcOt6Vh zk2IVt9_VmH#Oc=aj%;0#R3UDr!K(TGa;9L5ur6s6FGL&s?f;_64UmtNvDbbcfP=mb zKAO{Q?w7M(NTNAIV_=))EcA#}Fd zFTn^Yzo9ipRvGlrx&fl*l)L;8X9~BWTk)>(nuZkp4km-(w+-97+t+|ttuUg3A1uel zXQ;tn4}N22mK=1}{Rh=?Om#M+U1&w>bvyE2Ggdm(FXx?GpW%FOWVYV^NiX<&UV^5~ z0eqZsJs)Z+_{~JDNE}2S;bh|67|layG~QdIw4YzIyGMFp9l(JY7y36ISU~u*cD>?{ z>$;90Rybei=S}F^#j#9t3!9Gwmn+Q7^6vIJrv~$&rasc)H=yJ|x^26D^CXAG5gceCB!m7flBr z5HPB!sq@*d5@nIAfb6cIqfmGz%Q%q@{HY_tmJB5(C;G^JuzY2H9hK=#u4D7uuTEKJ z>dmu6Nc~|O+C`*=gvms*%BJT1f=c!IW6Gl3TN(kEgAhQMy1CAL+(te`Y@%gGReP%S zauKWFy#Wh(nO%-VK&fV^fi2)hVLtto`h+dix-cn(Tkr!eX@t>~{5WSJig*H|gpzBI zBCWbGEDpb)wesY0zohEp0Or92XdJ*>nJn|Mk<&Kx{_VW5Hcqd&C7&hD zjr!1tVJpDW`+?olyMhrd0?rY9u}ImoSex!k5W;ynvG0RfokIl=!TLHhCI~v&8%5h% zOl_ySF+W zr$=fuHXU(nVQE_PtAgV5Y@b5X!61kknig$~>^WuX)5!NDtlVq8isi`%;AoH2Osf-C zqiaGZ_18l7was+-v0??`RSDzM?{040BUOQaHVBtqcJuU$6f48OXv4>ky^F;Hgqx;j z+;&O#HZ}0rwLksD_LY$VGja`SSN0)vko>UKS&71u*Q6nNh=m7#x#0N#oE)LrY4p>| zN15yp*OhmSRO?YA|AquqtgrKFgZNRXwoHi_1LV@;1|-0;v!sa<++9cJPv*oGYt#b3 z$`A<>)+)xJ>B<*lx%-iBLkzwS4IE-IALXy1Qi(x|$W<^2ek z^<4_;NzR07R26~Fh&h*iC%OT%_KtJY86AK!kee)F*^>htm!_a3Z2&i1en$1uijI3w zmM`H6m$@&R!MpQ@ayJ}Ql;QPVJ+iEG$5KhdrqW?#GV-1xQP`PH?J?N=yglfnS zA08_^W(t~gz;Rb=1`%li%LBsw=Lr4!q4ga(T5^u>E$F|cfg49KGC}25ldv8v>HBH; z?y1O`5G7)sZF_lj6)j6)e4#pqmh^6TDC_5?{l94n0jTWRXlL8mt>4;J94QDR@A3l) zYv^l&kXC-fTf)?D8ogba>b zmu;DcZ?Q6G*!Sos!Og4n6dTy|@7y;7CuR$&UjL!?kRzaAv+7Hl+c0)j)&Ov%sxhqs z80cQ!u@@jy7WX1N_HK4|fhZgq?X3D2QWh%GlR}>v^IcSENdwDK@+98L*4ZCaY5=s* zI|#3Q1)!*P7&Jo)`1Juf<<9_B907d3Y3|e6+;u5^tI`{NZDzpaM@L{IID~=Vz?55#nW^ zN4Np(ZLv~4JefG*5Wa&NPp|_S0O1vW*!$ko>GyX>7T==s&Jno#gU!x*?jT)Zjbw{8$_e41a zPZ!0G+lgw@GQ=iGp{1xP%YMI_GH3;#wDT)X8l>Ym@`W->IV&rqR_q?a4c(s3?Uom8 z3p*wpyore$V;7PYYCWDNw5~{+W^vQZqJDVw@{JeZip_i`2nt9io4P~3CaPXS0KxOU z|0$59h|P9mJ|e9|1{G_R=rU%pxjSuEyMU3`RkeljR@EJ9Y>6mAu0 z2l>Hz!*9KN*rroT{>2e}60GXozV5fje|PZMJ@6&H2wT$ZOr<|y^I5>$jUGcw)v7?; z)agkJ@D#W_r>Vti2-=wU{i3hGs_~MQo2?(tkC6y|V_O08Q|v&PKoz-5{4%(^jR2I1 zI3iMy=}Pe0!9ER`XNOC8 z>^SVr%^$qZrqUCb-xy^=w99XaFtzhh2#k%p1HLRq0a^<)*AQVH8Yf*|yoF+HRU5!} z=#o9KKE1!%X|x5*ys|n^K^&5QGy)$qp2wVv12Bc1&8zD`b;m8TV%ndwAxd(UC1Zu# zrXBCrr$ai(@A4R8Bra(T*A+;}W%%&e)beOal#QYxlr^=3Ynl@CkH#@T7=TBM3Zb2y zU6k~}wa^y-xB^}Jy^Ecmo`SlB1hRtKy!cFRNlO>}9;_BfgwEj%_WlZGVVOFWfc?NG zNgk>Rt)3X}ls)DNZ1aqABe)WrMw5$~kp zHkl_8iNj;c=%&NF$xTk*%`su6)Ofv~0Rn`T@tSNd-Nz9aAB&jUv*>G|9ccSV^uGn= zP70CkhX!7Qx5(bUorBNYXQ{GZ`o=swC979Lj9b1C42=TAfoB-G&Vc8b`dvI5n~ngP zq>z6v1@QhxXE*{ga>4V?zm8VafyZ*ReeI!>y=&k%YC~lZ+$@h#+sUXq>q*@do$U3(~)gWvWt2yOoIi(LB?tT^xQSPhJZAFzNGy&SSiQhaRmgn{mv% zSL;0)1YT8g><9?zXsi<6d^7ys9&L-*M-vNfAoPmtI%@EV+-d(7YMWWyFYn=0Ki9XlDDT>Q3q=57~}gAm5_!&Fzv3cT$oRi z1&*l;2TRKCRnt4PaiH>fSu+3@g|kYX^6x#`ap}&iyn66{{_v&D99%;D=v?GwP2Xo5%dutOkX0 zN#2dDxoCKaZ-|WbaO{|Eb$}k2Jvn=|1P9R>ML<&r#+e>(fj~eNV$HlFF!wxPI=+lv znVq%WqfP2>&RvFe+;0PzVIzn7gg%|6DNel&tUA6#)`xJcMg4Zuo8Zr2Z^NIGR_3fX zyY!_-buYo^kY5iZUr*R@>$o(zIJgf~qR;<)nHjaT3DXla5PlhaRL|K`@lYm*eZgO; zY`$)H|4~Zbc@D0{UhtUyiB82(@&lLcASE(qfFQDXGymAK5MKp2 zS)p84^eD@}l9b6@#WY<_ja<#RO`OfX3IH=BGbYh5)-PJQaQ`Hd~YKnN+RM-Fj01v7J(R#*)|4dBK^C~q45_kr*kFu(= z06=XV&OcN1XPLoVNlO&~@MZx30zLx(_s^<;T>!v?4*=LV0RSY@0RVF6>^99;&l?~! zWkm?!=|3aC^IOuh2E!eyDvz;?MvKAEz8;^H3INcGLLss+_~KCxB3XL?vF>lY((ECM zr|N|YL^HD^i%F&7j_?m6O?nxfr2o^*?)O9yPD(E6rz0 zpR}4?h-DO0TXEybe?D}3$Q){TkPqfHcvLJ-Ej*eGQ@7$EZ5W==t&65gI0-GkmxK=R z_&?G$eRzn8bl{r*B&yRm8U6{>vU-*qYkKF@J^MC<+@pf!qpMckmo?a>9O;Q=uji&( zig+He?-3-$Bio1m2IYiKJ}C8AG7>Qrq2Uq1X1X4Y;wzWR4w^n^2|S_9?hr{otvRrVzW zOVn#R(n8n^MKrVw&_62YkWDFvcPT|SU-3wlp~@Z{_l9gwo* z!%SnODxM~MD;nUu=<TDczDYgCA?B+dsZ3;F8 z0c-)kgHi!eb*UJko1xmuZ;BR+t?@pocFcwyO4dzbhg} zuCk_~-SwB0o+d#jY5I~ey&{f*oR=kj@|Aw82ET+H-tZmM@@7$wF#9iGf7&0UiXp86NbLBvKMwxt!>FpOc zVcf-KLh*TQHHE`|Jg^pAZ7aH`iJxRdglPKFf0cikLuRQt?OUz3wiWW7z)MHFABrC0F>FEno1Frgc>OiV{Q2l-LVGMZF@pW@@UCv-^j#Kd zAC*DFz51ofx@!b8Hil0q7qaP!j_pdW5ahZ-aI9saNG0sg71>iqWg|NNMLT6F_&bxE z@nbN5iQlq*Sx*>DcVz1?0FINCNz=WsMA^maqnd&Rq$ z*kP8Ww|J1W!lFtRS|?2R!VrP>0Pa|iQJ8x!spVOJ!P*;W@|h^`Zoj=u*M?Ly4LVFc@)Ij~GPOCt*(sDI-jo#N`PYm}Q3-Ui^C9KT0MdD;5go#i9Be9^rwI>}qXp?%;YvpfdaquJJN+66 zuM|O3&=F`8{$n3;WVW7B@TdhSmv{%^@u={U)G^Y+f+HSv6}d{-fN7eBNBylT3Rkh8 zUf;l4_2}ru3GQW|&^NBezc?A(FN#zLiUlxaMmx86({p%Nnje8$B2>Pb{%8_@Xy^4e zQE}Riq4XX&$6%jZ&@)9vp6E@uHVSMV+NlKa|9E5agYEAk@IH1U?KUXPHN0tLlcK{{e)QoGAb#2 z6en7`BZ_;d+vM5|=3sjj)qd|75!tXW&f^o+Tn%c(Y)iK=7p1Dh)LncN|DopL-D23%Ua^}DBiq(=O_j;&Hu-(XaO(DKDv(FIx*Zs zSS?0G63Y8OF|%IqgLz}3WVgc^4lr1+4k}Pd-?H$O)+;T)`~V+%TO%DS2SK3iy0tV> z&KNUM*{LHhOSFY%0XH$Cn0@bE4n>byiSQq}CS6*PmbFKn2x_FZOMD2_{YAQcUaWsn7}fmrmQ zTZwq3)IQTT=n{AFWgVyL<*c3;8+PH`CLNYL(Jo!wYy46_Ep(VDu)1~nW!aH_60teA zPB-=i^v^J5LhspCF`J~mY2WxYMn?0)>MyEkL`z1Y9E_e-#k?h4c9YZDtHK~`Tbqv! zrBEXL9IWA4vPlH1!dJVjGg+bv8?hZp%(1gx`b5qWFJ4vwViD7E5!3IF?fgBC`yd@6 zqe>o2O&MbM#?H+wB>uMH$t`o@61wgWSkh{8-!4=w&kQ=fWRXil@xcEe6+YPiHtWap ze&Voh z@N`b?E6$dITp&%2Y|R|V{Nz-6i({pifXtpfe9I+djj@x_6kmZ?^D>3&tMjlwGhWzq zdRX7$b~hgTa5XZZRPQLmcj(hK{bD`tp!o8QM8p_M3N~?r!L$XH#<4pEY5+3>FPiCT zeZ$Sjs*8$sVRA2hx_sie( zan3D{;a(@TcJFmLj&bkeJuBb@#8{bP9NJST+0c4y^l! z(6AOE{0g}`)Itd}Gm*=Vx(~uOD2Bv1@-SklIGcWBqP~j$*wy^ND8v_B_z&33FiR%u zga;ZK71K-tEEcq&UCKiI!*_4gAN&CKsL5TZ4+tW$xKRn$snmoYP>W-RrL#6(Wa6$ynVvr$gD&^0gUtmf^wg16336?QC8d6ZCcH^0b#e>;#i~pL*X&a%UbdOoV9e^TMBhR(!U2DgOY% zhRA&Z%2ok;&gWc0YJAz$Hxn!5^@~H^=p^bpXhqsx2ilX{)o@@0e$#4dWGWlkBJIQ# zl}?bt&T8nfsE3bm2rwZ?9S0nIjow(~C=`^5e}t35=3m%*mb}PcnTJP2Fj>)lGDJr@ zD%`G77#`cx8+xqRaCC_%&cir<^r95tTd)3j}S*z&cv~>;sNcinmkF=@zM;rufbdP1EYf=_5rg`Pnje z?~)3N+-%xL4I1-<_7r3mpufZ7XBE8@SbDM*o@kiPlS{Zgo1R`eWa*+*psuKIdz|4W z3b#c)A_%rAg)ONeKTlf7y($Vnzl^HrT{-dy3s0S~wp*HQAHT!x-TETRBp^wk7JrNb zf}ST!j^Gh@IoK~B%;(|AN)M)?-_?e0QqyPjklCmOtjKr=Is$bP)Cgh=?sxa3KR2l` z{NPj=<>A0_r`r|{kjKAi|A3p-N9D;w|43}DS*N77k>+x-0%$Qx2@4NX_GgdeLlI@h z>lW7Q#JveGJo}2X@-_qy|?Z>|_4D9Flb7N=#K*uqyjr5dez z{b*V>!!a#3qW!_;=nkm;xZ1Jf7b+Ad4%OM`aIR7|Broq1=Z;e+ zXL9-#$3KZ2MdALc1s5L1 zxZIF$?$Jl{2|pW+PQkK;ge=H9uiGVLPUf1iO+DeE{-czO>r(6s=iNo=??`jhV%$E_ zp~Q78qJd*uEd(Avq^`EW@0^i4r?Oya<$G#VYQCG3Lz7n+Q=gden0B=4P8)kt1;RIl%kV&u1 z9}v1xP#WZ$n=xQQxonH#w#gAz8q`L#L(82O15{=>k;_WL3r_=aG|o|GEEfH*G@q8@ zrt`GzxEOdNhwY*rDG7q?`Ao(1GGDouY~)^dnQiQ7V@?$m=5%itSy$6revrLacqPS- zZw{1`oy>BH%kT*T7rjgD=aotY^KHy2`S0L%UnOpR^Hdc*dy*A zoh&`ME~*;`>0giCU6|rzP(UozlV`@F)$-%Y260F~(iD(`mf$sD{4h;ioX+B>u5RY ziYqsd1%?FvJhWs*q7c9r^A)vn!qXrn#yj)9Mw-6}6^Iww5AD?K0?=v8YtgDH3ddTo z8pOXG-5%W0+70_G4u}{pXH2U)f)b+91n6fDp#N5l~r~Fn+uHFsbK-zkSFcR3rP);VUfLZvh>@c8mCg zGS5+an8LwS?Acu12S#Ai^-Ddi2n6<7(GYu0H#aaSoQM0VR6f*}RcYTA_N~BDfc9WNesku4J zgwoEjSY2;IPOuMyJ=>{Lc7!ssxTJQQqIT{8w>Cw$Ju(Yz1fJe=QE&BYdL^c?3+Equ zMDA<#^KCA$|LhZ88pfKmiNKbjoq3gWAA2-IB-6RrbhR|Dlb*-Pt+t)&k*Dz$l= zmE374UZ_c7>>{Ky?FT=nqSt}6d#8Mi}S|0TF7km*>3+X1M6t!bajY^5k7GdT-!EEZVx4oDQ zOoAojz?)K%%CVQ+kN+`{jGqGQ z9(qpKeo8eQRb}3FFvyEpcgKvI)as9R9lqNnWNWJ3N#~_I$)ky2FLt?9d&3kyh`%h5 z478A4t3(TNo1LthX#CAk8i1Vx8%MOD&-3n0pH&IU_MMMEVn@b*;l;Os?8*l}uWXT`j& zF8h>r84T{8bnAx%hB>=Yi$Oyww1YpaOg9R7p{y}PY|?O4o;t1{L|&7$bCw;)0`h*m z#O3bOy?5~MDf;-Y#4b0QgOcA>()mS15sWy(zytLZ&k&nlur-=2PP^QOmewd=YFs4; zrtZ{KrEgMIrbbkt$nOJeWWDE@7^RD2<@O7`E-tKUM9(Lj(U0a5S4IFrRE=vmSwQe@3lHe}`+OZ?t!cqYCN zx3NZX1UkaDn@N3Ja@(rao(9A6PJC|j;J%wtPEBqFih~!|42H%SP?3ro!E=Zn=sV6~ zTqJbV;d^5W-{4zDj;FGc*D?aX+Vg%TjxG}`jTd$7HO5SMydeAQWp!}iFf9#$nd+Uv z-}9GE%YRvdTuqdII6d1g@q-rL=6rUd;_a02=}&G;B?};fNkbFO+fqlh?4&DY9Thf` zz4FMdC(<=rwum6yn4Hj5$`rPQ?8Xal#Eq$Xq@5$tjHEEGO{U}=PQ%B;cs`5#Pc*PJ zt-FfhO<*25JTLN}B6N1Y3rbWiPJ~X_$*4O>+VkD0diyk*HfSo|3Ey5~pjs95mtgQL zu*!Vvt4I>g0yT9k${O=ff>g3krKY7ROKK`Iuh(AnD^ppXIo>x86MJrVI2n z+p-Mt7bL=+-Nx2r=de53*oZ5*0Ul8b3h1!E>Y^l~-xFdbQ(=J$JdMcc7Z_{%1j?12 z#RmR(bcl2;bFx`*3>rnzSn}FB)KK9?=JFSv%=7POW}*1vCwO#Mi@nd4yvo8I)w#UH zB6^5)jN05~1wJ8>Q*AiN$73)P(oX!9`P+FzNYFaPa2nM0ZCom7oeKGv^dXn@!6bRa z3j0?QG1~uTgN@6q(hQ64-7Q+9q!u$EwdmfGICbr2Vd6Dpv%zLH?PpT#V8up}>p;oXHR_8H3*$`%`Rb%F=<1 z(D0M=FqOd=9ab)0nOVR#EX$}h5~E@jYa15SWJZm_05&B|>)Q6rWX?SbmF&l;B*Sm^ zneWG)By=b~mC!6zXn&<<;(zP>@o`U)jkW|19veJT$pP~H)bo+__SBGpa);H)hZDy04W=s!#riv{ zp1MIGzu`gozXIZbH~i-bK|mFfE8F&{*nUbunMQ(;ZS~;Q0sYqRSDx!q9&wMm-`Viz z=9-%XklGLS+_thdnlsYOP#?bRPQIymKSsG7WwXj_FM93#=Bma<@>}X@zxZK&)4v2~ zKwo~%^w+eK$T&QK6VQX0+@F$msu}4K^wzb|;cuZapTP^MMmqD#Ovs-OfcpHKexe&x zX*>HISEXs&5()InPMBJaG1Jh(Z}fY!H$4I(Nj8uxRNOpg!gY!A>rQNAJ6qerZ{NO^ zUBejh>mFp^Ka#JLDa=}r>df$>lr#NC1=ruA^Inf`%lq&iU<2IG6GvL3-XLpBh~0Pt87D zSfmS=yLK`=m)wA_YKg+{&?COo==|YK4LHHN*XMVIuj?hE_CAw(d)b(<*-)fSwx&Dd zu+JwHaHXirq$)O4L2d03Z!HZEUtg=UdF9x48C*rYgks;J$FEVx=eu1@iV`p03P1A; zl2}XaY*@k(qg1b}d*~C;s&ZE=QUdY{?!|?t%r_Tvg7x+#hd!rT-M`)V<*_iz61@!S zAa6+kQ@vC-lMxq9DtlSWkPFCVjS&3@CEV*9IF z$P~chyj+If#G+Lks{;crARoJXaW6>H7n73u&*}Ha-Kg{pv@fNl5n4Qo1Ovp{=`k^= zV>^G!_fNDCM2D!6u)wHw{IKWBhDb)4CMq|=`xMiQ>PUr5|9vi}q&gm4js09-E^5FM zc0|UTAuX+Lj_>%Zjq~MdI%IrohoOP=k&VHq0emU)OF(hdT<8vAe>{=C|X@t>44%i)a2bjI36 zk5wY-e29)bj8@$V*KT}1LS?qqJH9vY@#5zwazjB>AdG_wWW^iV7N+i&66UU!&j1kM6A1jRyOvQ4DJYL zO9mTfcXI#$p1paFi|L}n#x|@zG78<+0-!SE@R;KeGZQN(k)RSYKmvq*TA(u5!x%>9 nrw4mSdue(xMgo-b-|_(V$qC)h-w3BXn*c!N)gV=GOoILg(Q&O? literal 0 HcmV?d00001 diff --git a/apps/wapijs.co/public/browserconfig.xml b/apps/wapijs.co/public/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/apps/wapijs.co/public/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/apps/wapijs.co/public/favicon-16x16.png b/apps/wapijs.co/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..416d14866bed1ac5c22b8192b037a33aae543636 GIT binary patch literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>`W@Ck7RD$u-~p?)Pz z^>Uipl{9vCUQS^lAe-I@>;Qt6Djked+8d*KHC+|2dbR5r>>Rwj2J(tKqZQVNfsDPD z4)hlYiGWE6n>h0S|Npyc7)}5~DzPNU4;1PkkZNGzp_Cwz6wd5Wp02*NZ}FkhozBm0 zDD>}Lay0Ao$qUD7s}9EW?$Um|ZsKRZ-KVZDnsOx1;BW*-O+cqkhfPy2OC7#SFu=o*;l8d-)Im|K}xTA3JX8yHv_7%ZM( z8;+tOH$NpatrE9}OJ`eO12u$Kg+!DDC6+4`6y>L7=A=d literal 0 HcmV?d00001 diff --git a/apps/wapijs.co/public/favicon-32x32.png b/apps/wapijs.co/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..2490f78a831314e1d380b14bb8a3b755add332e6 GIT binary patch literal 1687 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+081Ji;4pAc7|0@W+&s+ZH` z&c&-$6J%j$7GUF?c6FA>hI5Vym$yi8Ex1&ub@<|iwazRPu4Po-m9qZS zxNxJ%o1?}b{@!|KxW2*sU%#1Bz=WpMrWGwG?=qTI$rGBbw zv*o&@ORZQ1m;6a*~AX zdG5~{Z{Ent%zZb@V)vcW)TDyq?;pPGs=j{v`1f^elkdm=XZY-(wtGQ>@#_h@7w%GE zbxJHhtSqDCyy(u`#jeTkjvc$(%dY9+;nSp*uxZEaIg94bnl^8u=7XHa6Gf}dt<|sF zoj3TO$9RNm*`X6#cDqI%RW0|PdFox-42!$GeSTZYHP)|KvuYcY_KLt=(b3C;>bLK3 zJoI~AVodVoyJ^oCJUB4z+O}_e8=CxP?vB0tCab)NHEU)G-c)G zW%p+vJb2)wN%6EMj>*s7bQV85H(USQku3>{hwr#{i|I%1>Ph_BH8o}j(~Rn?uS`#0 zTNk~bad}hkY_t5EyK;Z?$y~B7&%Lvy`ux4x-~0(vpIcVE_%Ly;d%x`cvPTwW%w=i*`Mo`*zxnh|KIC99kC~P8ch($ei=|hcvVP5Nl;?BLP1e}T4qkFLP=#oszPQ#3DEkAIgdZ_a1@4VXq@stea7=? z5CgL^w_Y;0u(GiCWD#az1(ybs!zs+ln?n>%-?(z($eANDN7zp{cr5VJV|XPlSn|oq RbSlsa22WQ%mvv4FO#p%cmwo^M literal 0 HcmV?d00001 diff --git a/apps/wapijs.co/public/favicon.ico b/apps/wapijs.co/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1890ea757579f0ee06fc4bf705b534e6ddefff7a GIT binary patch literal 15086 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 + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + + + diff --git a/apps/wapijs.co/public/site.webmanifest b/apps/wapijs.co/public/site.webmanifest new file mode 100644 index 0000000..de65106 --- /dev/null +++ b/apps/wapijs.co/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-256x256.png", + "sizes": "256x256", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} From 745a2d3a4983f31ddb09c3e950c5d896f4e13348 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 17:17:19 +0530 Subject: [PATCH 32/52] feat: docs WIP Signed-off-by: sarthakjdev --- apps/wapijs.co/package.json | 8 + .../src/app/docs/[version]/[item]/page.tsx | 125 +- .../wapijs.co/src/app/docs/[version]/page.tsx | 13 +- apps/wapijs.co/src/components/sidebar.tsx | 0 apps/wapijs.co/src/constant.ts | 13 + packages/eslint-config/package.json | 2 +- packages/typescript-config/next.base.json | 1 + packages/typescript-config/node.base.json | 1 + packages/ui/package.json | 6 +- packages/ui/src/index.tsx | 7 + packages/ui/tsconfig.json | 2 +- packages/wapi.js/api-extractor.json | 7 + packages/wapi.js/docs/docs.api.json | 14565 ++++++++++++++++ packages/wapi.js/package.json | 6 +- pnpm-lock.yaml | 1727 +- 15 files changed, 16140 insertions(+), 343 deletions(-) delete mode 100644 apps/wapijs.co/src/components/sidebar.tsx create mode 100644 packages/wapi.js/api-extractor.json create mode 100644 packages/wapi.js/docs/docs.api.json diff --git a/apps/wapijs.co/package.json b/apps/wapijs.co/package.json index bf137a1..bc61d8c 100644 --- a/apps/wapijs.co/package.json +++ b/apps/wapijs.co/package.json @@ -11,13 +11,20 @@ }, "dependencies": { "@heroicons/react": "^2.1.3", + "@microsoft/api-extractor-model": "^7.28.14", + "@microsoft/tsdoc": "^0.14.2", + "@microsoft/tsdoc-config": "^0.16.2", + "@react-icons/all-files": "^4.1.0", "clsx": "^2.1.0", + "cmdk": "^1.0.0", "next": "14.2.3", "react": "^18", "react-dom": "^18", + "react-use": "^17.5.0", "react-wrap-balancer": "^1.1.0" }, "devDependencies": { + "@discordjs/docgen": "^0.12.1", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", @@ -26,6 +33,7 @@ "@wapijs/tailwind-config": "workspace:*", "@wapijs/typescript-config": "workspace:*", "@wapijs/ui": "workspace:*", + "docgen": "link:@types/@discordjs/docgen", "postcss": "^8", "tailwindcss": "^3.4.1", "typescript": "^5.0.4" diff --git a/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx b/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx index 9b4ced9..d2399d1 100644 --- a/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx +++ b/apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx @@ -1,5 +1,124 @@ -const LibraryItem = () => { - return
+import type { + ApiClass, + ApiDeclaredItem, + ApiEnum, + ApiInterface, + ApiItem, + ApiItemContainerMixin, + ApiMethod, + ApiMethodSignature, + ApiProperty, + ApiPropertySignature, + ApiTypeAlias, + ApiVariable, + ApiFunction +} from '@microsoft/api-extractor-model' +import { ApiItemKind, ApiModel } from '@microsoft/api-extractor-model' +import type { Metadata } from 'next' +import { notFound } from 'next/navigation' +import { Class } from '~/components/documentation-item/class' +import { Interface } from '~/components/documentation-item/interface' +import { TypeAlias } from '~/components/documentation-item/type-alias' +// import { Variable } from '~/components/documentation-item' +import { Enum } from '~/components/documentation-item/enum' +import { Function } from '~/components/documentation-item/function' +import { OVERLOAD_SEPARATOR } from '~/constant' +import { getMember } from '~/reusable-function' +import { fetchDocumentationJsonDataFromSlug } from '../function' + +function resolveMemberSearchParams(packageName: string, member?: ApiItem) { + const params = new URLSearchParams({ + pkg: packageName, + kind: member?.kind ?? '', + name: member?.displayName ?? '' + }) + + switch (member?.kind) { + case ApiItemKind.Interface: + case ApiItemKind.Class: { + const typedMember = member as ApiItemContainerMixin + + const properties = typedMember.members.filter(member => + [ApiItemKind.Property, ApiItemKind.PropertySignature].includes(member.kind) + ) as (ApiProperty | ApiPropertySignature)[] + const methods = typedMember.members.filter(member => + [ApiItemKind.Method, ApiItemKind.Method].includes(member.kind) + ) as (ApiMethod | ApiMethodSignature)[] + + params.append('methods', methods.length.toString()) + params.append('props', properties.length.toString()) + break + } + + case ApiItemKind.Enum: { + const typedMember = member as ApiEnum + params.append('members', typedMember.members.length.toString()) + break + } + + default: + break + } + + return params +} + +export async function generateMetadata({ params }: { params: { version: string; item: string } }) { + const member = getMember({ + branchOrVersion: params.version, + item: params.item + }) + + return {} +} + +// export async function generateStaticParams({ +// params +// }: { +// params: { version: string; item: string } +// }) { +// const documentationData = await fetchDocumentationJsonDataFromSlug(params.version) +// if (!documentationData) { +// notFound() +// } + +// const member = getMemberFromDocumentationJson(params.item, documentationData) +// } + +function Member({ member }: { readonly member?: ApiItem }) { + switch (member?.kind) { + case 'Class': + return + case 'Function': + return + case 'Interface': + return + case 'TypeAlias': + return + // case 'Variable': + // return + case 'Enum': + return + default: + return
Cannot render that item type
+ } } -export default LibraryItem +export default async function Page({ params }: { params: { version: string; item: string } }) { + const member = await getMember({ + branchOrVersion: params.version, + item: params.item + }) + + console.log({ member }) + + if (!member) { + notFound() + } + + return ( +
+ +
+ ) +} diff --git a/apps/wapijs.co/src/app/docs/[version]/page.tsx b/apps/wapijs.co/src/app/docs/[version]/page.tsx index a79a1c3..d79bc87 100644 --- a/apps/wapijs.co/src/app/docs/[version]/page.tsx +++ b/apps/wapijs.co/src/app/docs/[version]/page.tsx @@ -1,5 +1,12 @@ -const VersionHomePage = () => { - return
+import { fetchDocumentationJsonDataFromSlug } from './function' + +const VersionHome = async ({ params }: { params: { version: string } }) => { + console.log(params) + const documentationData = await fetchDocumentationJsonDataFromSlug(params.version) + + console.log({ documentationData }) + + return
} -export default VersionHomePage +export default VersionHome diff --git a/apps/wapijs.co/src/components/sidebar.tsx b/apps/wapijs.co/src/components/sidebar.tsx deleted file mode 100644 index e69de29..0000000 diff --git a/apps/wapijs.co/src/constant.ts b/apps/wapijs.co/src/constant.ts index b195ab2..d9e2712 100644 --- a/apps/wapijs.co/src/constant.ts +++ b/apps/wapijs.co/src/constant.ts @@ -1 +1,14 @@ export const metaDescription = '' +export const PACKAGES = [ + 'wapi.js' +]; + + +export const OVERLOAD_SEPARATOR = ':'; + +export const METHOD_SEPARATOR = '#'; + +export const IS_PRODUCTION = process.env.NODE_ENV === 'production' +export const IS_DEVELOPMENT = process.env.NODE_ENV === 'development' + +export const IS_STAGING = !IS_DEVELOPMENT && !IS_PRODUCTION \ No newline at end of file diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 2c23dd8..c37d311 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -9,7 +9,7 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^7.7.1", "@typescript-eslint/parser": "^7.7.1", - "eslint": "^9.1.1", + "eslint": "^8.57.0", "eslint-config-next": "^14.2.3", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.1", diff --git a/packages/typescript-config/next.base.json b/packages/typescript-config/next.base.json index 50940ac..eca1d75 100644 --- a/packages/typescript-config/next.base.json +++ b/packages/typescript-config/next.base.json @@ -1,4 +1,5 @@ { + "$schema": "https://json.schemastore.org/tsconfig.json", "compilerOptions": { "target": "es5", "lib": ["dom", "dom.iterable", "esnext"], diff --git a/packages/typescript-config/node.base.json b/packages/typescript-config/node.base.json index d6fcb57..d8b3ea6 100644 --- a/packages/typescript-config/node.base.json +++ b/packages/typescript-config/node.base.json @@ -1,4 +1,5 @@ { + "$schema": "https://json.schemastore.org/tsconfig.json", "compilerOptions": { "strictNullChecks": true, "moduleResolution": "Node", diff --git a/packages/ui/package.json b/packages/ui/package.json index 458e0e9..f377f26 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -27,14 +27,18 @@ "access": "public" }, "dependencies": { - "@headlessui/react": "^1.7.17", + "@headlessui/react": "^1.7.19", "@heroicons/react": "^2.1.3", "@radix-ui/react-scroll-area": "^1.0.5", + "@react-icons/all-files": "^4.1.0", + "bright": "^0.8.5", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "framer-motion": "^10.17.6", "next": "14.1.0", "react-icons": "^4.12.0", + "rehype-slug": "^6.0.0", + "remark-gfm": "^4.0.0", "tailwind-merge": "^2.2.0" } } diff --git a/packages/ui/src/index.tsx b/packages/ui/src/index.tsx index f4d7d43..1a13b2f 100644 --- a/packages/ui/src/index.tsx +++ b/packages/ui/src/index.tsx @@ -1,2 +1,9 @@ export * from './button' export * from './clipboard-copy' +export * from './dropdown-selector' +export * from './selector' +export * from './scroll-area' +export * from './markdown-utils/syntax-highlighter' +export * from './discloure-section' +export * from './table' +export * from './callout' diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index 6318a98..7774643 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -1,5 +1,5 @@ { "extends": "@wapijs/typescript-config/next.base.json", - "include": ["./.eslintrc.js", "src", "./prettier.config.js"], + "include": ["./.eslintrc.js", "src", "./prettier.config.js", "../../apps/wapijs.co/src/components/item-link.tsx"], "exclude": ["dist", "build", "node_modules"] } diff --git a/packages/wapi.js/api-extractor.json b/packages/wapi.js/api-extractor.json new file mode 100644 index 0000000..557cddc --- /dev/null +++ b/packages/wapi.js/api-extractor.json @@ -0,0 +1,7 @@ +{ + "extends": "../../api-extractor.json", + "mainEntryPointFilePath": "/dist/esm/index.d.ts", + "docModel": { + "projectFolderUrl": "https://github.com/wapi.js/wapi.js/tree/main/packages/wapi.js" + } +} diff --git a/packages/wapi.js/docs/docs.api.json b/packages/wapi.js/docs/docs.api.json new file mode 100644 index 0000000..4b7ae77 --- /dev/null +++ b/packages/wapi.js/docs/docs.api.json @@ -0,0 +1,14565 @@ + +{ + "metadata": { + "toolPackage": "@microsoft/api-extractor", + "toolVersion": "7.43.1", + "schemaVersion": 1011, + "oldestForwardsCompatibleVersion": 1001, + "tsdocConfig": { + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "noStandardTags": true, + "tagDefinitions": [ + { + "tagName": "@alpha", + "syntaxKind": "modifier" + }, + { + "tagName": "@beta", + "syntaxKind": "modifier" + }, + { + "tagName": "@defaultValue", + "syntaxKind": "block" + }, + { + "tagName": "@decorator", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@deprecated", + "syntaxKind": "block" + }, + { + "tagName": "@eventProperty", + "syntaxKind": "modifier" + }, + { + "tagName": "@example", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@experimental", + "syntaxKind": "modifier" + }, + { + "tagName": "@inheritDoc", + "syntaxKind": "inline" + }, + { + "tagName": "@internal", + "syntaxKind": "modifier" + }, + { + "tagName": "@label", + "syntaxKind": "inline" + }, + { + "tagName": "@link", + "syntaxKind": "inline", + "allowMultiple": true + }, + { + "tagName": "@override", + "syntaxKind": "modifier" + }, + { + "tagName": "@packageDocumentation", + "syntaxKind": "modifier" + }, + { + "tagName": "@param", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@privateRemarks", + "syntaxKind": "block" + }, + { + "tagName": "@public", + "syntaxKind": "modifier" + }, + { + "tagName": "@readonly", + "syntaxKind": "modifier" + }, + { + "tagName": "@remarks", + "syntaxKind": "block" + }, + { + "tagName": "@returns", + "syntaxKind": "block" + }, + { + "tagName": "@sealed", + "syntaxKind": "modifier" + }, + { + "tagName": "@see", + "syntaxKind": "block" + }, + { + "tagName": "@throws", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@typeParam", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@virtual", + "syntaxKind": "modifier" + }, + { + "tagName": "@betaDocumentation", + "syntaxKind": "modifier" + }, + { + "tagName": "@internalRemarks", + "syntaxKind": "block" + }, + { + "tagName": "@preapproved", + "syntaxKind": "modifier" + } + ], + "supportForTags": { + "@alpha": true, + "@beta": true, + "@defaultValue": true, + "@decorator": true, + "@deprecated": true, + "@eventProperty": true, + "@example": true, + "@experimental": true, + "@inheritDoc": true, + "@internal": true, + "@label": true, + "@link": true, + "@override": true, + "@packageDocumentation": true, + "@param": true, + "@privateRemarks": true, + "@public": true, + "@readonly": true, + "@remarks": true, + "@returns": true, + "@sealed": true, + "@see": true, + "@throws": true, + "@typeParam": true, + "@virtual": true, + "@betaDocumentation": true, + "@internalRemarks": true, + "@preapproved": true + }, + "reportUnsupportedHtmlElements": false + } + }, + "projectFolderUrl": "https://github.com/wapi.js/wapi.js/tree/main/packages/wapi.js", + "kind": "Package", + "canonicalReference": "@wapijs/wapi.js!", + "docComment": "", + "name": "@wapijs/wapi.js", + "preserveMemberOrder": false, + "members": [ + { + "kind": "EntryPoint", + "canonicalReference": "@wapijs/wapi.js!", + "name": "", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!AdInteractionEvent:class", + "docComment": "/**\n * @class @extends {MessageEvent} @implements {AdInteractionEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class AdInteractionEvent extends " + }, + { + "kind": "Reference", + "text": "MessageEvent", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "AdInteractionEventInterface", + "canonicalReference": "@wapijs/wapi.js!AdInteractionEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "AdInteractionEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!AdInteractionEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `AdInteractionEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n id: string;\n timestamp: string;\n isForwarded: boolean;\n text: string;\n source: {\n url: string;\n id: string;\n type: " + }, + { + "kind": "Reference", + "text": "AdInteractionSourceTypeEnum", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceTypeEnum:enum" + }, + { + "kind": "Content", + "text": ";\n title: string;\n description: string;\n mediaUrl?: string;\n mediaType: " + }, + { + "kind": "Reference", + "text": "AdInteractionSourceMediaTypeEnum", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceMediaTypeEnum:enum" + }, + { + "kind": "Content", + "text": ";\n thumbnailUrl: string;\n ctwaClid: string;\n };\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 8 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!AdInteractionEvent#source:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "source: " + }, + { + "kind": "Content", + "text": "{\n url: string;\n id: string;\n type: " + }, + { + "kind": "Reference", + "text": "AdInteractionSourceTypeEnum", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceTypeEnum:enum" + }, + { + "kind": "Content", + "text": ";\n title: string;\n description: string;\n mediaUrl?: string;\n mediaType: " + }, + { + "kind": "Reference", + "text": "AdInteractionSourceMediaTypeEnum", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceMediaTypeEnum:enum" + }, + { + "kind": "Content", + "text": ";\n thumbnailUrl: string;\n ctwaClid: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "source", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!AdInteractionEvent#text:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "text: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "text", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!AdInteractionEventInterface:interface", + "docComment": "/**\n * @interface @extends {InteractionMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface AdInteractionEventInterface extends " + }, + { + "kind": "Reference", + "text": "InteractionMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!InteractionMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "AdInteractionEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!AdInteractionEventInterface#source:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "source: " + }, + { + "kind": "Content", + "text": "{\n url: string;\n id: string;\n type: " + }, + { + "kind": "Reference", + "text": "AdInteractionSourceTypeEnum", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceTypeEnum:enum" + }, + { + "kind": "Content", + "text": ";\n title: string;\n description: string;\n mediaUrl?: string;\n mediaType: " + }, + { + "kind": "Reference", + "text": "AdInteractionSourceMediaTypeEnum", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceMediaTypeEnum:enum" + }, + { + "kind": "Content", + "text": ";\n thumbnailUrl: string;\n ctwaClid: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "source", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!AdInteractionEventInterface#text:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "text: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "text", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Enum", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceMediaTypeEnum:enum", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare enum AdInteractionSourceMediaTypeEnum " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "AdInteractionSourceMediaTypeEnum", + "preserveMemberOrder": false, + "members": [ + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceMediaTypeEnum.Image:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Image = " + }, + { + "kind": "Content", + "text": "\"image\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Image" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceMediaTypeEnum.Video:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Video = " + }, + { + "kind": "Content", + "text": "\"video\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Video" + } + ] + }, + { + "kind": "Enum", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceTypeEnum:enum", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare enum AdInteractionSourceTypeEnum " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "AdInteractionSourceTypeEnum", + "preserveMemberOrder": false, + "members": [ + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceTypeEnum.Ad:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Ad = " + }, + { + "kind": "Content", + "text": "\"ad\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Ad" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!AdInteractionSourceTypeEnum.Post:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Post = " + }, + { + "kind": "Content", + "text": "\"post\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Post" + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!AudioMessage:class", + "docComment": "/**\n * @extends {BaseMessage} @implements {AudioMessageInterface} @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class AudioMessage extends " + }, + { + "kind": "Reference", + "text": "BaseMessage", + "canonicalReference": "@wapijs/wapi.js!~BaseMessage:class" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Audio", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Audio:member" + }, + { + "kind": "Content", + "text": ">" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "AudioMessageInterface", + "canonicalReference": "@wapijs/wapi.js!AudioMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "AudioMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!AudioMessage:constructor(1)", + "docComment": "/**\n * @constructor @memberof AudioMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!AudioMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!AudioMessage#toJson:member(1)", + "docComment": "/**\n * Function used to get the get the whatsapp cloud api payload for audio message @memberof TextMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: " + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Audio", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Audio:member" + }, + { + "kind": "Content", + "text": ";\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "implementsTokenRanges": [ + { + "startIndex": 6, + "endIndex": 7 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!AudioMessageEvent:class", + "docComment": "/**\n * @class @extends {MediaMessageEvent} @implements {AudioMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class AudioMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEvent", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "AudioMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!AudioMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/audio/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "AudioMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!AudioMessageEvent:constructor(1)", + "docComment": "/**\n * @constructor @memberof AudioMessageEvent\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n audio: " + }, + { + "kind": "Reference", + "text": "AudioMessage", + "canonicalReference": "@wapijs/wapi.js!AudioMessage:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n messageId: string;\n timestamp: string;\n mimeType: string;\n sha256: string;\n mediaId: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!AudioMessageEvent#audio:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "audio: " + }, + { + "kind": "Reference", + "text": "AudioMessage", + "canonicalReference": "@wapijs/wapi.js!AudioMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "audio", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!AudioMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MediaMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface AudioMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/audio/interface.d.ts", + "releaseTag": "Public", + "name": "AudioMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!AudioMessageEventInterface#audio:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "audio: " + }, + { + "kind": "Reference", + "text": "AudioMessage", + "canonicalReference": "@wapijs/wapi.js!AudioMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "audio", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!AudioMessageInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface AudioMessageInterface extends " + }, + { + "kind": "Reference", + "text": "BaseMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~BaseMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/interface.d.ts", + "releaseTag": "Public", + "name": "AudioMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!AudioMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!BaseEvent:class", + "docComment": "/**\n * @class @implements {BaseEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class BaseEvent implements " + }, + { + "kind": "Reference", + "text": "BaseEventInterface", + "canonicalReference": "@wapijs/wapi.js!BaseEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/base/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "BaseEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!BaseEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `BaseEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!BaseEvent#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "implementsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!BaseEventInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface BaseEventInterface " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/base/interface.d.ts", + "releaseTag": "Public", + "name": "BaseEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!BaseEventInterface#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!BaseManager:class", + "docComment": "/**\n * Base Manager for all the other manager @class @implements {BaseManagerInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class BaseManager implements " + }, + { + "kind": "Reference", + "text": "BaseManagerInterface", + "canonicalReference": "@wapijs/wapi.js!BaseManagerInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/manager/base/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "BaseManager", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!BaseManager:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `BaseManager` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "client", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!BaseManager#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "implementsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!BaseManagerInterface:interface", + "docComment": "/**\n * Base manager interface @interface\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface BaseManagerInterface " + } + ], + "fileUrlPath": "dist/esm/src/manager/base/interface.d.ts", + "releaseTag": "Public", + "name": "BaseManagerInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!BaseManagerInterface#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ButtonInteractionMessage:class", + "docComment": "/**\n * @extends {InteractiveMessage} @implements {ButtonInteractionMessageInterface} @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ButtonInteractionMessage extends " + }, + { + "kind": "Reference", + "text": "InteractiveMessage", + "canonicalReference": "@wapijs/wapi.js!~InteractiveMessage:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ButtonInteractionMessageInterface", + "canonicalReference": "@wapijs/wapi.js!ButtonInteractionMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ButtonInteractionMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ButtonInteractionMessage:constructor(1)", + "docComment": "/**\n * @constructor @memberof ButtonInteractionMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n buttons: {\n id: string;\n title: string;\n }[];\n footerText?: string;\n bodyText: string;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ButtonInteractionMessage#addFooter:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addFooter(footerText: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "footerText", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addFooter" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ButtonInteractionMessage#addHeader:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addHeader(): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "addHeader" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ButtonInteractionMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n buttons: {\n id: string;\n title: string;\n }[];\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ButtonInteractionMessage#toJson:member(1)", + "docComment": "/**\n * @memberof ButtonInteractionMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": " & {\n interactive: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ButtonInteractionMessageInterface:interface", + "docComment": "/**\n * @interface @extends {InteractiveMessageInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ButtonInteractionMessageInterface extends " + }, + { + "kind": "Reference", + "text": "InteractiveMessageInterface", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "ButtonInteractionMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ButtonInteractionMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n buttons: {\n id: string;\n title: string;\n }[];\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ButtonReplyInteractionMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {InteractionMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ButtonReplyInteractionMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "InteractionMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!InteractionMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "ButtonReplyInteractionMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ButtonReplyInteractionMessageEventInterface#buttonId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "buttonId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "buttonId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ButtonReplyInteractionMessageEventInterface#title:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "title: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "title", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!Client:class", + "docComment": "/**\n * @implements {ClientInterface} @extends {EventEmitter} @class Client @classdesc The main client to build a whatsapp bot instance\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class Client extends " + }, + { + "kind": "Reference", + "text": "EventEmitter", + "canonicalReference": "@wapijs/wapi.js!~EventEmitter" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ClientInterface", + "canonicalReference": "@wapijs/wapi.js!~ClientInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/client/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "Client", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!Client:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `Client` class\n *\n * @param params - \n *\n * @param - {string} params.webhookSecret\n *\n * @param - {string} params.webhookEndpoint\n *\n * @param - {string} params.apiAccessToken\n *\n * @param - {string} params.phoneNumberId\n *\n * @param - {string} params.businessAccountId\n *\n * @param - {number} params.port @constructor\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n webhookSecret: string;\n webhookEndpoint: string;\n apiAccessToken: string;\n phoneNumberId: string;\n businessAccountId: string;\n port: number;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Client#emit:member(1)", + "docComment": "/**\n * Function to emit a new event on incoming webhook or wapi events\n *\n * @param eventName - \n *\n * @param data - \n *\n * @returns {boolean} @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "emit(eventName: " + }, + { + "kind": "Content", + "text": "T" + }, + { + "kind": "Content", + "text": ", data: " + }, + { + "kind": "Reference", + "text": "WapiEventDataMap", + "canonicalReference": "@wapijs/wapi.js!~WapiEventDataMap:type" + }, + { + "kind": "Content", + "text": "[T]" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "boolean" + }, + { + "kind": "Content", + "text": ";" + } + ], + "typeParameters": [ + { + "typeParameterName": "T", + "constraintTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "defaultTypeTokenRange": { + "startIndex": 0, + "endIndex": 0 + } + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 9, + "endIndex": 10 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "eventName", + "parameterTypeTokenRange": { + "startIndex": 4, + "endIndex": 5 + }, + "isOptional": false + }, + { + "parameterName": "data", + "parameterTypeTokenRange": { + "startIndex": 6, + "endIndex": 8 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "emit" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Client.getClient:member(1)", + "docComment": "/**\n * getter for client\n *\n * @returns {Client} @memberof Client @static\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "static getClient(): " + }, + { + "kind": "Content", + "text": "typeof " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": true, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "getClient" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#getReadyAtTimestamp:member", + "docComment": "/**\n * Timestamp at which the client switched to {@link ClientStatusEnum.Ready} state\n *\n * @returns {Date}\n *\n * @readonly\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "get getReadyAtTimestamp(): " + }, + { + "kind": "Content", + "text": "0 | " + }, + { + "kind": "Reference", + "text": "Date", + "canonicalReference": "!Date:interface" + }, + { + "kind": "Content", + "text": " | null" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": true, + "isOptional": false, + "releaseTag": "Public", + "name": "getReadyAtTimestamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Client#initiate:member(1)", + "docComment": "/**\n * Function to initiate the wapi client and start listening to the incoming webhook events @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "initiate(): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "initiate" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#media:member", + "docComment": "/**\n * Media manager to upload, get and media via whatsapp cloud api @type {MediaManager} @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "media: " + }, + { + "kind": "Reference", + "text": "MediaManager", + "canonicalReference": "@wapijs/wapi.js!MediaManager:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "media", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#message:member", + "docComment": "/**\n * Message manager to manage the outgoing messaging operations. @type {MessageManager} @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "message: " + }, + { + "kind": "Reference", + "text": "MessageManager", + "canonicalReference": "@wapijs/wapi.js!MessageManager:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "message", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Client#on:member(1)", + "docComment": "/**\n * Function to attach event listener to wapi client\n *\n * @param eventName - \n *\n * @param listener - \n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "on(eventName: " + }, + { + "kind": "Content", + "text": "T" + }, + { + "kind": "Content", + "text": ", listener: " + }, + { + "kind": "Content", + "text": "(data: " + }, + { + "kind": "Reference", + "text": "WapiEventDataMap", + "canonicalReference": "@wapijs/wapi.js!~WapiEventDataMap:type" + }, + { + "kind": "Content", + "text": "[T]) => void" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "this" + }, + { + "kind": "Content", + "text": ";" + } + ], + "typeParameters": [ + { + "typeParameterName": "T", + "constraintTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "defaultTypeTokenRange": { + "startIndex": 0, + "endIndex": 0 + } + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 10, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "eventName", + "parameterTypeTokenRange": { + "startIndex": 4, + "endIndex": 5 + }, + "isOptional": false + }, + { + "parameterName": "listener", + "parameterTypeTokenRange": { + "startIndex": 6, + "endIndex": 9 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "on" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#phone:member", + "docComment": "/**\n * Phone number manager to verify phone numbers for your @type {PhoneNumberManager} @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "phone: " + }, + { + "kind": "Reference", + "text": "PhoneNumberManager", + "canonicalReference": "@wapijs/wapi.js!PhoneNumberManager:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "phone", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#phoneNumberId:member", + "docComment": "/**\n * Getter for phone number @type {string} @memberof Client\n *\n * @readonly\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "get phoneNumberId(): " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": true, + "isOptional": false, + "releaseTag": "Public", + "name": "phoneNumberId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#readyAtTimeStamp:member", + "docComment": "/**\n * Unix Timestamp at which client gets into {@link ClientStatusEnum.Ready} state @type {number} @memberof Client\n *\n * @readonly\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "readyAtTimeStamp: " + }, + { + "kind": "Content", + "text": "number | null" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": true, + "isOptional": false, + "releaseTag": "Public", + "name": "readyAtTimeStamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#requester:member", + "docComment": "/**\n * Requester is an internal utility to communicate with Whatsapp cloud api @type {RequestClient} @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "requester: " + }, + { + "kind": "Reference", + "text": "RequestClient", + "canonicalReference": "@wapijs/wapi.js!~RequestClient:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "requester", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#status:member", + "docComment": "/**\n * Status of the client @type {ClientStatusEnum} @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "status: " + }, + { + "kind": "Reference", + "text": "ClientStatusEnum", + "canonicalReference": "@wapijs/wapi.js!~ClientStatusEnum:enum" + }, + { + "kind": "Content", + "text": " | null" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "status", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#updateAccessToken:member", + "docComment": "/**\n * Function to update the initial access token given at the point of client creations\n *\n * @param accessToken - @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "set updateAccessToken(accessToken: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ");" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "updateAccessToken", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#updateSenderPhoneNumberId:member", + "docComment": "/**\n * Function to set the phone number id used to send messages\n *\n * @param phoneNumber - @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "set updateSenderPhoneNumberId(phoneNumber: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ");" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "updateSenderPhoneNumberId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#uptime:member", + "docComment": "/**\n * Uptime in milliseconds since the client first got into {@link ClientStatusEnum.Ready} state @type {number}\n *\n * @memberof Client\n *\n * @readonly\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "get uptime(): " + }, + { + "kind": "Content", + "text": "number | null" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": true, + "isOptional": false, + "releaseTag": "Public", + "name": "uptime", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Client#webhook:member", + "docComment": "/**\n * Webhook manager to handle the incoming message and event listening @type {Webhook} @memberof Client\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "webhook: " + }, + { + "kind": "Reference", + "text": "Webhook", + "canonicalReference": "@wapijs/wapi.js!Webhook:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "webhook", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!Contact:class", + "docComment": "/**\n * @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class Contact " + } + ], + "fileUrlPath": "dist/esm/src/structures/contact/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "Contact", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!Contact:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `Contact` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n name: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#addAddress:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addAddress(address: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 7 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "address", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addAddress" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#addEmail:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addEmail(email: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 7 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "email", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addEmail" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#addPhone:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addPhone(phone: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 7 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "phone", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addPhone" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Contact#addresses:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addresses?: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[]" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "addresses", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#addUrl:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addUrl(url: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 7 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "url", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addUrl" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Contact#birthday:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "birthday?: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "birthday", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Contact#emails:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "emails?: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[]" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "emails", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Contact#name:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "name: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "name", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Contact#org:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "org?: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "org", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Contact#phones:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "phones?: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[]" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "phones", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#setBirthday:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "setBirthday(date: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "date", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "setBirthday" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#setFirstName:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "setFirstName(firstName: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "firstName", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "setFirstName" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#setLastName:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "setLastName(lastName: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "lastName", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "setLastName" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#setMiddleName:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "setMiddleName(middleName: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "middleName", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "setMiddleName" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#setNamePrefix:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "setNamePrefix(prefix: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "prefix", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "setNamePrefix" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#setNameSuffix:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "setNameSuffix(suffix: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "suffix", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "setNameSuffix" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Contact#setOrg:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "setOrg(org: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 7 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "org", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "setOrg" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!Contact#urls:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "urls?: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[]" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "urls", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "implementsTokenRanges": [] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ContactMessage:class", + "docComment": "/**\n * @class @extends {BaseMessage} @implements {ContactMessageInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ContactMessage extends " + }, + { + "kind": "Reference", + "text": "BaseMessage", + "canonicalReference": "@wapijs/wapi.js!~BaseMessage:class" + }, + { + "kind": "Content", + "text": "<'contacts'>" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ContactMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~ContactMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/contact/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ContactMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ContactMessage:constructor(1)", + "docComment": "/**\n * @constructor @memberof ContactMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n contacts: " + }, + { + "kind": "Reference", + "text": "Contact", + "canonicalReference": "@wapijs/wapi.js!Contact:class" + }, + { + "kind": "Content", + "text": "[];\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ContactMessage#addContact:member(1)", + "docComment": "/**\n * @function @memberof ContactMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "addContact(contact: " + }, + { + "kind": "Reference", + "text": "Contact", + "canonicalReference": "@wapijs/wapi.js!Contact:class" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "contact", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addContact" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ContactMessage#contacts:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "contacts: " + }, + { + "kind": "Reference", + "text": "Contact", + "canonicalReference": "@wapijs/wapi.js!Contact:class" + }, + { + "kind": "Content", + "text": "[]" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "contacts", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ContactMessage#toJson:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: 'contacts';\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 9 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "implementsTokenRanges": [ + { + "startIndex": 4, + "endIndex": 5 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ContactMessageEvent:class", + "docComment": "/**\n * @class @extends {MessageEvent} @implements {ContactMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ContactMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MessageEvent", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ContactMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!ContactMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/contacts/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ContactMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ContactMessageEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `ContactMessageEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n contact: " + }, + { + "kind": "Reference", + "text": "ContactMessage", + "canonicalReference": "@wapijs/wapi.js!ContactMessage:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n messageId: string;\n timestamp: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ContactMessageEvent#contact:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "contact: " + }, + { + "kind": "Reference", + "text": "ContactMessage", + "canonicalReference": "@wapijs/wapi.js!ContactMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "contact", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ContactMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ContactMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/contacts/interface.d.ts", + "releaseTag": "Public", + "name": "ContactMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ContactMessageEventInterface#contact:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "contact: " + }, + { + "kind": "Reference", + "text": "ContactMessage", + "canonicalReference": "@wapijs/wapi.js!ContactMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "contact", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEvent:class", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class CustomerIdentityChangeEvent implements " + }, + { + "kind": "Reference", + "text": "CustomerIdentityChangeEventInterface", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/customer-identity-changed/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "CustomerIdentityChangeEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `CustomerIdentityChangeEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n acknowledged: string;\n creationTimestamp: string;\n hash: string;\n timestamp: string;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEvent#acknowledged:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "acknowledged: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "acknowledged", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEvent#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEvent#creationTimestamp:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "creationTimestamp: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "creationTimestamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEvent#hash:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "hash: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "hash", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "implementsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEventInterface:interface", + "docComment": "/**\n * @interface\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface CustomerIdentityChangeEventInterface " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/customer-identity-changed/interface.d.ts", + "releaseTag": "Public", + "name": "CustomerIdentityChangeEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEventInterface#acknowledged:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "acknowledged: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "acknowledged", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEventInterface#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEventInterface#creationTimestamp:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "creationTimestamp: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "creationTimestamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!CustomerIdentityChangeEventInterface#hash:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "hash: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "hash", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEvent:class", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class CustomerNumberChangeEvent implements " + }, + { + "kind": "Reference", + "text": "CustomerNumberChangeEventInterface", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/customer-number-changed/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "CustomerNumberChangeEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `CustomerNumberChangeEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n changeDescription: string;\n newWaId: string;\n timestamp: string;\n oldWaId: string;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEvent#changeDescription:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "changeDescription: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "changeDescription", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEvent#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEvent#newWaId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "newWaId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "newWaId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEvent#oldWaId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "oldWaId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "oldWaId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEvent#timestamp:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "timestamp: " + }, + { + "kind": "Content", + "text": "number" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "timestamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "implementsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEventInterface:interface", + "docComment": "/**\n * @interface\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface CustomerNumberChangeEventInterface " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/customer-number-changed/interface.d.ts", + "releaseTag": "Public", + "name": "CustomerNumberChangeEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEventInterface#changeDescription:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "changeDescription: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "changeDescription", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEventInterface#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEventInterface#newWaId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "newWaId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "newWaId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEventInterface#oldWaId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "oldWaId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "oldWaId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!CustomerNumberChangeEventInterface#timestamp:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "timestamp: " + }, + { + "kind": "Content", + "text": "number" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "timestamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!DocumentMessage:class", + "docComment": "/**\n * @extends {BaseMessage} @implements {DocumentMessageInterface} @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class DocumentMessage extends " + }, + { + "kind": "Reference", + "text": "BaseMessage", + "canonicalReference": "@wapijs/wapi.js!~BaseMessage:class" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Document", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Document:member" + }, + { + "kind": "Content", + "text": ">" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "DocumentMessageInterface", + "canonicalReference": "@wapijs/wapi.js!DocumentMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "DocumentMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!DocumentMessage:constructor(1)", + "docComment": "/**\n * @constructor @memberof DocumentMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!DocumentMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!DocumentMessage#toJson:member(1)", + "docComment": "/**\n * Function used to get the get the whatsapp cloud api payload for audio message @memberof DocumentMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: " + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Document", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Document:member" + }, + { + "kind": "Content", + "text": ";\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "implementsTokenRanges": [ + { + "startIndex": 6, + "endIndex": 7 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!DocumentMessageEvent:class", + "docComment": "/**\n * @class @extends {MediaMessageEvent} @implements {DocumentMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class DocumentMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEvent", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "DocumentMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!DocumentMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/document/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "DocumentMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!DocumentMessageEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `DocumentMessageEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n document: " + }, + { + "kind": "Reference", + "text": "DocumentMessage", + "canonicalReference": "@wapijs/wapi.js!DocumentMessage:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n messageId: string;\n timestamp: string;\n mediaId: string;\n mimeType: string;\n sha256: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!DocumentMessageEvent#document:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "document: " + }, + { + "kind": "Reference", + "text": "DocumentMessage", + "canonicalReference": "@wapijs/wapi.js!DocumentMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "document", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!DocumentMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MediaMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface DocumentMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/document/interface.d.ts", + "releaseTag": "Public", + "name": "DocumentMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!DocumentMessageEventInterface#document:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "document: " + }, + { + "kind": "Reference", + "text": "DocumentMessage", + "canonicalReference": "@wapijs/wapi.js!DocumentMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "document", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!DocumentMessageInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface DocumentMessageInterface extends " + }, + { + "kind": "Reference", + "text": "BaseMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~BaseMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/interface.d.ts", + "releaseTag": "Public", + "name": "DocumentMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!DocumentMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ImageMessage:class", + "docComment": "/**\n * @extends {BaseMessage} @implements {ImageMessageInterface} @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ImageMessage extends " + }, + { + "kind": "Reference", + "text": "BaseMessage", + "canonicalReference": "@wapijs/wapi.js!~BaseMessage:class" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Image", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Image:member" + }, + { + "kind": "Content", + "text": ">" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ImageMessageInterface", + "canonicalReference": "@wapijs/wapi.js!ImageMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ImageMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ImageMessage:constructor(1)", + "docComment": "/**\n * @constructor Constructs a new instance of the `ImageMessage` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ImageMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ImageMessage#toJson:member(1)", + "docComment": "/**\n * Function used to get the get the whatsapp cloud api payload for audio message @memberof VideoMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: " + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Image", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Image:member" + }, + { + "kind": "Content", + "text": ";\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "implementsTokenRanges": [ + { + "startIndex": 6, + "endIndex": 7 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ImageMessageEvent:class", + "docComment": "/**\n * @class @extends {MessageEvent} @implements {ImageMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ImageMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEvent", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ImageMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!ImageMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/image/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ImageMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ImageMessageEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `ImageMessageEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n image: " + }, + { + "kind": "Reference", + "text": "ImageMessage", + "canonicalReference": "@wapijs/wapi.js!ImageMessage:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n messageId: string;\n timestamp: string;\n mediaId: string;\n mimeType: string;\n sha256: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ImageMessageEvent#image:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "image: " + }, + { + "kind": "Reference", + "text": "ImageMessage", + "canonicalReference": "@wapijs/wapi.js!ImageMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "image", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ImageMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ImageMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/image/interface.d.ts", + "releaseTag": "Public", + "name": "ImageMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ImageMessageEventInterface#image:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "image: " + }, + { + "kind": "Reference", + "text": "ImageMessage", + "canonicalReference": "@wapijs/wapi.js!ImageMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "image", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ImageMessageInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ImageMessageInterface extends " + }, + { + "kind": "Reference", + "text": "BaseMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~BaseMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/interface.d.ts", + "releaseTag": "Public", + "name": "ImageMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ImageMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!InteractionEvent:class", + "docComment": "/**\n * @class @extends {MessageEvent} @implements {InteractionMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare abstract class InteractionEvent extends " + }, + { + "kind": "Reference", + "text": "MessageEvent", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "InteractionMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!InteractionMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": true, + "name": "InteractionEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!InteractionEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `InteractionEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n messageId: string;\n timestamp: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!InteractionMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface InteractionMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "InteractionMessageEventInterface", + "preserveMemberOrder": false, + "members": [], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageInterface:interface", + "docComment": "/**\n * @interface @extends {BaseMessageInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface InteractiveMessageInterface extends " + }, + { + "kind": "Reference", + "text": "BaseMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~BaseMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "InteractiveMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageInterface#interactiveMessageData:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "interactiveMessageData: " + }, + { + "kind": "Content", + "text": "{\n type: " + }, + { + "kind": "Reference", + "text": "InteractiveMessageTypeEnum", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageTypeEnum:enum" + }, + { + "kind": "Content", + "text": ";\n footerText?: string;\n bodyText: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "interactiveMessageData", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Enum", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageTypeEnum:enum", + "docComment": "/**\n * @enum\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare enum InteractiveMessageTypeEnum " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "InteractiveMessageTypeEnum", + "preserveMemberOrder": false, + "members": [ + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageTypeEnum.Button:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Button = " + }, + { + "kind": "Content", + "text": "\"button\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Button" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageTypeEnum.Catalog:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Catalog = " + }, + { + "kind": "Content", + "text": "\"catalog_message\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Catalog" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageTypeEnum.Flow:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Flow = " + }, + { + "kind": "Content", + "text": "\"flow\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Flow" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageTypeEnum.List:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "List = " + }, + { + "kind": "Content", + "text": "\"list\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "List" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageTypeEnum.Product:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Product = " + }, + { + "kind": "Content", + "text": "\"product\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Product" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageTypeEnum.ProductList:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "ProductList = " + }, + { + "kind": "Content", + "text": "\"product_list\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "ProductList" + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ListInteractionEvent:class", + "docComment": "/**\n * @class @extends {InteractionEvent} @implements {ListInteractionMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ListInteractionEvent extends " + }, + { + "kind": "Reference", + "text": "InteractionEvent", + "canonicalReference": "@wapijs/wapi.js!InteractionEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ListInteractionMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ListInteractionEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ListInteractionEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `ListInteractionEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n messageId: string;\n timestamp: string;\n title: string;\n listId: string;\n description: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ListInteractionEvent#description:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "description: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "description", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ListInteractionEvent#listId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "listId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "listId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ListInteractionEvent#title:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "title: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "title", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessage:class", + "docComment": "/**\n * @class @implements {ListInteractionMessageInterface} @extends {InteractiveMessage}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ListInteractionMessage extends " + }, + { + "kind": "Reference", + "text": "InteractiveMessage", + "canonicalReference": "@wapijs/wapi.js!~InteractiveMessage:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ListInteractionMessageInterface", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ListInteractionMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessage:constructor(1)", + "docComment": "/**\n * @constructor @memberof ListInteractionMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n buttonText: string;\n footerText?: string;\n bodyText: string;\n sections: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[];\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessage#addFooter:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addFooter(footerText: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "footerText", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addFooter" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessage#addHeader:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addHeader(): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "addHeader" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessage#addSection:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addSection(section: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 7 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "section", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addSection" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n buttonText: string;\n sections: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[];\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessage#toJson:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": " & {\n interactive: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {InteractionMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ListInteractionMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "InteractionMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!InteractionMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "ListInteractionMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessageEventInterface#description:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "description: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "description", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessageEventInterface#listId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "listId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "listId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessageEventInterface#title:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "title: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "title", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessageInterface:interface", + "docComment": "/**\n * @interface @extends {InteractiveMessageInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ListInteractionMessageInterface extends " + }, + { + "kind": "Reference", + "text": "InteractiveMessageInterface", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "ListInteractionMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ListInteractionMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n buttonText: string;\n sections: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[];\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!LocationMessage:class", + "docComment": "/**\n * @class @extends {BaseMessage} @implements {LocationMessageInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class LocationMessage extends " + }, + { + "kind": "Reference", + "text": "BaseMessage", + "canonicalReference": "@wapijs/wapi.js!~BaseMessage:class" + }, + { + "kind": "Content", + "text": "<'location'>" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "LocationMessageInterface", + "canonicalReference": "@wapijs/wapi.js!LocationMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/location/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "LocationMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!LocationMessage:constructor(1)", + "docComment": "/**\n * @constructor @memberof LocationMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!LocationMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n address?: string;\n latitude: number;\n longitude: number;\n name?: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!LocationMessage#toJson:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: 'location';\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 9 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "implementsTokenRanges": [ + { + "startIndex": 4, + "endIndex": 5 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!LocationMessageEvent:class", + "docComment": "/**\n * @class @extends {MessageEvent} @implements {LocationMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class LocationMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MessageEvent", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "LocationMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!LocationMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/location/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "LocationMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!LocationMessageEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `LocationMessageEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n location: " + }, + { + "kind": "Reference", + "text": "LocationMessage", + "canonicalReference": "@wapijs/wapi.js!LocationMessage:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n messageId: string;\n timestamp: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!LocationMessageEvent#location:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "location: " + }, + { + "kind": "Reference", + "text": "LocationMessage", + "canonicalReference": "@wapijs/wapi.js!LocationMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "location", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!LocationMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface LocationMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/location/interface.d.ts", + "releaseTag": "Public", + "name": "LocationMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!LocationMessageEventInterface#location:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "location: " + }, + { + "kind": "Reference", + "text": "LocationMessage", + "canonicalReference": "@wapijs/wapi.js!LocationMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "location", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!LocationMessageInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface LocationMessageInterface extends " + }, + { + "kind": "Reference", + "text": "BaseMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~BaseMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/location/interface.d.ts", + "releaseTag": "Public", + "name": "LocationMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!LocationMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n address?: string;\n latitude: number;\n longitude: number;\n name?: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!MediaManager:class", + "docComment": "/**\n * manager to handle media @class @implements {MediaManagerInterface} @extends {BaseManager}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class MediaManager extends " + }, + { + "kind": "Reference", + "text": "BaseManager", + "canonicalReference": "@wapijs/wapi.js!BaseManager:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "MediaManagerInterface", + "canonicalReference": "@wapijs/wapi.js!MediaManagerInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/manager/media/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "MediaManager", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!MediaManager:constructor(1)", + "docComment": "/**\n * @constructor Constructs a new instance of the `MediaManager` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(props: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "props", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MediaManager#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!MediaManager#delete:member(1)", + "docComment": "/**\n * Function used to delete uploaded media on whatsapp using media id\n *\n * @param mediaId - @memberof MediaManager\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "delete(mediaId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 5 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "mediaId", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "delete" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!MediaManager#getUrl:member(1)", + "docComment": "/**\n * Function used to get the URL of an media using media id from whatsapp\n *\n * @param mediaId - @memberof MediaManager\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "getUrl(mediaId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "<{\n id: string;\n url: string;\n messaging_product: \"whatsapp\";\n mime_type: string;\n sha256: string;\n file_size: number;\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 5 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "mediaId", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "getUrl" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!MediaManager#upload:member(1)", + "docComment": "/**\n * Function to upload media\n *\n * @param params - \n *\n * @param - {string} params.filePath\n *\n * @param - {string} params.mediaType @memberof MediaManager\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "upload(params: " + }, + { + "kind": "Content", + "text": "{\n filePath: string;\n mediaType: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 5 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "upload" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MediaManagerInterface:interface", + "docComment": "/**\n * Media manager interface @interface @extends {BaseManagerInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MediaManagerInterface extends " + }, + { + "kind": "Reference", + "text": "BaseManagerInterface", + "canonicalReference": "@wapijs/wapi.js!BaseManagerInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/manager/media/interface.d.ts", + "releaseTag": "Public", + "name": "MediaManagerInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaManagerInterface#delete:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "delete: " + }, + { + "kind": "Content", + "text": "(mediaId: string) => " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "delete", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaManagerInterface#getUrl:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "getUrl: " + }, + { + "kind": "Content", + "text": "(mediaId: string) => " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ">" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "getUrl", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 8 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaManagerInterface#upload:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "upload: " + }, + { + "kind": "Content", + "text": "(params: {\n filePath: string;\n mediaType: string;\n }) => " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "upload", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent:class", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare abstract class MediaMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MessageEvent", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "MediaMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/base/index.d.ts", + "releaseTag": "Public", + "isAbstract": true, + "name": "MediaMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `MediaMessageEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n messageId: string;\n timestamp: string;\n mediaId: string;\n mimeType: string;\n sha256: string;\n isForwarded: boolean;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent#getUrl:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "getUrl(): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "getUrl" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent#mediaId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "mediaId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "mediaId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent#mimeType:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "mimeType: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "mimeType", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent#sha256:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "sha256: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "sha256", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MediaMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/base/interface.d.ts", + "releaseTag": "Public", + "name": "MediaMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface#getUrl:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "getUrl: " + }, + { + "kind": "Content", + "text": "() => " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "getUrl", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface#mediaId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "mediaId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "mediaId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface#mimeType:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "mimeType: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "mimeType", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface#sha256:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "sha256: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "sha256", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MediaMessageInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MediaMessageInterface " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/interface.d.ts", + "releaseTag": "Public", + "name": "MediaMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaMessageInterface#caption:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "caption?: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "caption", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaMessageInterface#fileName:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "fileName?: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "fileName", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaMessageInterface#id:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "id?: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "id", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaMessageInterface#link:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "link?: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": true, + "releaseTag": "Public", + "name": "link", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MediaMessageInterface#type:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "type: " + }, + { + "kind": "Reference", + "text": "MediaTypeEnum", + "canonicalReference": "@wapijs/wapi.js!MediaTypeEnum:enum" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "type", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [] + }, + { + "kind": "Enum", + "canonicalReference": "@wapijs/wapi.js!MediaTypeEnum:enum", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare enum MediaTypeEnum " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/interface.d.ts", + "releaseTag": "Public", + "name": "MediaTypeEnum", + "preserveMemberOrder": false, + "members": [ + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!MediaTypeEnum.Audio:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Audio = " + }, + { + "kind": "Content", + "text": "\"audio\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Audio" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!MediaTypeEnum.Document:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Document = " + }, + { + "kind": "Content", + "text": "\"document\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Document" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!MediaTypeEnum.Image:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Image = " + }, + { + "kind": "Content", + "text": "\"image\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Image" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!MediaTypeEnum.Sticker:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Sticker = " + }, + { + "kind": "Content", + "text": "\"sticker\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Sticker" + }, + { + "kind": "EnumMember", + "canonicalReference": "@wapijs/wapi.js!MediaTypeEnum.Video:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "Video = " + }, + { + "kind": "Content", + "text": "\"video\"" + } + ], + "initializerTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "name": "Video" + } + ] + }, + { + "kind": "TypeAlias", + "canonicalReference": "@wapijs/wapi.js!MessageContext:type", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export type MessageContext = " + }, + { + "kind": "Content", + "text": "{\n from: string;\n}" + }, + { + "kind": "Content", + "text": ";" + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/base/interface.d.ts", + "releaseTag": "Public", + "name": "MessageContext", + "typeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!MessageDeliveryEvent:class", + "docComment": "/**\n * @class MessageDeliveryEvent @extends {StatusUpdateEvent} @implements {MessageDeliveryEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class MessageDeliveryEvent extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEvent", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "MessageDeliveryEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageDeliveryEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-delivered/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "MessageDeliveryEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!MessageDeliveryEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `MessageDeliveryEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n timestamp: string;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MessageDeliveryEventInterface:interface", + "docComment": "/**\n * @interface MessageDeliveryEventInterface @extends {StatusUpdateEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MessageDeliveryEventInterface extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEventInterface", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-delivered/interface.d.ts", + "releaseTag": "Public", + "name": "MessageDeliveryEventInterface", + "preserveMemberOrder": false, + "members": [], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class", + "docComment": "/**\n * @class @extends {BaseEvent} @implements {MessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare abstract class MessageEvent extends " + }, + { + "kind": "Reference", + "text": "BaseEvent", + "canonicalReference": "@wapijs/wapi.js!BaseEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "MessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/base/index.d.ts", + "releaseTag": "Public", + "isAbstract": true, + "name": "MessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:constructor(1)", + "docComment": "/**\n * @constructor @memberof MessageEvent\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n id: string;\n from: string;\n timestamp: string;\n isForwarded: boolean;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MessageEvent#context:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "context: " + }, + { + "kind": "Reference", + "text": "MessageContext", + "canonicalReference": "@wapijs/wapi.js!MessageContext:type" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "context", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MessageEvent#isForwarded:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "isForwarded: " + }, + { + "kind": "Content", + "text": "boolean" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "isForwarded", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MessageEvent#messageId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "messageId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "messageId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!MessageEvent#react:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "react(params: " + }, + { + "kind": "Content", + "text": "{\n emoji: string;\n phoneNumber: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 5 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "react" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!MessageEvent#read:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "read(): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "read" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!MessageEvent#reply:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "reply" + }, + { + "kind": "Content", + "text": ">(props: " + }, + { + "kind": "Content", + "text": "{\n message: T;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "typeParameters": [ + { + "typeParameterName": "T", + "constraintTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "defaultTypeTokenRange": { + "startIndex": 0, + "endIndex": 0 + } + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 8 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "props", + "parameterTypeTokenRange": { + "startIndex": 4, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "reply" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MessageEvent#timestamp:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "timestamp: " + }, + { + "kind": "Content", + "text": "number" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "timestamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "BaseEventInterface", + "canonicalReference": "@wapijs/wapi.js!BaseEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/base/interface.d.ts", + "releaseTag": "Public", + "name": "MessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface#context:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "context: " + }, + { + "kind": "Reference", + "text": "MessageContext", + "canonicalReference": "@wapijs/wapi.js!MessageContext:type" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "context", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface#messageId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "messageId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "messageId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface#timestamp:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "timestamp: " + }, + { + "kind": "Content", + "text": "number" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "timestamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!MessageFailedEvent:class", + "docComment": "/**\n * @class MessageFailedEvent @extends {StatusUpdateEvent} @implements {MessageFailedEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class MessageFailedEvent extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEvent", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "MessageFailedEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageFailedEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-failed/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "MessageFailedEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!MessageFailedEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `MessageFailedEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n timestamp: string;\n failReason: string;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MessageFailedEvent#failReason:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "failReason: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "failReason", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MessageFailedEventInterface:interface", + "docComment": "/**\n * @interface MessageFailedEventInterface @extends {StatusUpdateEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MessageFailedEventInterface extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEventInterface", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-failed/interface.d.ts", + "releaseTag": "Public", + "name": "MessageFailedEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MessageFailedEventInterface#failReason:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "failReason: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "failReason", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!MessageManager:class", + "docComment": "/**\n * manager to handle outgoing messages for wapi @implements {MessageManagerInterface} @extends {BaseManager} @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class MessageManager extends " + }, + { + "kind": "Reference", + "text": "BaseManager", + "canonicalReference": "@wapijs/wapi.js!BaseManager:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "MessageManagerInterface", + "canonicalReference": "@wapijs/wapi.js!MessageManagerInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/manager/message/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "MessageManager", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!MessageManager:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `MessageManager` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(props: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "props", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!MessageManager#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!MessageManager#reply:member(1)", + "docComment": "/**\n * Function used to reply to a message using a message id\n *\n * @param props - @memberof MessageManager\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "reply" + }, + { + "kind": "Content", + "text": ">(props: " + }, + { + "kind": "Content", + "text": "{\n replyToMessageId: string;\n message: T;\n phoneNumber: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "typeParameters": [ + { + "typeParameterName": "T", + "constraintTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "defaultTypeTokenRange": { + "startIndex": 0, + "endIndex": 0 + } + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 8 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "props", + "parameterTypeTokenRange": { + "startIndex": 4, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "reply" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!MessageManager#send:member(1)", + "docComment": "/**\n * Function used to send message\n *\n * @param props - \n *\n * @param props - \n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "send" + }, + { + "kind": "Content", + "text": ">(props: " + }, + { + "kind": "Content", + "text": "{\n message: T;\n phoneNumber: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "typeParameters": [ + { + "typeParameterName": "T", + "constraintTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "defaultTypeTokenRange": { + "startIndex": 0, + "endIndex": 0 + } + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 8 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "props", + "parameterTypeTokenRange": { + "startIndex": 4, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "send" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MessageManagerInterface:interface", + "docComment": "/**\n * Message manager interface\\ @interface @extends {BaseManagerInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MessageManagerInterface extends " + }, + { + "kind": "Reference", + "text": "BaseManagerInterface", + "canonicalReference": "@wapijs/wapi.js!BaseManagerInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/manager/message/interface.d.ts", + "releaseTag": "Public", + "name": "MessageManagerInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!MessageManagerInterface#client:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "client", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "MethodSignature", + "canonicalReference": "@wapijs/wapi.js!MessageManagerInterface#reply:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "reply" + }, + { + "kind": "Content", + "text": ">(props: " + }, + { + "kind": "Content", + "text": "{\n replyToMessageId: string;\n message: T;\n phoneNumber: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isOptional": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 8 + }, + "releaseTag": "Public", + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "props", + "parameterTypeTokenRange": { + "startIndex": 4, + "endIndex": 5 + }, + "isOptional": false + } + ], + "typeParameters": [ + { + "typeParameterName": "T", + "constraintTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "defaultTypeTokenRange": { + "startIndex": 0, + "endIndex": 0 + } + } + ], + "name": "reply" + }, + { + "kind": "MethodSignature", + "canonicalReference": "@wapijs/wapi.js!MessageManagerInterface#send:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "send" + }, + { + "kind": "Content", + "text": ">(props: " + }, + { + "kind": "Content", + "text": "{\n message: T;\n phoneNumber: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isOptional": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 8 + }, + "releaseTag": "Public", + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "props", + "parameterTypeTokenRange": { + "startIndex": 4, + "endIndex": 5 + }, + "isOptional": false + } + ], + "typeParameters": [ + { + "typeParameterName": "T", + "constraintTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "defaultTypeTokenRange": { + "startIndex": 0, + "endIndex": 0 + } + } + ], + "name": "send" + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!MessageReadEvent:class", + "docComment": "/**\n * @class MessageReadEvent @extends {StatusUpdateEvent} @implements {MessageReadEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class MessageReadEvent extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEvent", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "MessageReadEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageReadEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-read/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "MessageReadEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!MessageReadEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `MessageReadEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n timestamp: string;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MessageReadEventInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MessageReadEventInterface extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEventInterface", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-read/interface.d.ts", + "releaseTag": "Public", + "name": "MessageReadEventInterface", + "preserveMemberOrder": false, + "members": [], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!MessageSentEvent:class", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class MessageSentEvent extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEvent", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "MessageSentEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageSentEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-sent/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "MessageSentEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!MessageSentEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `MessageSentEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n timestamp: string;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MessageSentEventInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MessageSentEventInterface extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEventInterface", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-sent/interface.d.ts", + "releaseTag": "Public", + "name": "MessageSentEventInterface", + "preserveMemberOrder": false, + "members": [], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!MessageUndeliveredEvent:class", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class MessageUndeliveredEvent extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEvent", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "MessageUndeliveredEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageUndeliveredEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-undelivered/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "MessageUndeliveredEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!MessageUndeliveredEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `MessageUndeliveredEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n timestamp: string;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!MessageUndeliveredEventInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface MessageUndeliveredEventInterface extends " + }, + { + "kind": "Reference", + "text": "StatusUpdateEventInterface", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/message-undelivered/interface.d.ts", + "releaseTag": "Public", + "name": "MessageUndeliveredEventInterface", + "preserveMemberOrder": false, + "members": [], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!OrderMessageEvent:class", + "docComment": "/**\n * @class @extends {MessageEvent} @implements {OrderMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class OrderMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MessageEvent", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "OrderMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!OrderMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/order/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "OrderMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!OrderMessageEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `OrderMessageEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n order: " + }, + { + "kind": "Reference", + "text": "Order", + "canonicalReference": "@wapijs/wapi.js!~Order:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n messageId: string;\n timestamp: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!OrderMessageEvent#order:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "order: " + }, + { + "kind": "Reference", + "text": "Order", + "canonicalReference": "@wapijs/wapi.js!~Order:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "order", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!OrderMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface OrderMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/order/interface.d.ts", + "releaseTag": "Public", + "name": "OrderMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!OrderMessageEventInterface#order:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "order: " + }, + { + "kind": "Reference", + "text": "Order", + "canonicalReference": "@wapijs/wapi.js!~Order:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "order", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!PhoneNumberManager:class", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class PhoneNumberManager extends " + }, + { + "kind": "Reference", + "text": "BaseManager", + "canonicalReference": "@wapijs/wapi.js!BaseManager:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "PhoneNumberManagerInterface", + "canonicalReference": "@wapijs/wapi.js!PhoneNumberManagerInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/manager/phone/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "PhoneNumberManager", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!PhoneNumberManager:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `PhoneNumberManager` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(props: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "props", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!PhoneNumberManager#sendVerificationCode:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "sendVerificationCode(phoneNumber: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 5 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "phoneNumber", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "sendVerificationCode" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!PhoneNumberManager#verifyCode:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "verifyCode(code: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 5 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "code", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "verifyCode" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!PhoneNumberManagerInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface PhoneNumberManagerInterface extends " + }, + { + "kind": "Reference", + "text": "BaseManagerInterface", + "canonicalReference": "@wapijs/wapi.js!BaseManagerInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/manager/phone/interface.d.ts", + "releaseTag": "Public", + "name": "PhoneNumberManagerInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!PhoneNumberManagerInterface#sendVerificationCode:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "sendVerificationCode: " + }, + { + "kind": "Content", + "text": "(phoneNumber: string) => " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "sendVerificationCode", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!PhoneNumberManagerInterface#verifyCode:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "verifyCode: " + }, + { + "kind": "Content", + "text": "(code: string) => " + }, + { + "kind": "Reference", + "text": "Promise", + "canonicalReference": "!Promise:interface" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "verifyCode", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEvent:class", + "docComment": "/**\n * @class @extends {MessageEvent} @implements {ProductInquiryEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ProductInquiryEvent extends " + }, + { + "kind": "Reference", + "text": "MessageEvent", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ProductInquiryEventInterface", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/product-inquiry/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ProductInquiryEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `ProductInquiryEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n productId: string;\n catalogId: string;\n from: string;\n id: string;\n timestamp: string;\n isForwarded: boolean;\n text: string;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEvent#catalogId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "catalogId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "catalogId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEvent#productId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "productId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "productId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEvent#text:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "text: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "text", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEventInterface:interface", + "docComment": "/**\n * @interface @extends {MessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ProductInquiryEventInterface extends " + }, + { + "kind": "Reference", + "text": "MessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/product-inquiry/interface.d.ts", + "releaseTag": "Public", + "name": "ProductInquiryEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEventInterface#catalogId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "catalogId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "catalogId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEventInterface#productId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "productId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "productId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ProductInquiryEventInterface#text:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "text: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "text", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ProductInteractionMessage:class", + "docComment": "/**\n * @extends {InteractiveMessage} @implements {ProductInteractionMessageInterface} @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ProductInteractionMessage extends " + }, + { + "kind": "Reference", + "text": "InteractiveMessage", + "canonicalReference": "@wapijs/wapi.js!~InteractiveMessage:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ProductInteractionMessageInterface", + "canonicalReference": "@wapijs/wapi.js!ProductInteractionMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ProductInteractionMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ProductInteractionMessage:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `ProductInteractionMessage` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n buttonText: string;\n footerText?: string;\n bodyText: string;\n catalogId: string;\n productRetailerId: string;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ProductInteractionMessage#addFooter:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addFooter(footerText: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "footerText", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addFooter" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ProductInteractionMessage#addHeader:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addHeader(): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "addHeader" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ProductInteractionMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n catalogId: string;\n productRetailerId: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ProductInteractionMessage#toJson:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": " & {\n interactive: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ProductInteractionMessageInterface:interface", + "docComment": "/**\n * @interface @extends {InteractiveMessageInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ProductInteractionMessageInterface extends " + }, + { + "kind": "Reference", + "text": "InteractiveMessageInterface", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "ProductInteractionMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ProductInteractionMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n catalogId: string;\n productRetailerId: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ProductListInteractionMessage:class", + "docComment": "/**\n * @class @extends {InteractiveMessage} @implements {ProductListInteractionMessageInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ProductListInteractionMessage extends " + }, + { + "kind": "Reference", + "text": "InteractiveMessage", + "canonicalReference": "@wapijs/wapi.js!~InteractiveMessage:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ProductListInteractionMessageInterface", + "canonicalReference": "@wapijs/wapi.js!ProductListInteractionMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ProductListInteractionMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ProductListInteractionMessage:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `ProductListInteractionMessage` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n buttonText: string;\n footerText?: string;\n bodyText: string;\n catalogId: string;\n productRetailerId: string;\n sections: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[];\n header: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 10 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ProductListInteractionMessage#addFooter:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addFooter(footerText: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "footerText", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addFooter" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ProductListInteractionMessage#addSection:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "addSection(section: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 6, + "endIndex": 7 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "section", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "addSection" + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ProductListInteractionMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n catalogId: string;\n productRetailerId: string;\n sections: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[];\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ProductListInteractionMessage#toJson:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": " & {\n interactive: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ";\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ProductListInteractionMessageInterface:interface", + "docComment": "/**\n * @interface @extends {InteractiveMessageInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ProductListInteractionMessageInterface extends " + }, + { + "kind": "Reference", + "text": "InteractiveMessageInterface", + "canonicalReference": "@wapijs/wapi.js!InteractiveMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "ProductListInteractionMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ProductListInteractionMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n catalogId: string;\n productRetailerId: string;\n sections: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "[];\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!QuickReplyButtonInteractionEvent:class", + "docComment": "/**\n * @class @extends {InteractionEvent} @implements {QuickReplyButtonInteractionEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class QuickReplyButtonInteractionEvent extends " + }, + { + "kind": "Reference", + "text": "InteractionEvent", + "canonicalReference": "@wapijs/wapi.js!InteractionEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "QuickReplyButtonInteractionEventInterface", + "canonicalReference": "@wapijs/wapi.js!QuickReplyButtonInteractionEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "QuickReplyButtonInteractionEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!QuickReplyButtonInteractionEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `QuickReplyButtonInteractionEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n messageId: string;\n timestamp: string;\n isForwarded: boolean;\n buttonText: string;\n buttonPayload: string;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!QuickReplyButtonInteractionEvent#button:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "button: " + }, + { + "kind": "Content", + "text": "{\n text: string;\n payload: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "button", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!QuickReplyButtonInteractionEventInterface:interface", + "docComment": "/**\n * @interface @extends {InteractionMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface QuickReplyButtonInteractionEventInterface extends " + }, + { + "kind": "Reference", + "text": "InteractionMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!InteractionMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/interface.d.ts", + "releaseTag": "Public", + "name": "QuickReplyButtonInteractionEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!QuickReplyButtonInteractionEventInterface#button:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "button: " + }, + { + "kind": "Content", + "text": "{\n text: string;\n payload: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "button", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ReactionEvent:class", + "docComment": "/**\n * @class @implements {ReactionEventInterface} @extends {MessageEvent}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ReactionEvent extends " + }, + { + "kind": "Reference", + "text": "MessageEvent", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ReactionEventInterface", + "canonicalReference": "@wapijs/wapi.js!ReactionEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/reaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ReactionEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ReactionEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `ReactionEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n reaction: " + }, + { + "kind": "Reference", + "text": "ReactionMessage", + "canonicalReference": "@wapijs/wapi.js!ReactionMessage:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n id: string;\n timestamp: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ReactionEvent#reaction:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "reaction: " + }, + { + "kind": "Reference", + "text": "ReactionMessage", + "canonicalReference": "@wapijs/wapi.js!ReactionMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "reaction", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ReactionEventInterface:interface", + "docComment": "/**\n * @interface @extends {MessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ReactionEventInterface extends " + }, + { + "kind": "Reference", + "text": "MessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/reaction/interface.d.ts", + "releaseTag": "Public", + "name": "ReactionEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ReactionEventInterface#reaction:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "reaction: " + }, + { + "kind": "Reference", + "text": "ReactionMessage", + "canonicalReference": "@wapijs/wapi.js!ReactionMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "reaction", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ReactionMessage:class", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ReactionMessage extends " + }, + { + "kind": "Reference", + "text": "BaseMessage", + "canonicalReference": "@wapijs/wapi.js!~BaseMessage:class" + }, + { + "kind": "Content", + "text": "<'reaction'>" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ReactionMessageInterface", + "canonicalReference": "@wapijs/wapi.js!ReactionMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/reaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ReactionMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ReactionMessage:constructor(1)", + "docComment": "/**\n * @constructor @memberof ReactionMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n messageId: string;\n emoji: string;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ReactionMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n messageId: string;\n emoji: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!ReactionMessage#toJson:member(1)", + "docComment": "/**\n * @memberof ReactionMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: " + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Reaction", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Reaction:member" + }, + { + "kind": "Content", + "text": ";\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "implementsTokenRanges": [ + { + "startIndex": 4, + "endIndex": 5 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!ReactionMessageInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface ReactionMessageInterface extends " + }, + { + "kind": "Reference", + "text": "BaseMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~BaseMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/reaction/interface.d.ts", + "releaseTag": "Public", + "name": "ReactionMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!ReactionMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n messageId: string;\n emoji: string;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!ReplyButtonInteractionEvent:class", + "docComment": "/**\n * @class @extends {InteractionEvent} @implements {ButtonReplyInteractionMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class ReplyButtonInteractionEvent extends " + }, + { + "kind": "Reference", + "text": "InteractionEvent", + "canonicalReference": "@wapijs/wapi.js!InteractionEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "ButtonReplyInteractionMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!ButtonReplyInteractionMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/interaction/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "ReplyButtonInteractionEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!ReplyButtonInteractionEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `ReplyButtonInteractionEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n messageId: string;\n timestamp: string;\n isForwarded: boolean;\n title: string;\n buttonId: string;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ReplyButtonInteractionEvent#buttonId:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "buttonId: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "buttonId", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!ReplyButtonInteractionEvent#title:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "title: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "title", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEvent:class", + "docComment": "/**\n * @class @extends {BaseEvent} @implements {StatusUpdateEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare abstract class StatusUpdateEvent extends " + }, + { + "kind": "Reference", + "text": "BaseEvent", + "canonicalReference": "@wapijs/wapi.js!BaseEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "StatusUpdateEventInterface", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/base/index.d.ts", + "releaseTag": "Public", + "isAbstract": true, + "name": "StatusUpdateEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEvent:constructor(1)", + "docComment": "/**\n * @constructor @memberof StatusUpdateEvent\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n timestamp: string;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEvent#context:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "context: " + }, + { + "kind": "Reference", + "text": "MessageContext", + "canonicalReference": "@wapijs/wapi.js!MessageContext:type" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "context", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEvent#timestamp:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "timestamp: " + }, + { + "kind": "Content", + "text": "number" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "timestamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEventInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface StatusUpdateEventInterface extends " + }, + { + "kind": "Reference", + "text": "BaseEventInterface", + "canonicalReference": "@wapijs/wapi.js!BaseEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/base/interface.d.ts", + "releaseTag": "Public", + "name": "StatusUpdateEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEventInterface#context:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "context: " + }, + { + "kind": "Reference", + "text": "MessageContext", + "canonicalReference": "@wapijs/wapi.js!MessageContext:type" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "context", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!StatusUpdateEventInterface#timestamp:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "timestamp: " + }, + { + "kind": "Content", + "text": "number" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "timestamp", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!StickerMessage:class", + "docComment": "/**\n * @extends {BaseMessage} @implements {StickerMessageInterface} @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class StickerMessage extends " + }, + { + "kind": "Reference", + "text": "BaseMessage", + "canonicalReference": "@wapijs/wapi.js!~BaseMessage:class" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Sticker", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Sticker:member" + }, + { + "kind": "Content", + "text": ">" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "StickerMessageInterface", + "canonicalReference": "@wapijs/wapi.js!StickerMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "StickerMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!StickerMessage:constructor(1)", + "docComment": "/**\n * @constructor @memberof StickerMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!StickerMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!StickerMessage#toJson:member(1)", + "docComment": "/**\n * Function used to get the get the whatsapp cloud api payload for audio message @memberof VideoMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: " + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Sticker", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Sticker:member" + }, + { + "kind": "Content", + "text": ";\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "implementsTokenRanges": [ + { + "startIndex": 6, + "endIndex": 7 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!StickerMessageEvent:class", + "docComment": "/**\n * @class @extends {MediaMessageEvent} @implements {StickerMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class StickerMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEvent", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "StickerMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!StickerMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/sticker/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "StickerMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!StickerMessageEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `StickerMessageEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n sticker: " + }, + { + "kind": "Reference", + "text": "StickerMessage", + "canonicalReference": "@wapijs/wapi.js!StickerMessage:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n messageId: string;\n timestamp: string;\n mediaId: string;\n mimeType: string;\n sha256: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!StickerMessageEvent#sticker:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "sticker: " + }, + { + "kind": "Reference", + "text": "StickerMessage", + "canonicalReference": "@wapijs/wapi.js!StickerMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "sticker", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!StickerMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MediaMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface StickerMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/sticker/interface.d.ts", + "releaseTag": "Public", + "name": "StickerMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!StickerMessageEventInterface#sticker:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "sticker: " + }, + { + "kind": "Reference", + "text": "StickerMessage", + "canonicalReference": "@wapijs/wapi.js!StickerMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "sticker", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!StickerMessageInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface StickerMessageInterface extends " + }, + { + "kind": "Reference", + "text": "BaseMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~BaseMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/interface.d.ts", + "releaseTag": "Public", + "name": "StickerMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!StickerMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!TextMessage:class", + "docComment": "/**\n * Text message component builder @extends {BaseMessage} @implements {TextMessageInterface} @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class TextMessage extends " + }, + { + "kind": "Reference", + "text": "BaseMessage", + "canonicalReference": "@wapijs/wapi.js!~BaseMessage:class" + }, + { + "kind": "Content", + "text": "<'text'>" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "TextMessageInterface", + "canonicalReference": "@wapijs/wapi.js!TextMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/text/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "TextMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!TextMessage:constructor(1)", + "docComment": "/**\n * @constructor Constructs a new instance of the `TextMessage` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n text: string;\n allowPreview?: true;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!TextMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "readonly data: " + }, + { + "kind": "Content", + "text": "{\n text: string;\n allowPreview?: true;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": true, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!TextMessage#toJson:member(1)", + "docComment": "/**\n * Function used to get the get the whatsapp cloud api payload for text message @memberof TextMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: 'text';\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 9 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 3 + }, + "implementsTokenRanges": [ + { + "startIndex": 4, + "endIndex": 5 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!TextMessageEvent:class", + "docComment": "/**\n * @class @implements {TextMessageEventInterface} @extends {MessageEvent}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class TextMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MessageEvent", + "canonicalReference": "@wapijs/wapi.js!MessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "TextMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!TextMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/text/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "TextMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!TextMessageEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `TextMessageEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n from: string;\n messageId: string;\n text: " + }, + { + "kind": "Reference", + "text": "TextMessage", + "canonicalReference": "@wapijs/wapi.js!TextMessage:class" + }, + { + "kind": "Content", + "text": ";\n timestamp: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!TextMessageEvent#text:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "text: " + }, + { + "kind": "Reference", + "text": "TextMessage", + "canonicalReference": "@wapijs/wapi.js!TextMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "text", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!TextMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface TextMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/text/interface.d.ts", + "releaseTag": "Public", + "name": "TextMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!TextMessageEventInterface#text:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "text: " + }, + { + "kind": "Reference", + "text": "TextMessage", + "canonicalReference": "@wapijs/wapi.js!TextMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "text", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!TextMessageInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface TextMessageInterface extends " + }, + { + "kind": "Reference", + "text": "BaseMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~BaseMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/text/interface.d.ts", + "releaseTag": "Public", + "name": "TextMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!TextMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Content", + "text": "{\n text: string | null;\n }" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!TextMessageInterface#toJson:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson: " + }, + { + "kind": "Content", + "text": "(params: {\n to: string;\n }) => " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: 'text';\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "toJson", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 8 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!UnknownEvent:class", + "docComment": "/**\n * @class @implements UnknownEventInterface\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class UnknownEvent implements " + }, + { + "kind": "Reference", + "text": "UnknownEventInterface", + "canonicalReference": "@wapijs/wapi.js!UnknownEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/unknown/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "UnknownEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!UnknownEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `UnknownEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n code: string;\n message: string;\n title: string;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!UnknownEvent#code:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "code: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "code", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!UnknownEvent#message:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "message: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "message", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!UnknownEvent#title:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "title: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "title", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "implementsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!UnknownEventInterface:interface", + "docComment": "/**\n * @interface\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface UnknownEventInterface " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/unknown/interface.d.ts", + "releaseTag": "Public", + "name": "UnknownEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!UnknownEventInterface#code:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "code: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "code", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!UnknownEventInterface#message:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "message: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "message", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!UnknownEventInterface#title:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "title: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "title", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!VideoMessage:class", + "docComment": "/**\n * @extends {BaseMessage} @implements {VideoMessageInterface} @class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class VideoMessage extends " + }, + { + "kind": "Reference", + "text": "BaseMessage", + "canonicalReference": "@wapijs/wapi.js!~BaseMessage:class" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Video", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Video:member" + }, + { + "kind": "Content", + "text": ">" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "VideoMessageInterface", + "canonicalReference": "@wapijs/wapi.js!VideoMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "VideoMessage", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!VideoMessage:constructor(1)", + "docComment": "/**\n * @constructor @memberof VideoMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!VideoMessage#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!VideoMessage#toJson:member(1)", + "docComment": "/**\n * Function used to get the get the whatsapp cloud api payload for audio message @memberof VideoMessage\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "toJson(params: " + }, + { + "kind": "Content", + "text": "{\n to: string;\n replyToMessageId?: string;\n }" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Reference", + "text": "Extract", + "canonicalReference": "!Extract:type" + }, + { + "kind": "Content", + "text": "<" + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": ", {\n type: " + }, + { + "kind": "Reference", + "text": "MessageTypeEnum.Video", + "canonicalReference": "@wapijs/wapi.js!~MessageTypeEnum.Video:member" + }, + { + "kind": "Content", + "text": ";\n }>" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 11 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "toJson" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 5 + }, + "implementsTokenRanges": [ + { + "startIndex": 6, + "endIndex": 7 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!VideoMessageEvent:class", + "docComment": "/**\n * @class @extends {MediaMessageEvent} @implements {VideoMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class VideoMessageEvent extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEvent", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEvent:class" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "VideoMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!VideoMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/video/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "VideoMessageEvent", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!VideoMessageEvent:constructor(1)", + "docComment": "/**\n * Constructs a new instance of the `VideoMessageEvent` class\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n data: {\n video: " + }, + { + "kind": "Reference", + "text": "VideoMessage", + "canonicalReference": "@wapijs/wapi.js!VideoMessage:class" + }, + { + "kind": "Content", + "text": ";\n from: string;\n messageId: string;\n timestamp: string;\n mediaId: string;\n mimeType: string;\n sha256: string;\n isForwarded: boolean;\n };\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 6 + }, + "isOptional": false + } + ] + }, + { + "kind": "Property", + "canonicalReference": "@wapijs/wapi.js!VideoMessageEvent#video:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "video: " + }, + { + "kind": "Reference", + "text": "VideoMessage", + "canonicalReference": "@wapijs/wapi.js!VideoMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "video", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isStatic": false, + "isProtected": false, + "isAbstract": false + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!VideoMessageEventInterface:interface", + "docComment": "/**\n * @interface @extends {MediaMessageEventInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface VideoMessageEventInterface extends " + }, + { + "kind": "Reference", + "text": "MediaMessageEventInterface", + "canonicalReference": "@wapijs/wapi.js!MediaMessageEventInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/events/video/interface.d.ts", + "releaseTag": "Public", + "name": "VideoMessageEventInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!VideoMessageEventInterface#video:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "video: " + }, + { + "kind": "Reference", + "text": "VideoMessage", + "canonicalReference": "@wapijs/wapi.js!VideoMessage:class" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "video", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Interface", + "canonicalReference": "@wapijs/wapi.js!VideoMessageInterface:interface", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "export interface VideoMessageInterface extends " + }, + { + "kind": "Reference", + "text": "BaseMessageInterface", + "canonicalReference": "@wapijs/wapi.js!~BaseMessageInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/structures/media/interface.d.ts", + "releaseTag": "Public", + "name": "VideoMessageInterface", + "preserveMemberOrder": false, + "members": [ + { + "kind": "PropertySignature", + "canonicalReference": "@wapijs/wapi.js!VideoMessageInterface#data:member", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "data: " + }, + { + "kind": "Reference", + "text": "z.infer", + "canonicalReference": "zod!TypeOf:type" + }, + { + "kind": "Content", + "text": "" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isReadonly": false, + "isOptional": false, + "releaseTag": "Public", + "name": "data", + "propertyTypeTokenRange": { + "startIndex": 1, + "endIndex": 7 + } + } + ], + "extendsTokenRanges": [ + { + "startIndex": 1, + "endIndex": 2 + } + ] + }, + { + "kind": "Class", + "canonicalReference": "@wapijs/wapi.js!Webhook:class", + "docComment": "/**\n * The webhook client for listening to incoming event notifications @class @extends {EventEmitter} @implements {WebhookInterface}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "export declare class Webhook extends " + }, + { + "kind": "Reference", + "text": "EventEmitter", + "canonicalReference": "@wapijs/wapi.js!~EventEmitter" + }, + { + "kind": "Content", + "text": " implements " + }, + { + "kind": "Reference", + "text": "WebhookInterface", + "canonicalReference": "@wapijs/wapi.js!~WebhookInterface:interface" + }, + { + "kind": "Content", + "text": " " + } + ], + "fileUrlPath": "dist/esm/src/webhook/index.d.ts", + "releaseTag": "Public", + "isAbstract": false, + "name": "Webhook", + "preserveMemberOrder": false, + "members": [ + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Webhook#_postRequestHandler:member(1)", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "_postRequestHandler(request: " + }, + { + "kind": "Reference", + "text": "Request", + "canonicalReference": "@types/express!e.Request:interface" + }, + { + "kind": "Content", + "text": ", response: " + }, + { + "kind": "Reference", + "text": "Response", + "canonicalReference": "@types/express!e.Response:interface" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 5, + "endIndex": 6 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "request", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + }, + { + "parameterName": "response", + "parameterTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "_postRequestHandler" + }, + { + "kind": "Constructor", + "canonicalReference": "@wapijs/wapi.js!Webhook:constructor(1)", + "docComment": "/**\n * @constructor Constructs a new instance of the `Webhook` class\n *\n * @param params - \n *\n * @param - {Client} params.client\n *\n * @param - {string} params.webhookSecret\n *\n * @param - {string} params.webhookEndpoint\n *\n * @param - {number} params.port\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "constructor(params: " + }, + { + "kind": "Content", + "text": "{\n client: " + }, + { + "kind": "Reference", + "text": "Client", + "canonicalReference": "@wapijs/wapi.js!Client:class" + }, + { + "kind": "Content", + "text": ";\n webhookSecret: string;\n webhookEndpoint: string;\n port: number;\n }" + }, + { + "kind": "Content", + "text": ");" + } + ], + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "params", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 4 + }, + "isOptional": false + } + ] + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Webhook#getEndpoint:member(1)", + "docComment": "/**\n * Getter for the webhook endpoint\n *\n * @returns {string}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "getEndpoint(): " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "getEndpoint" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Webhook#getPort:member(1)", + "docComment": "/**\n * Returns current configured webhook port\n *\n * @returns {number}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "getPort(): " + }, + { + "kind": "Content", + "text": "number" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "getPort" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Webhook#isListening:member(1)", + "docComment": "/**\n * Returns if webhooks is listening\n *\n * @returns {boolean}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "isListening(): " + }, + { + "kind": "Content", + "text": "boolean" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [], + "isOptional": false, + "isAbstract": false, + "name": "isListening" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Webhook#listen:member(1)", + "docComment": "/**\n * starts listening on the webhook server\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "listen(cb: " + }, + { + "kind": "Content", + "text": "() => void" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "cb", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "listen" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Webhook#setEndpoint:member(1)", + "docComment": "/**\n * Set new webhook endpoint (this will replace the previously set webhook endpoint)\n *\n * @param - {string}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "setEndpoint(path: " + }, + { + "kind": "Content", + "text": "string" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "path", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "setEndpoint" + }, + { + "kind": "Method", + "canonicalReference": "@wapijs/wapi.js!Webhook#setPort:member(1)", + "docComment": "/**\n * Set new webhook port (this will replace the previously set webhook port)\n *\n * @param - {number}\n */\n", + "excerptTokens": [ + { + "kind": "Content", + "text": "setPort(port: " + }, + { + "kind": "Content", + "text": "number" + }, + { + "kind": "Content", + "text": "): " + }, + { + "kind": "Content", + "text": "void" + }, + { + "kind": "Content", + "text": ";" + } + ], + "isStatic": false, + "returnTypeTokenRange": { + "startIndex": 3, + "endIndex": 4 + }, + "releaseTag": "Public", + "isProtected": false, + "overloadIndex": 1, + "parameters": [ + { + "parameterName": "port", + "parameterTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "isOptional": false + } + ], + "isOptional": false, + "isAbstract": false, + "name": "setPort" + } + ], + "extendsTokenRange": { + "startIndex": 1, + "endIndex": 2 + }, + "implementsTokenRanges": [ + { + "startIndex": 3, + "endIndex": 4 + } + ] + } + ] + } + ] +} diff --git a/packages/wapi.js/package.json b/packages/wapi.js/package.json index 8065875..edf07c6 100644 --- a/packages/wapi.js/package.json +++ b/packages/wapi.js/package.json @@ -22,7 +22,8 @@ "lint": "pnpm eslint . --max-warnings=20", "pretty": "pnpm prettier --write \"src/**/*.ts\"", "clean-install": "rm -rf ./node_modules && pnpm install --frozen-lockfile", - "doc:gen": "docgen -i '*.ts' -c ./docs/index.json -r ./ -o ./docs/docs.json --typescript" + "docs:new": "api-extractor run --local", + "doc:gen": "docgen -i '*.ts' -c ./docs/index.json -r ./ -o ./docs/docs.json --typescript && pnpm run docs:new" }, "keywords": [], "author": { @@ -38,10 +39,10 @@ "license": "Apache-2.0", "devDependencies": { "@types/express": "^4.17.18", - "concurrently": "^8.2.1", "@wapijs/eslint-config": "workspace:*", "@wapijs/prettier-config": "workspace:*", "@wapijs/typescript-config": "workspace:*", + "concurrently": "^8.2.1", "lint-staged": "^14.0.1", "prettier": "^3.0.3", "ts-enum-utils": "^1.0.3", @@ -51,6 +52,7 @@ }, "dependencies": { "@discordjs/docgen": "^0.12.1", + "@microsoft/api-extractor": "^7.43.1", "dayjs": "^1.11.9", "express": "^4.18.2", "zod": "^3.22.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a5881c..413a6c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,9 +83,24 @@ importers: '@heroicons/react': specifier: ^2.1.3 version: 2.1.3(react@18.3.0) + '@microsoft/api-extractor-model': + specifier: ^7.28.14 + version: 7.28.14(@types/node@20.8.7) + '@microsoft/tsdoc': + specifier: ^0.14.2 + version: 0.14.2 + '@microsoft/tsdoc-config': + specifier: ^0.16.2 + version: 0.16.2 + '@react-icons/all-files': + specifier: ^4.1.0 + version: 4.1.0(react@18.3.0) clsx: specifier: ^2.1.0 version: 2.1.1 + cmdk: + specifier: ^1.0.0 + version: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) next: specifier: 14.2.3 version: 14.2.3(react-dom@18.3.0)(react@18.3.0) @@ -95,10 +110,16 @@ importers: react-dom: specifier: ^18 version: 18.3.0(react@18.3.0) + react-use: + specifier: ^17.5.0 + version: 17.5.0(react-dom@18.3.0)(react@18.3.0) react-wrap-balancer: specifier: ^1.1.0 version: 1.1.0(react@18.3.0) devDependencies: + '@discordjs/docgen': + specifier: ^0.12.1 + version: 0.12.1(typescript@5.0.4) '@types/node': specifier: ^20 version: 20.8.7 @@ -123,6 +144,9 @@ importers: '@wapijs/ui': specifier: workspace:* version: link:../../packages/ui + docgen: + specifier: link:@types/@discordjs/docgen + version: link:@types/@discordjs/docgen postcss: specifier: ^8 version: 8.4.31 @@ -137,28 +161,28 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^7.7.1 - version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@9.1.1)(typescript@5.0.4) + version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.0.4) '@typescript-eslint/parser': specifier: ^7.7.1 - version: 7.7.1(eslint@9.1.1)(typescript@5.0.4) + version: 7.7.1(eslint@8.57.0)(typescript@5.0.4) eslint: - specifier: ^9.1.1 - version: 9.1.1 + specifier: ^8.57.0 + version: 8.57.0 eslint-config-next: specifier: ^14.2.3 - version: 14.2.3(eslint@9.1.1)(typescript@5.0.4) + version: 14.2.3(eslint@8.57.0)(typescript@5.0.4) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.1.1) + version: 9.1.0(eslint@8.57.0) eslint-import-resolver-typescript: specifier: ^3.6.1 - version: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@9.1.1) + version: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-nibble: specifier: ^8.1.0 - version: 8.1.0(eslint@9.1.1) + version: 8.1.0(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + version: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) packages/example-chat-bot: dependencies: @@ -242,7 +266,7 @@ importers: packages/ui: dependencies: '@headlessui/react': - specifier: ^1.7.17 + specifier: ^1.7.19 version: 1.7.19(react-dom@18.3.1)(react@18.3.0) '@heroicons/react': specifier: ^2.1.3 @@ -250,6 +274,12 @@ importers: '@radix-ui/react-scroll-area': specifier: ^1.0.5 version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.1)(react@18.3.0) + '@react-icons/all-files': + specifier: ^4.1.0 + version: 4.1.0(react@18.3.0) + bright: + specifier: ^0.8.5 + version: 0.8.5(react@18.3.0) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -265,6 +295,12 @@ importers: react-icons: specifier: ^4.12.0 version: 4.12.0(react@18.3.0) + rehype-slug: + specifier: ^6.0.0 + version: 6.0.0 + remark-gfm: + specifier: ^4.0.0 + version: 4.0.0 tailwind-merge: specifier: ^2.2.0 version: 2.3.0 @@ -302,6 +338,9 @@ importers: '@discordjs/docgen': specifier: ^0.12.1 version: 0.12.1(typescript@5.0.4) + '@microsoft/api-extractor': + specifier: ^7.43.1 + version: 7.43.1(@types/node@20.8.7) dayjs: specifier: ^1.11.9 version: 1.11.10 @@ -382,7 +421,6 @@ packages: /@babel/helper-string-parser@7.24.1: resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} - dev: false /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} @@ -403,7 +441,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.24.0 - dev: false /@babel/runtime@7.23.2: resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} @@ -424,12 +461,15 @@ packages: '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - dev: false /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@code-hike/lighter@0.8.1: + resolution: {integrity: sha512-St4rPmB7C2EWmAK1sAbvD3lZeM7UDInVDMjQDzEDsu4Q3B3AqF25vXedQK51U0UO0MCOASgBBdTiNwvJAfIqMQ==} + dev: false + /@commitlint/cli@17.8.1: resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==} engines: {node: '>=v14'} @@ -615,7 +655,6 @@ packages: typedoc: 0.23.28(typescript@5.0.4) transitivePeerDependencies: - typescript - dev: false /@emotion/is-prop-valid@0.8.8: resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} @@ -1071,16 +1110,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.1.1): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 9.1.1 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.10.0: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -1116,23 +1145,6 @@ packages: debug: 4.3.4(supports-color@5.5.0) espree: 9.6.1 globals: 13.23.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/eslintrc@3.0.2: - resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@5.5.0) - espree: 10.0.1 - globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1152,11 +1164,6 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@9.1.1: - resolution: {integrity: sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@headlessui/react@1.7.19(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} engines: {node: '>=10'} @@ -1209,17 +1216,6 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array@0.13.0: - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4(supports-color@5.5.0) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -1233,11 +1229,6 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true - /@humanwhocodes/retry@0.2.3: - resolution: {integrity: sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==} - engines: {node: '>=18.18'} - dev: true - /@ianvs/eslint-stats@2.0.0: resolution: {integrity: sha512-DnIVVAiXR4tfWERTiQxr1Prrs/uFEbC1C4gTGORMvbF4k7ENyVQeLcoUfNyhlAj2MB/OeorCrN3wSnYuDOUS6Q==} engines: {node: '>=8.0.0'} @@ -1307,6 +1298,49 @@ packages: engines: {node: '>=v12.0.0'} dependencies: lodash: 4.17.21 + + /@microsoft/api-extractor-model@7.28.14(@types/node@20.8.7): + resolution: {integrity: sha512-Bery/c8A8SsKPSvA82cTTuy/+OcxZbLRmKhPkk91/AJOQzxZsShcrmHFAGeiEqSIrv1nPZ3tKq9kfMLdCHmsqg==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.1.0(@types/node@20.8.7) + transitivePeerDependencies: + - '@types/node' + dev: false + + /@microsoft/api-extractor@7.43.1(@types/node@20.8.7): + resolution: {integrity: sha512-ohg40SsvFFgzHFAtYq5wKJc8ZDyY46bphjtnSvhSSlXpPTG7GHwyyXkn48UZiUCBwr2WC7TRC1Jfwz7nreuiyQ==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.28.14(@types/node@20.8.7) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.1.0(@types/node@20.8.7) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.10.1(@types/node@20.8.7) + '@rushstack/ts-command-line': 4.19.2(@types/node@20.8.7) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + dev: false + + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + dev: false + + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: false /@next/env@14.1.0: @@ -1525,7 +1559,7 @@ packages: /@radix-ui/primitive@1.0.1: resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.24.4 dev: false /@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.0)(react@18.3.0): @@ -1537,7 +1571,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.24.4 '@types/react': 18.3.0 react: 18.3.0 dev: false @@ -1551,9 +1585,43 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.24.4 + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.0)(react@18.3.0) '@types/react': 18.3.0 + '@types/react-dom': 18.3.0 + aria-hidden: 1.2.4 react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + react-remove-scroll: 2.5.5(@types/react@18.3.0)(react@18.3.0) dev: false /@radix-ui/react-direction@1.0.1(@types/react@18.3.0)(react@18.3.0): @@ -1570,6 +1638,126 @@ packages: react: 18.3.0 dev: false + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + '@types/react-dom': 18.3.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + '@types/react-dom': 18.3.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + + /@radix-ui/react-id@1.0.1(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + '@types/react-dom': 18.3.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + '@types/react-dom': 18.3.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: @@ -1583,7 +1771,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.24.4 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.0)(react@18.3.0) '@types/react': 18.3.0 @@ -1592,6 +1780,27 @@ packages: react-dom: 18.3.1(react@18.3.0) dev: false + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + '@types/react-dom': 18.3.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + dev: false + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: @@ -1605,7 +1814,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.24.4 '@radix-ui/react-slot': 1.0.2(@types/react@18.3.0)(react@18.3.0) '@types/react': 18.3.0 '@types/react-dom': 18.3.0 @@ -1651,7 +1860,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.24.4 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@18.3.0) '@types/react': 18.3.0 react: 18.3.0 @@ -1671,6 +1880,36 @@ packages: react: 18.3.0 dev: false + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@18.3.0) + '@types/react': 18.3.0 + react: 18.3.0 + dev: false + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.0)(react@18.3.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: @@ -1685,6 +1924,14 @@ packages: react: 18.3.0 dev: false + /@react-icons/all-files@4.1.0(react@18.3.0): + resolution: {integrity: sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==} + peerDependencies: + react: '*' + dependencies: + react: 18.3.0 + dev: false + /@rollup/rollup-android-arm-eabi@4.16.4: resolution: {integrity: sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==} cpu: [arm] @@ -1817,6 +2064,54 @@ packages: resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} dev: true + /@rushstack/node-core-library@4.1.0(@types/node@20.8.7): + resolution: {integrity: sha512-qz4JFBZJCf1YN5cAXa1dP6Mki/HrsQxc/oYGAGx29dF2cwF2YMxHoly0FBhMw3IEnxo5fMj0boVfoHVBkpkx/w==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 20.8.7 + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + z-schema: 5.0.5 + dev: false + + /@rushstack/rig-package@0.5.2: + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} + dependencies: + resolve: 1.22.8 + strip-json-comments: 3.1.1 + dev: false + + /@rushstack/terminal@0.10.1(@types/node@20.8.7): + resolution: {integrity: sha512-C6Vi/m/84IYJTkfzmXr1+W8Wi3MmBjVF/q3za91Gb3VYjKbpALHVxY6FgH625AnDe5Z0Kh4MHKWA3Z7bqgAezA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 4.1.0(@types/node@20.8.7) + '@types/node': 20.8.7 + supports-color: 8.1.1 + dev: false + + /@rushstack/ts-command-line@4.19.2(@types/node@20.8.7): + resolution: {integrity: sha512-cqmXXmBEBlzo9WtyUrHtF9e6kl0LvBY7aTSVX4jfnBfXWZQWnPq9JTFPlQZ+L/ZwjZ4HrNwQsOVvhe9oOucZkw==} + dependencies: + '@rushstack/terminal': 0.10.1(@types/node@20.8.7) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + dev: false + /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true @@ -1877,6 +2172,10 @@ packages: /@tsconfig/node16@1.0.4: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + /@types/argparse@1.0.38: + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + dev: false + /@types/body-parser@1.19.4: resolution: {integrity: sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==} dependencies: @@ -1900,6 +2199,12 @@ packages: '@types/node': 20.12.7 dev: true + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + dependencies: + '@types/ms': 0.7.34 + dev: false + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -1922,6 +2227,12 @@ packages: '@types/serve-static': 1.15.4 dev: true + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + dependencies: + '@types/unist': 3.0.2 + dev: false + /@types/http-errors@2.0.3: resolution: {integrity: sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==} dev: true @@ -1930,6 +2241,10 @@ packages: resolution: {integrity: sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==} dev: true + /@types/js-cookie@2.2.7: + resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} + dev: false + /@types/json-schema@7.0.14: resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} dev: true @@ -1944,18 +2259,21 @@ packages: /@types/linkify-it@3.0.5: resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} - dev: false /@types/markdown-it@12.2.3: resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} dependencies: '@types/linkify-it': 3.0.5 '@types/mdurl': 1.0.5 + + /@types/mdast@4.0.3: + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + dependencies: + '@types/unist': 3.0.2 dev: false /@types/mdurl@1.0.5: resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} - dev: false /@types/mime@1.3.4: resolution: {integrity: sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==} @@ -1969,6 +2287,10 @@ packages: resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} dev: true + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + dev: false + /@types/node@20.12.7: resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} dependencies: @@ -2033,6 +2355,10 @@ packages: '@types/node': 20.12.7 dev: true + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + dev: false + /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.0.4): resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2062,7 +2388,7 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@9.1.1)(typescript@5.0.4): + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2074,13 +2400,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.0.4) + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.0.4) '@typescript-eslint/scope-manager': 7.7.1 - '@typescript-eslint/type-utils': 7.7.1(eslint@9.1.1)(typescript@5.0.4) - '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.0.4) + '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.0.4) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.0.4) '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4(supports-color@5.5.0) - eslint: 9.1.1 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -2112,7 +2438,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.8.0(eslint@9.1.1)(typescript@5.0.4): + /@typescript-eslint/parser@6.8.0(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2127,13 +2453,13 @@ packages: '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.0.4) '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4(supports-color@5.5.0) - eslint: 9.1.1 + eslint: 8.57.0 typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.7.1(eslint@9.1.1)(typescript@5.0.4): + /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2148,7 +2474,7 @@ packages: '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.0.4) '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4(supports-color@5.5.0) - eslint: 9.1.1 + eslint: 8.57.0 typescript: 5.0.4 transitivePeerDependencies: - supports-color @@ -2190,7 +2516,7 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@7.7.1(eslint@9.1.1)(typescript@5.0.4): + /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2201,9 +2527,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.0.4) - '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.0.4) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.0.4) debug: 4.3.4(supports-color@5.5.0) - eslint: 9.1.1 + eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: @@ -2282,19 +2608,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.7.1(eslint@9.1.1)(typescript@5.0.4): + /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.7.1 '@typescript-eslint/types': 7.7.1 '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.0.4) - eslint: 9.1.1 + eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -2380,6 +2706,10 @@ packages: pretty-format: 29.7.0 dev: true + /@xobotyi/scrollbar-width@1.9.5: + resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} + dev: false + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -2408,14 +2738,6 @@ packages: acorn: 8.10.0 dev: true - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.11.3 - dev: true - /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} @@ -2425,12 +2747,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -2438,7 +2754,6 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} @@ -2454,7 +2769,6 @@ packages: engines: {node: '>=8.0.0'} dependencies: array-back: 3.1.0 - dev: false /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} @@ -2492,7 +2806,6 @@ packages: /ansi-sequence-parser@1.1.1: resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} - dev: false /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} @@ -2539,9 +2852,22 @@ packages: /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: false + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + /aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + dependencies: + tslib: 2.6.2 + dev: false + /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: @@ -2553,34 +2879,28 @@ packages: engines: {node: '>=0.12.0'} dependencies: typical: 2.6.1 - dev: false /array-back@2.0.0: resolution: {integrity: sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==} engines: {node: '>=4'} dependencies: typical: 2.6.1 - dev: false /array-back@3.1.0: resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} engines: {node: '>=6'} - dev: false /array-back@4.0.2: resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} engines: {node: '>=8'} - dev: false /array-back@5.0.0: resolution: {integrity: sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==} engines: {node: '>=10'} - dev: false /array-back@6.2.2: resolution: {integrity: sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==} engines: {node: '>=12.17'} - dev: false /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -2718,6 +3038,10 @@ packages: dequal: 2.0.3 dev: true + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2739,7 +3063,6 @@ packages: /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: false /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} @@ -2778,6 +3101,16 @@ packages: dependencies: fill-range: 7.0.1 + /bright@0.8.5(react@18.3.0): + resolution: {integrity: sha512-LOhh3jk8KLFMqhX67TSGP1kCb3qGXbiRLbyBToVOfrrrEa3omXHT44r0/L4/OOlKluaFcO7+11KLOM5xI50XvA==} + peerDependencies: + react: ^18 + dependencies: + '@code-hike/lighter': 0.8.1 + react: 18.3.0 + server-only: 0.0.1 + dev: false + /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -2840,7 +3173,6 @@ packages: array-back: 4.0.2 fs-then-native: 2.0.0 mkdirp2: 1.0.5 - dev: false /call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} @@ -2880,6 +3212,9 @@ packages: engines: {node: '>= 10'} dependencies: lodash: 4.17.21 + + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false /chai@4.3.10: @@ -2928,6 +3263,10 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: false + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true @@ -3018,13 +3357,27 @@ packages: engines: {node: '>=6'} dev: false + /cmdk@1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.0)(react-dom@18.3.0)(react@18.3.0) + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + dev: false + /collect-all@1.0.4: resolution: {integrity: sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==} engines: {node: '>=0.10.0'} dependencies: stream-connect: 1.0.2 stream-via: 1.0.4 - dev: false /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3059,7 +3412,6 @@ packages: find-replace: 3.0.0 lodash.camelcase: 4.3.0 typical: 4.0.0 - dev: false /command-line-tool@0.8.0: resolution: {integrity: sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==} @@ -3070,7 +3422,6 @@ packages: command-line-args: 5.2.1 command-line-usage: 4.1.0 typical: 2.6.1 - dev: false /command-line-usage@4.1.0: resolution: {integrity: sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==} @@ -3080,7 +3431,6 @@ packages: array-back: 2.0.0 table-layout: 0.4.5 typical: 2.6.1 - dev: false /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} @@ -3094,12 +3444,11 @@ packages: /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} - dev: false + requiresBuild: true /common-sequence@2.0.2: resolution: {integrity: sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==} engines: {node: '>=8'} - dev: false /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -3131,7 +3480,6 @@ packages: resolution: {integrity: sha512-n7LBL1zBzYdTpF1mx5DNcZnZn05CWIdsdvtPL4MosvqbBUK3Rq6VWEtGUuF3Y0s9/CIhMejezqlSkP6TnCJ/9g==} dependencies: walk-back: 2.0.1 - dev: false /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} @@ -3183,6 +3531,12 @@ packages: engines: {node: '>= 0.6'} dev: false + /copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + dependencies: + toggle-selection: 1.0.6 + dev: false + /cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@5.4.5): resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} engines: {node: '>=v14.21.3'} @@ -3226,6 +3580,20 @@ packages: which: 2.0.2 dev: true + /css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + dependencies: + hyphenate-style-name: 1.0.4 + dev: false + + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: false + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -3287,7 +3655,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 5.5.0 - dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -3302,6 +3669,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: false + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} @@ -3312,7 +3685,6 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: false /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -3349,13 +3721,22 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: true /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: false + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false + + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + dev: false + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -3394,7 +3775,6 @@ packages: reduce-without: 1.0.1 test-value: 3.0.0 walk-back: 5.1.0 - dev: false /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} @@ -3457,7 +3837,6 @@ packages: /entities@2.1.0: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - dev: false /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -3465,6 +3844,12 @@ packages: is-arrayish: 0.2.1 dev: true + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + dev: false + /es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} @@ -3651,13 +4036,17 @@ packages: /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} - dev: false /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false + /eslint-config-next@13.5.6(eslint@8.52.0)(typescript@5.0.4): resolution: {integrity: sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==} peerDependencies: @@ -3683,7 +4072,7 @@ packages: - supports-color dev: true - /eslint-config-next@14.2.3(eslint@9.1.1)(typescript@5.0.4): + /eslint-config-next@14.2.3(eslint@8.57.0)(typescript@5.0.4): resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -3694,14 +4083,14 @@ packages: dependencies: '@next/eslint-plugin-next': 14.2.3 '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.8.0(eslint@9.1.1)(typescript@5.0.4) - eslint: 9.1.1 + '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.0.4) + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.1.1) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) - eslint-plugin-jsx-a11y: 6.7.1(eslint@9.1.1) - eslint-plugin-react: 7.33.2(eslint@9.1.1) - eslint-plugin-react-hooks: 4.6.0(eslint@9.1.1) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.57.0) + eslint-plugin-react: 7.33.2(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) typescript: 5.0.4 transitivePeerDependencies: - eslint-import-resolver-webpack @@ -3717,13 +4106,13 @@ packages: eslint: 8.52.0 dev: true - /eslint-config-prettier@9.1.0(eslint@9.1.1): + /eslint-config-prettier@9.1.0(eslint@8.57.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.1.1 + eslint: 8.57.0 dev: true /eslint-filtered-fix@0.3.0(eslint@8.52.0): @@ -3736,13 +4125,13 @@ packages: optionator: 0.9.3 dev: true - /eslint-filtered-fix@0.3.0(eslint@9.1.1): + /eslint-filtered-fix@0.3.0(eslint@8.57.0): resolution: {integrity: sha512-UMHOza9epEn9T+yVT8RiCFf0JdALpVzmoH62Ez/zvxM540IyUNAkr7aH2Frkv6zlm9a/gbmq/sc7C4SvzZQXcA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.1.1 + eslint: 8.57.0 optionator: 0.9.3 dev: true @@ -3790,7 +4179,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.1.1): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3799,9 +4188,9 @@ packages: dependencies: debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 - eslint: 9.1.1 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + eslint: 8.57.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.1 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -3836,7 +4225,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@9.1.1): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3845,9 +4234,9 @@ packages: dependencies: debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 - eslint: 9.1.1 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + eslint: 8.57.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.1 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -3889,7 +4278,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3910,16 +4299,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@9.1.1)(typescript@5.0.4) + '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.0.4) debug: 3.2.7 - eslint: 9.1.1 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.1.1) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3940,11 +4329,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.0.4) + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.0.4) debug: 3.2.7 - eslint: 9.1.1 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@9.1.1) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color dev: true @@ -3966,7 +4355,7 @@ packages: optionator: 0.9.3 dev: true - /eslint-nibble@8.1.0(eslint@9.1.1): + /eslint-nibble@8.1.0(eslint@8.57.0): resolution: {integrity: sha512-x9H/1oeuKdC0HsaWeBarOryqNLC+7QZfAZIAP0HnGcmiiPktFIQq/D0e+iiCSyqYLSaui3UwvH56sXMrf5oQhw==} engines: {node: '>=12.0.0'} hasBin: true @@ -3975,8 +4364,8 @@ packages: dependencies: '@ianvs/eslint-stats': 2.0.0 chalk: 4.1.2 - eslint: 9.1.1 - eslint-filtered-fix: 0.3.0(eslint@9.1.1) + eslint: 8.57.0 + eslint-filtered-fix: 0.3.0(eslint@8.57.0) eslint-formatter-friendly: 7.0.0 eslint-summary: 1.0.0 inquirer: 8.2.6 @@ -4018,7 +4407,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -4028,16 +4417,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.8.0(eslint@9.1.1)(typescript@5.0.4) + '@typescript-eslint/parser': 6.8.0(eslint@8.57.0)(typescript@5.0.4) 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: 9.1.1 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -4053,7 +4442,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -4063,16 +4452,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.0.4) + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.0.4) 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: 9.1.1 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.1.1) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -4113,7 +4502,7 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@9.1.1): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.57.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -4128,7 +4517,7 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.1.1 + eslint: 8.57.0 has: 1.0.4 jsx-ast-utils: 3.3.5 language-tags: 1.0.5 @@ -4147,13 +4536,13 @@ packages: eslint: 8.52.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@9.1.1): + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 9.1.1 + eslint: 8.57.0 dev: true /eslint-plugin-react@7.33.2(eslint@8.52.0): @@ -4181,7 +4570,7 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-react@7.33.2(eslint@9.1.1): + /eslint-plugin-react@7.33.2(eslint@8.57.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -4192,7 +4581,7 @@ packages: array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 es-iterator-helpers: 1.0.15 - eslint: 9.1.1 + eslint: 8.57.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -4214,14 +4603,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - /eslint-summary@1.0.0: resolution: {integrity: sha512-cHr5WiNFhu2guLQykhQV8O7BQcnpFLR6GdLjbQfDDL0yGy9U7dXC6zMUtwoxYgJRC/Wk3yZMc+I6Q15Z7r4j9Q==} engines: {node: '>=0.10.0'} @@ -4235,11 +4616,6 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /eslint@8.52.0: resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4293,7 +4669,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.9.1 + '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -4317,54 +4693,11 @@ packages: glob-parent: 6.0.2 globals: 13.23.0 graphemer: 1.4.0 - ignore: 5.2.4 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - 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 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint@9.1.1: - resolution: {integrity: sha512-b4cRQ0BeZcSEzPpY2PjFY70VbO32K7BStTGtBsnIGdTSEEQzBi8hPBcGQmTG2zUvFr9uLe0TK42bw8YszuHEqg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 3.0.2 - '@eslint/js': 9.1.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.2.3 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@5.5.0) - escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 - eslint-visitor-keys: 4.0.0 - espree: 10.0.1 - esquery: 1.5.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.1 imurmurhash: 0.1.4 is-glob: 4.0.3 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 @@ -4377,15 +4710,6 @@ packages: - supports-color dev: true - /espree@10.0.1: - resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 4.0.0 - dev: true - /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4499,7 +4823,6 @@ packages: /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} @@ -4512,7 +4835,6 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} @@ -4526,12 +4848,23 @@ packages: /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-loops@1.1.3: + resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} + dev: false + + /fast-shallow-equal@1.0.0: + resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} + dev: false + + /fastest-stable-stringify@2.0.2: + resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} + dev: false + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -4551,20 +4884,12 @@ packages: flat-cache: 3.1.1 dev: true - /file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - dependencies: - flat-cache: 4.0.1 - dev: true - /file-set@4.0.2: resolution: {integrity: sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==} engines: {node: '>=10'} dependencies: array-back: 5.0.0 glob: 7.2.3 - dev: false /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -4592,7 +4917,6 @@ packages: engines: {node: '>=4.0.0'} dependencies: array-back: 3.1.0 - dev: false /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} @@ -4619,14 +4943,6 @@ packages: rimraf: 3.0.2 dev: true - /flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - dependencies: - flatted: 3.2.9 - keyv: 4.5.4 - dev: true - /flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true @@ -4686,10 +5002,18 @@ packages: universalify: 2.0.0 dev: true + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: false + /fs-then-native@2.0.0: resolution: {integrity: sha512-X712jAOaWXkemQCAmWeg5rOT2i+KOpWz1Z/txk/cW0qlOu2oQ9H61vc5w3X/iyuUEfq/OyaFJ78/cZAQD1/bgA==} engines: {node: '>=4.0.0'} - dev: false /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -4735,6 +5059,11 @@ packages: has-symbols: 1.0.3 hasown: 2.0.0 + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: false + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -4766,6 +5095,10 @@ packages: through2: 4.0.2 dev: true + /github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -4835,11 +5168,6 @@ packages: type-fest: 0.20.2 dev: true - /globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - dev: true - /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -4882,7 +5210,6 @@ packages: wordwrap: 1.0.0 optionalDependencies: uglify-js: 3.17.4 - dev: false /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} @@ -4903,12 +5230,10 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} @@ -4941,6 +5266,18 @@ packages: dependencies: function-bind: 1.1.2 + /hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + dependencies: + '@types/hast': 3.0.4 + dev: false + + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + dependencies: + '@types/hast': 3.0.4 + dev: false + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -4983,6 +5320,10 @@ packages: hasBin: true dev: true + /hyphenate-style-name@1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + dev: false + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -5015,6 +5356,11 @@ packages: resolve-from: 4.0.0 dev: true + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: false + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -5038,6 +5384,13 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true + /inline-style-prefixer@7.0.0: + resolution: {integrity: sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ==} + dependencies: + css-in-js-utils: 3.1.0 + fast-loops: 1.1.3 + dev: false + /inquirer@8.2.6: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} @@ -5068,6 +5421,12 @@ packages: side-channel: 1.0.4 dev: true + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: false + /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -5202,6 +5561,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -5344,11 +5708,19 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: false + /joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} dev: true + /js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + dev: false + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -5363,7 +5735,6 @@ packages: resolution: {integrity: sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==} dependencies: xmlcreate: 2.0.4 - dev: false /jsdoc-api@7.2.0: resolution: {integrity: sha512-93YDnlm/OYTlLOFeNs4qAv0RBCJ0kGj67xQaWy8wrbk97Rw1EySitoOTHsTHXPEs3uyx2IStPKGrbE7LTnZXbA==} @@ -5378,7 +5749,6 @@ packages: object-to-spawn-args: 2.0.1 temp-path: 1.0.0 walk-back: 5.1.0 - dev: false /jsdoc-parse@6.2.1: resolution: {integrity: sha512-9viGRUUtWOk/G4V0+nQ6rfLucz5plxh5I74WbNSNm9h9NWugCDVX4jbG8hZP9QqKGpdTPDE+qJXzaYNos3wqTA==} @@ -5389,7 +5759,6 @@ packages: reduce-extract: 1.0.0 sort-array: 4.1.5 test-value: 3.0.0 - dev: false /jsdoc-to-markdown@7.1.1: resolution: {integrity: sha512-CI86d63xAVNO+ENumWwmJ034lYe5iGU5GwjtTA11EuphP9tpnoi4hrKgR/J8uME0D+o4KUpVfwX1fjZhc8dEtg==} @@ -5403,7 +5772,6 @@ packages: jsdoc-api: 7.2.0 jsdoc-parse: 6.2.1 walk-back: 5.1.0 - dev: false /jsdoc@4.0.2: resolution: {integrity: sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==} @@ -5425,7 +5793,6 @@ packages: requizzle: 0.2.4 strip-json-comments: 3.1.1 underscore: 1.13.6 - dev: false /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -5437,7 +5804,6 @@ packages: /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5457,6 +5823,12 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -5495,7 +5867,6 @@ packages: resolution: {integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==} dependencies: graceful-fs: 4.2.11 - dev: false /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} @@ -5526,7 +5897,6 @@ packages: resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} dependencies: uc.micro: 1.0.6 - dev: false /lint-staged@14.0.1: resolution: {integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==} @@ -5596,6 +5966,14 @@ packages: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} dev: false + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: false + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false + /lodash.isfunction@3.0.9: resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true @@ -5616,11 +5994,9 @@ packages: /lodash.omit@4.5.0: resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} - dev: false /lodash.padend@4.6.1: resolution: {integrity: sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==} - dev: false /lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} @@ -5664,6 +6040,10 @@ packages: wrap-ansi: 8.1.0 dev: true + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -5686,11 +6066,9 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - dev: false /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} @@ -5727,7 +6105,6 @@ packages: dependencies: '@types/markdown-it': 12.2.3 markdown-it: 12.3.2 - dev: false /markdown-it@12.3.2: resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} @@ -5738,17 +6115,145 @@ packages: linkify-it: 3.0.3 mdurl: 1.0.1 uc.micro: 1.0.6 + + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: false /marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} hasBin: true + + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + dependencies: + '@types/mdast': 4.0.3 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + 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 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + dependencies: + '@types/mdast': 4.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + dev: false + + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 + dev: false + + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: false + + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + dependencies: + '@types/mdast': 4.0.3 + dev: false + + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: false /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: false /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} @@ -5772,21 +6277,268 @@ packages: yargs-parser: 20.2.9 dev: true - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: false + + /micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.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.1.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.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + dependencies: + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + dev: false + + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: false + + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 dev: false - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + /micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + dev: false + + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: false + + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@5.5.0) + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + 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.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color dev: false /micromatch@4.0.5: @@ -5829,6 +6581,12 @@ packages: engines: {node: '>=4'} dev: true + /minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + dependencies: + brace-expansion: 1.1.11 + dev: false + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -5839,7 +6597,6 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: false /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} @@ -5867,13 +6624,11 @@ packages: /mkdirp2@1.0.5: resolution: {integrity: sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==} - dev: false /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - dev: false /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} @@ -5890,7 +6645,6 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -5906,6 +6660,24 @@ packages: object-assign: 4.1.1 thenify-all: 1.6.0 + /nano-css@5.6.1(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + css-tree: 1.1.3 + csstype: 3.1.2 + fastest-stable-stringify: 2.0.2 + inline-style-prefixer: 7.0.0 + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + rtl-css-js: 1.16.1 + stacktrace-js: 2.0.2 + stylis: 4.3.2 + dev: false + /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -5922,7 +6694,6 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false /next@14.1.0(react-dom@18.3.1)(react@18.3.0): resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} @@ -6081,7 +6852,6 @@ packages: /object-get@2.1.1: resolution: {integrity: sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==} - dev: false /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} @@ -6098,7 +6868,6 @@ packages: /object-to-spawn-args@2.0.1: resolution: {integrity: sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==} engines: {node: '>=8.0.0'} - dev: false /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} @@ -6525,7 +7294,6 @@ packages: /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - dev: true /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6593,6 +7361,92 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /react-remove-scroll-bar@2.3.6(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.0 + react: 18.3.0 + react-style-singleton: 2.2.1(@types/react@18.3.0)(react@18.3.0) + tslib: 2.6.2 + dev: false + + /react-remove-scroll@2.5.5(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.0 + react: 18.3.0 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.0)(react@18.3.0) + react-style-singleton: 2.2.1(@types/react@18.3.0)(react@18.3.0) + tslib: 2.6.2 + use-callback-ref: 1.3.2(@types/react@18.3.0)(react@18.3.0) + use-sidecar: 1.1.2(@types/react@18.3.0)(react@18.3.0) + dev: false + + /react-style-singleton@2.2.1(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.0 + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.0 + tslib: 2.6.2 + dev: false + + /react-universal-interface@0.6.2(react@18.3.0)(tslib@2.6.2): + resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} + peerDependencies: + react: '*' + tslib: '*' + dependencies: + react: 18.3.0 + tslib: 2.6.2 + dev: false + + /react-use@17.5.0(react-dom@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-PbfwSPMwp/hoL847rLnm/qkjg3sTRCvn6YhUZiHaUa3FA6/aNoFX79ul5Xt70O1rK+9GxSVqkY0eTwMdsR/bWg==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@types/js-cookie': 2.2.7 + '@xobotyi/scrollbar-width': 1.9.5 + copy-to-clipboard: 3.3.3 + fast-deep-equal: 3.1.3 + fast-shallow-equal: 1.0.0 + js-cookie: 2.2.1 + nano-css: 5.6.1(react-dom@18.3.0)(react@18.3.0) + react: 18.3.0 + react-dom: 18.3.0(react@18.3.0) + react-universal-interface: 0.6.2(react@18.3.0)(tslib@2.6.2) + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + set-harmonic-interval: 1.0.1 + throttle-debounce: 3.0.1 + ts-easing: 0.2.0 + tslib: 2.6.2 + dev: false + /react-wrap-balancer@1.1.0(react@18.3.0): resolution: {integrity: sha512-EhF3jOZm5Fjx+Cx41e423qOv2c2aOvXAtym2OHqrGeMUnwERIyNsRBgnfT3plB170JmuYvts8K2KSPEIerKr5A==} peerDependencies: @@ -6659,29 +7513,24 @@ packages: engines: {node: '>=0.10.0'} dependencies: test-value: 1.1.0 - dev: false /reduce-flatten@1.0.1: resolution: {integrity: sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==} engines: {node: '>=0.10.0'} - dev: false /reduce-flatten@3.0.1: resolution: {integrity: sha512-bYo+97BmUUOzg09XwfkwALt4PQH1M5L0wzKerBt6WLm3Fhdd43mMS89HiT1B9pJIqko/6lWx3OnV4J9f2Kqp5Q==} engines: {node: '>=8'} - dev: false /reduce-unique@2.0.1: resolution: {integrity: sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==} engines: {node: '>=6'} - dev: false /reduce-without@1.0.1: resolution: {integrity: sha512-zQv5y/cf85sxvdrKPlfcRzlDn/OqKFThNimYmsS3flmkioKvkUGn2Qg9cJVoQiEvdxFGLE0MQER/9fZ9sUqdxg==} engines: {node: '>=0.10.0'} dependencies: test-value: 2.1.0 - dev: false /reflect.getprototypeof@1.0.4: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} @@ -6707,6 +7556,48 @@ packages: set-function-name: 2.0.1 dev: true + /rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.0 + unist-util-visit: 5.0.0 + dev: false + + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 + dev: false + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -6721,6 +7612,9 @@ packages: resolution: {integrity: sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==} dependencies: lodash: 4.17.21 + + /resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} dev: false /resolve-from@4.0.0: @@ -6744,6 +7638,13 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true + /resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + dev: false + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -6826,6 +7727,12 @@ packages: fsevents: 2.3.3 dev: true + /rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + dependencies: + '@babel/runtime': 7.24.4 + dev: false + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -6878,6 +7785,11 @@ packages: loose-envify: 1.4.0 dev: false + /screenfull@5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + dev: false + /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -6894,7 +7806,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /semver@7.6.0: resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} @@ -6937,6 +7848,10 @@ packages: - supports-color dev: false + /server-only@0.0.1: + resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} + dev: false + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -6955,6 +7870,11 @@ packages: has-property-descriptors: 1.0.1 dev: true + /set-harmonic-interval@1.0.1: + resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} + engines: {node: '>=6.9'} + dev: false + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false @@ -6982,7 +7902,6 @@ packages: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 - dev: false /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -7030,12 +7949,16 @@ packages: dependencies: array-back: 5.0.0 typical: 6.0.1 - dev: false /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map@0.5.6: + resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} + engines: {node: '>=0.10.0'} + dev: false + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -7079,10 +8002,39 @@ packages: readable-stream: 3.6.2 dev: true + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: false + + /stack-generator@2.0.10: + resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + dependencies: + stackframe: 1.3.4 + dev: false + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + dev: false + + /stacktrace-gps@3.1.2: + resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} + dependencies: + source-map: 0.5.6 + stackframe: 1.3.4 + dev: false + + /stacktrace-js@2.0.2: + resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + dependencies: + error-stack-parser: 2.1.4 + stack-generator: 2.0.10 + stacktrace-gps: 3.1.2 + dev: false + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -7097,12 +8049,10 @@ packages: engines: {node: '>=0.10.0'} dependencies: array-back: 1.0.4 - dev: false /stream-via@1.0.4: resolution: {integrity: sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==} engines: {node: '>=0.10.0'} - dev: false /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} @@ -7112,7 +8062,6 @@ packages: /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} - dev: true /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -7259,6 +8208,10 @@ packages: react: 18.3.0 dev: false + /stylis@4.3.2: + resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} + dev: false + /sucrase@3.34.0: resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} engines: {node: '>=8'} @@ -7282,7 +8235,6 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -7296,7 +8248,6 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -7311,7 +8262,6 @@ packages: lodash.padend: 4.6.1 typical: 2.6.1 wordwrapjs: 3.0.0 - dev: false /tailwind-merge@2.3.0: resolution: {integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==} @@ -7356,7 +8306,6 @@ packages: /temp-path@1.0.0: resolution: {integrity: sha512-TvmyH7kC6ZVTYkqCODjJIbgvu0FKiwQpZ4D1aknE7xpcDf/qEOB8KZEK5ef2pfbVoiBhNWs3yx4y+ESMtNYmlg==} - dev: false /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -7373,7 +8322,6 @@ packages: dependencies: array-back: 1.0.4 typical: 2.6.1 - dev: false /test-value@2.1.0: resolution: {integrity: sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==} @@ -7381,7 +8329,6 @@ packages: dependencies: array-back: 1.0.4 typical: 2.6.1 - dev: false /test-value@3.0.0: resolution: {integrity: sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==} @@ -7389,7 +8336,6 @@ packages: dependencies: array-back: 2.0.0 typical: 2.6.1 - dev: false /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} @@ -7411,6 +8357,11 @@ packages: dependencies: any-promise: 1.3.0 + /throttle-debounce@3.0.1: + resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} + engines: {node: '>=10'} + dev: false + /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: @@ -7445,7 +8396,6 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - dev: false /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -7453,6 +8403,10 @@ packages: dependencies: is-number: 7.0.0 + /toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + dev: false + /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -7481,6 +8435,10 @@ packages: engines: {node: '>=8'} dev: true + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + dev: false + /ts-api-utils@1.0.3(typescript@5.0.4): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} @@ -7499,6 +8457,10 @@ packages: typescript: 5.0.4 dev: true + /ts-easing@0.2.0: + resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} + dev: false + /ts-enum-utils@1.0.3: resolution: {integrity: sha512-RX46pmBjxDJNsiXd58whBNbLAMjbfHxF6doJXmg7f52rg6JWSNP7VIS1qDcePhzdHtetAenC81PbPRA2eJIU5g==} dependencies: @@ -7794,7 +8756,6 @@ packages: minimatch: 7.4.6 shiki: 0.14.5 typescript: 5.0.4 - dev: false /typescript@2.8.3: resolution: {integrity: sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==} @@ -7807,6 +8768,12 @@ packages: engines: {node: '>=12.20'} hasBin: true + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: false + /typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -7815,21 +8782,17 @@ packages: /typical@2.6.1: resolution: {integrity: sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==} - dev: false /typical@4.0.0: resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} engines: {node: '>=8'} - dev: false /typical@6.0.1: resolution: {integrity: sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==} engines: {node: '>=10'} - dev: false /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: false /ufo@1.3.1: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} @@ -7840,7 +8803,6 @@ packages: engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true - dev: false optional: true /unbox-primitive@1.0.2: @@ -7858,7 +8820,6 @@ packages: /underscore@1.13.6: resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} - dev: false /undici-types@5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} @@ -7867,6 +8828,50 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.1 + dev: false + + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + dev: false + + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: false + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} @@ -7892,7 +8897,37 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - dev: true + + /use-callback-ref@1.3.2(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.0 + react: 18.3.0 + tslib: 2.6.2 + dev: false + + /use-sidecar@1.1.2(@types/react@18.3.0)(react@18.3.0): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.0 + detect-node-es: 1.1.0 + react: 18.3.0 + tslib: 2.6.2 + dev: false /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -7921,11 +8956,31 @@ packages: spdx-expression-parse: 3.0.1 dev: true + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + dev: false + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + dev: false + + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + dev: false + /vite-node@0.34.6(@types/node@20.8.7): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} @@ -8051,21 +9106,17 @@ packages: /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: false /vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: false /walk-back@2.0.1: resolution: {integrity: sha512-Nb6GvBR8UWX1D+Le+xUq0+Q1kFmRBIWVrfLnQAOmcpEzA9oAxwJ9gIr36t9TWYfzvWRvuMtjHiVsJYEkXWaTAQ==} engines: {node: '>=0.10.0'} - dev: false /walk-back@5.1.0: resolution: {integrity: sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==} engines: {node: '>=12.17'} - dev: false /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -8152,7 +9203,6 @@ packages: /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: false /wordwrapjs@3.0.0: resolution: {integrity: sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==} @@ -8160,7 +9210,6 @@ packages: dependencies: reduce-flatten: 1.0.1 typical: 2.6.1 - dev: false /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -8194,7 +9243,6 @@ packages: /xmlcreate@2.0.4: resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} - dev: false /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} @@ -8203,7 +9251,6 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml@2.3.1: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} @@ -8246,6 +9293,22 @@ packages: engines: {node: '>=12.20'} dev: true + /z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.11.0 + optionalDependencies: + commander: 9.5.0 + dev: false + /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false + + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false From 64ead9f5a87963fa28895576f24753f203a67461 Mon Sep 17 00:00:00 2001 From: sarthakjdev Date: Mon, 29 Apr 2024 17:17:24 +0530 Subject: [PATCH 33/52] feat: docs WIP Signed-off-by: sarthakjdev --- api-extractor.json | 425 ++++++++++++++++++ .../src/app/docs/[version]/function.ts | 49 ++ .../src/app/docs/[version]/layout.tsx | 7 + apps/wapijs.co/src/components/cmd-k.tsx | 137 ++++++ .../wapijs.co/src/components/code-heading.tsx | 19 + .../components/documentation-container.tsx | 5 + .../documentation-item/class/index.tsx | 25 ++ .../documentation-item/enum/index.tsx | 24 + .../documentation-item/enum/member.tsx | 23 + .../function/FunctionBody.tsx | 23 + .../documentation-item/function/index.tsx | 34 ++ .../documentation-item/interface/index.tsx | 18 + .../components/documentation-item/members.tsx | 13 + .../documentation-item/method/Method.tsx | 41 ++ .../method/MethodDocumentation.tsx | 30 ++ .../method/MethodHeader.tsx | 32 ++ .../section/ConstructorSection.tsx | 19 + .../section/DocumentationSection.tsx | 18 + .../section/MethodsSection.tsx | 50 +++ .../section/ParametersSection.tsx | 17 + .../section/PropertiesSection.tsx | 12 + .../section/SummarySection.tsx | 21 + .../section/TypeParametersSection.tsx | 16 + .../section/param-table.tsx | 49 ++ .../documentation-item/type-alias/index.tsx | 20 + .../src/components/documentation-section.tsx | 18 + .../wapijs.co/src/components/excerpt-text.tsx | 83 ++++ apps/wapijs.co/src/components/footer.tsx | 0 apps/wapijs.co/src/components/header.tsx | 58 +++ .../src/components/hierarchy-text.tsx | 57 +++ .../src/components/inheritance-text.tsx | 17 + apps/wapijs.co/src/components/item-link.tsx | 28 ++ apps/wapijs.co/src/components/nav/sidebar.tsx | 124 +++++ .../src/components/object-header.tsx | 23 + apps/wapijs.co/src/components/panel.tsx | 10 + .../src/components/property-list.tsx | 39 ++ apps/wapijs.co/src/components/property.tsx | 47 ++ apps/wapijs.co/src/components/search-bar.tsx | 0 .../src/components/summary-section.tsx | 21 + .../src/components/tsdoc/BlockComment.tsx | 38 ++ apps/wapijs.co/src/components/tsdoc/TSDoc.tsx | 183 ++++++++ .../src/components/type-param-table.tsx | 40 ++ apps/wapijs.co/src/context/cmd-k-context.tsx | 17 + .../src/hooks/use-docs-path-meta.tsx | 24 + apps/wapijs.co/src/reusable-function.ts | 155 +++++++ apps/wapijs.co/src/types.ts | 9 + packages/ui/src/callout.tsx | 56 +++ packages/ui/src/discloure-section.tsx | 69 +++ packages/ui/src/dropdown-selector.tsx | 40 ++ .../ui/src/markdown-utils/md-renderer.tsx | 0 .../src/markdown-utils/syntax-highlighter.tsx | 27 ++ packages/ui/src/scroll-area.tsx | 80 ++++ packages/ui/src/selector.tsx | 43 ++ packages/ui/src/table.tsx | 54 +++ tsconfig.docs.json | 8 + 55 files changed, 2495 insertions(+) create mode 100644 api-extractor.json create mode 100644 apps/wapijs.co/src/app/docs/[version]/function.ts create mode 100644 apps/wapijs.co/src/app/docs/[version]/layout.tsx create mode 100644 apps/wapijs.co/src/components/cmd-k.tsx create mode 100644 apps/wapijs.co/src/components/code-heading.tsx create mode 100644 apps/wapijs.co/src/components/documentation-container.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/class/index.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/enum/index.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/enum/member.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/function/FunctionBody.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/function/index.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/interface/index.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/members.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/method/Method.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/method/MethodDocumentation.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/method/MethodHeader.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/section/ConstructorSection.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/section/DocumentationSection.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/section/MethodsSection.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/section/ParametersSection.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/section/PropertiesSection.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/section/SummarySection.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/section/TypeParametersSection.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/section/param-table.tsx create mode 100644 apps/wapijs.co/src/components/documentation-item/type-alias/index.tsx create mode 100644 apps/wapijs.co/src/components/documentation-section.tsx create mode 100644 apps/wapijs.co/src/components/excerpt-text.tsx create mode 100644 apps/wapijs.co/src/components/footer.tsx create mode 100644 apps/wapijs.co/src/components/header.tsx create mode 100644 apps/wapijs.co/src/components/hierarchy-text.tsx create mode 100644 apps/wapijs.co/src/components/inheritance-text.tsx create mode 100644 apps/wapijs.co/src/components/item-link.tsx create mode 100644 apps/wapijs.co/src/components/nav/sidebar.tsx create mode 100644 apps/wapijs.co/src/components/object-header.tsx create mode 100644 apps/wapijs.co/src/components/panel.tsx create mode 100644 apps/wapijs.co/src/components/property-list.tsx create mode 100644 apps/wapijs.co/src/components/property.tsx create mode 100644 apps/wapijs.co/src/components/search-bar.tsx create mode 100644 apps/wapijs.co/src/components/summary-section.tsx create mode 100644 apps/wapijs.co/src/components/tsdoc/BlockComment.tsx create mode 100644 apps/wapijs.co/src/components/tsdoc/TSDoc.tsx create mode 100644 apps/wapijs.co/src/components/type-param-table.tsx create mode 100644 apps/wapijs.co/src/context/cmd-k-context.tsx create mode 100644 apps/wapijs.co/src/hooks/use-docs-path-meta.tsx create mode 100644 apps/wapijs.co/src/reusable-function.ts create mode 100644 apps/wapijs.co/src/types.ts create mode 100644 packages/ui/src/callout.tsx create mode 100644 packages/ui/src/discloure-section.tsx create mode 100644 packages/ui/src/dropdown-selector.tsx create mode 100644 packages/ui/src/markdown-utils/md-renderer.tsx create mode 100644 packages/ui/src/markdown-utils/syntax-highlighter.tsx create mode 100644 packages/ui/src/scroll-area.tsx create mode 100644 packages/ui/src/selector.tsx create mode 100644 packages/ui/src/table.tsx create mode 100644 tsconfig.docs.json diff --git a/api-extractor.json b/api-extractor.json new file mode 100644 index 0000000..78b15ba --- /dev/null +++ b/api-extractor.json @@ -0,0 +1,425 @@ +/** + * Config file for API Extractor. For more info, please visit: https://api-extractor.com + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + + /** + * Optionally specifies another JSON config file that this file extends from. This provides a way for + * standard settings to be shared across multiple projects. + * + * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains + * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be + * resolved using NodeJS require(). + * + * SUPPORTED TOKENS: none + * DEFAULT VALUE: "" + */ + // "extends": "./shared/api-extractor-base.json" + // "extends": "my-package/include/api-extractor-base.json" + + /** + * Determines the "" token that can be used with other config file settings. The project folder + * typically contains the tsconfig.json and package.json config files, but the path is user-defined. + * + * The path is resolved relative to the folder of the config file that contains the setting. + * + * The default value for "projectFolder" is the token "", which means the folder is determined by traversing + * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder + * that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error + * will be reported. + * + * SUPPORTED TOKENS: + * DEFAULT VALUE: "" + */ + // "projectFolder": "..", + + /** + * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor + * analyzes the symbols exported by this module. + * + * The file extension must be ".d.ts" and not ".ts". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + */ + "mainEntryPointFilePath": "/dist-docs/index.d.ts", + + /** + * A list of NPM package names whose exports should be treated as part of this package. + * + * For example, suppose that Webpack is used to generate a distributed bundle for the project "library1", + * and another NPM package "library2" is embedded in this bundle. Some types from library2 may become part + * of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly + * imports library2. To avoid this, we can specify: + * + * "bundledPackages": [ "library2" ], + * + * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been + * local files for library1. + */ + "bundledPackages": [], + + /** + * Determines how the TypeScript compiler engine will be invoked by API Extractor. + */ + "compiler": { + /** + * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * Note: This setting will be ignored if "overrideTsconfig" is used. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/tsconfig.json" + */ + // "tsconfigFilePath": "/tsconfig.json", + /** + * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk. + * The object must conform to the TypeScript tsconfig schema: + * + * http://json.schemastore.org/tsconfig + * + * If omitted, then the tsconfig.json file will be read from the "projectFolder". + * + * DEFAULT VALUE: no overrideTsconfig section + */ + "overrideTsconfig": { + "compilerOptions": { + // Type Checking + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "exactOptionalPropertyTypes": true, + "noFallthroughCasesInSwitch": true, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noPropertyAccessFromIndexSignature": false, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "strict": true, + + // Modules + "allowArbitraryExtensions": false, + "allowImportingTsExtensions": false, + "module": "ESNext", + "moduleResolution": "nodenext", + "resolveJsonModule": true, + "resolvePackageJsonExports": false, + "resolvePackageJsonImports": false, + + // Emit + "declaration": true, + "declarationMap": true, + "importHelpers": false, + "newLine": "lf", + "noEmitHelpers": true, + "outDir": "dist", + "removeComments": false, + "sourceMap": true, + + // Interop Constraints + "esModuleInterop": false, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + + // Language and Environment + "experimentalDecorators": true, + "lib": ["ESNext"], + "target": "ES2022", + "useDefineForClassFields": true + } + } + /** + * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended + * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when + * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses + * for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck. + * + * DEFAULT VALUE: false + */ + // "skipLibCheck": true, + }, + + /** + * Configures how the API report file (*.api.md) will be generated. + */ + "apiReport": { + /** + * (REQUIRED) Whether to generate an API report. + */ + "enabled": false + + /** + * The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce + * a full file path. + * + * The file extension should be ".api.md", and the string should not contain a path separator such as "\" or "/". + * + * SUPPORTED TOKENS: , + * DEFAULT VALUE: ".api.md" + */ + // "reportFileName": ".api.md", + + /** + * Specifies the folder where the API report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy, + * e.g. for an API review. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/" + */ + // "reportFolder": "/temp/", + + /** + * Specifies the folder where the temporary report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * After the temporary file is written to disk, it is compared with the file in the "reportFolder". + * If they are different, a production build will fail. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/" + */ + // "reportTempFolder": "/temp/" + }, + + /** + * Configures how the doc model file (*.api.json) will be generated. + */ + "docModel": { + /** + * (REQUIRED) Whether to generate a doc model file. + */ + "enabled": true, + + /** + * The output path for the doc model file. The file extension should be ".api.json". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/.api.json" + */ + "apiJsonFilePath": "/docs/docs.api.json" + }, + + /** + * Configures how the .d.ts rollup file will be generated. + */ + "dtsRollup": { + /** + * (REQUIRED) Whether to generate the .d.ts rollup file. + */ + "enabled": false, + + /** + * Specifies the output path for a .d.ts rollup file to be generated without any trimming. + * This file will include all declarations that are exported by the main entry point. + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/dist/.d.ts" + */ + "untrimmedFilePath": "/dist-docs/index.d.ts" + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for an "alpha" release. + * This file will include only declarations that are marked as "@public", "@beta", or "@alpha". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "alphaTrimmedFilePath": "/dist/-alpha.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release. + * This file will include only declarations that are marked as "@public" or "@beta". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "betaTrimmedFilePath": "/dist/-beta.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release. + * This file will include only declarations that are marked as "@public". + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "publicTrimmedFilePath": "/dist/-public.d.ts", + + /** + * When a declaration is trimmed, by default it will be replaced by a code comment such as + * "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the + * declaration completely. + * + * DEFAULT VALUE: false + */ + // "omitTrimmingComments": true + }, + + /** + * Configures how the tsdoc-metadata.json file will be generated. + */ + "tsdocMetadata": { + /** + * Whether to generate the tsdoc-metadata.json file. + * + * DEFAULT VALUE: true + */ + // "enabled": true, + /** + * Specifies where the TSDoc metadata file should be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * The default value is "", which causes the path to be automatically inferred from the "tsdocMetadata", + * "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup + * falls back to "tsdoc-metadata.json" in the package folder. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "tsdocMetadataFilePath": "/dist/tsdoc-metadata.json" + }, + + /** + * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files + * will be written with Windows-style newlines. To use POSIX-style newlines, specify "lf" instead. + * To use the OS's default newline kind, specify "os". + * + * DEFAULT VALUE: "crlf" + */ + "newlineKind": "lf", + + /** + * Configures how API Extractor reports error and warning messages produced during analysis. + * + * There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages. + */ + "messages": { + /** + * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing + * the input .d.ts files. + * + * TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "compilerMessageReporting": { + /** + * Configures the default routing for messages that don't match an explicit rule in this table. + */ + "default": { + /** + * Specifies whether the message should be written to the the tool's output log. Note that + * the "addToApiReportFile" property may supersede this option. + * + * Possible values: "error", "warning", "none" + * + * Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail + * and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes + * the "--local" option), the warning is displayed but the build will not fail. + * + * DEFAULT VALUE: "warning" + */ + "logLevel": "warning" + + /** + * When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md), + * then the message will be written inside that file; otherwise, the message is instead logged according to + * the "logLevel" option. + * + * DEFAULT VALUE: false + */ + // "addToApiReportFile": false + } + + // "TS2551": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by API Extractor during its analysis. + * + * API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag" + * + * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings + */ + "extractorMessageReporting": { + "default": { + "logLevel": "warning" + // "addToApiReportFile": false + }, + + // Disable the following warning: + // (ae-missing-release-tag) "x" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) + "ae-missing-release-tag": { + "logLevel": "none" + } + + // "ae-extra-release-tag": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by the TSDoc parser when analyzing code comments. + * + * TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "tsdocMessageReporting": { + "default": { + "logLevel": "warning" + // "addToApiReportFile": false + } + + // "tsdoc-link-tag-unescaped-text": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + } + } +} diff --git a/apps/wapijs.co/src/app/docs/[version]/function.ts b/apps/wapijs.co/src/app/docs/[version]/function.ts new file mode 100644 index 0000000..01697ef --- /dev/null +++ b/apps/wapijs.co/src/app/docs/[version]/function.ts @@ -0,0 +1,49 @@ +import { type Documentation } from '@discordjs/docgen/dist/src/documentation' +import { ApiModel } from '@microsoft/api-extractor-model' +import { readFile } from 'node:fs/promises'; +import { join } from 'node:path'; +import { IS_DEVELOPMENT, IS_PRODUCTION } from '~/constant' + +export async function fetchDocumentationJsonDataFromSlug(version: string) { + try { + + if (IS_DEVELOPMENT) { + const res = await readFile( + join(process.cwd(), '..', '..', 'packages', 'wapi.js', 'docs', 'docs.api.json'), + 'utf8', + ); + + try { + const parsedJson = JSON.parse(res); + + console.log({ parsedJson }) + + return parsedJson + + } catch { + console.log(res); + return {}; + } + + + } else { + const response = await fetch( + `https://raw.githubusercontent.com/sarthakjdev/wapijs-docs-json/main/wapi.js/${version}.json`, + { + method: 'GET' + } + ).then(res => res.json()) + + console.log(response) + + + return response + } + + + + } catch (error) { + console.log(error) + return null + } +} diff --git a/apps/wapijs.co/src/app/docs/[version]/layout.tsx b/apps/wapijs.co/src/app/docs/[version]/layout.tsx new file mode 100644 index 0000000..7d413c1 --- /dev/null +++ b/apps/wapijs.co/src/app/docs/[version]/layout.tsx @@ -0,0 +1,7 @@ +export default function VersionHomeLayout({ + children +}: Readonly<{ + children: React.ReactNode +}>) { + return <>{children} +} diff --git a/apps/wapijs.co/src/components/cmd-k.tsx b/apps/wapijs.co/src/components/cmd-k.tsx new file mode 100644 index 0000000..2278f09 --- /dev/null +++ b/apps/wapijs.co/src/components/cmd-k.tsx @@ -0,0 +1,137 @@ +'use client' + +import type { ApiItemKind } from '@microsoft/api-extractor-model' +import { VscArrowRight } from '@react-icons/all-files/vsc/VscArrowRight' +import { VscSymbolClass } from '@react-icons/all-files/vsc/VscSymbolClass' +import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum' +import { VscSymbolInterface } from '@react-icons/all-files/vsc/VscSymbolInterface' +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod' +import { VscSymbolProperty } from '@react-icons/all-files/vsc/VscSymbolProperty' +import { VscSymbolVariable } from '@react-icons/all-files/vsc/VscSymbolVariable' +import { Dialog } from 'ariakit/dialog' +import { Command } from 'cmdk' +import { usePathname, useRouter } from 'next/navigation' +import { useEffect, useMemo, useState } from 'react' +import { useKey } from 'react-use' +import { useCmdK } from '~/contexts/cmdK' +import { client } from '~/util/search' + +function resolveIcon(item: keyof typeof ApiItemKind) { + switch (item) { + case 'Class': + return + case 'Enum': + return + case 'Interface': + return + case 'Property': + return + case 'TypeAlias': + return + case 'Variable': + return + default: + return + } +} + +export function CmdKDialog() { + const pathname = usePathname() + const router = useRouter() + const dialog = useCmdK() + const [search, setSearch] = useState('') + const [searchResults, setSearchResults] = useState([]) + + const packageName = pathname?.split('/').slice(3, 4)[0] + const branchName = pathname?.split('/').slice(4, 5)[0] + + const searchResultItems = useMemo( + () => + searchResults?.map((item, idx) => ( + { + router.push(item.path) + dialog!.setOpen(false) + }} + > +
+
+ {resolveIcon(item.kind)} +
+

{item.name}

+
+ {item.summary} +
+
+ {item.path} +
+
+
+ +
+
+ )) ?? [], + // eslint-disable-next-line react-hooks/exhaustive-deps + [searchResults] + ) + + useKey( + event => { + if (event.key === 'k' && (event.metaKey || event.ctrlKey)) { + event.preventDefault() + return true + } + + return false + }, + dialog!.toggle, + { event: 'keydown', options: {} }, + [] + ) + + useEffect(() => { + if (!dialog!.open) { + setSearch('') + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [dialog!.open]) + + useEffect(() => { + const searchDoc = async (searchString: string, version: string) => { + const res = await client + .index(`${packageName}-${version}`) + .search(searchString, { limit: 5 }) + setSearchResults(res.hits) + } + + if (search && packageName) { + void searchDoc(search, branchName?.replaceAll('.', '-') ?? 'main') + } else { + setSearchResults([]) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [search]) + + return ( + + + + + No results found + {search ? searchResultItems : null} + + + + ) +} diff --git a/apps/wapijs.co/src/components/code-heading.tsx b/apps/wapijs.co/src/components/code-heading.tsx new file mode 100644 index 0000000..97c40a7 --- /dev/null +++ b/apps/wapijs.co/src/components/code-heading.tsx @@ -0,0 +1,19 @@ +import Link from 'next/link' +import type { ReactNode } from 'react' + +export interface CodeListingProps { + readonly children: ReactNode + readonly className?: string | undefined + readonly href?: string | undefined +} + +export function CodeHeading({ href, className, children }: CodeListingProps) { + return ( +
+ {href ? link here todo : null} + {children} +
+ ) +} diff --git a/apps/wapijs.co/src/components/documentation-container.tsx b/apps/wapijs.co/src/components/documentation-container.tsx new file mode 100644 index 0000000..fa62b20 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-container.tsx @@ -0,0 +1,5 @@ +import type { PropsWithChildren } from 'react' + +export function DocumentationContainer({ children }: PropsWithChildren) { + return
{children}
+} diff --git a/apps/wapijs.co/src/components/documentation-item/class/index.tsx b/apps/wapijs.co/src/components/documentation-item/class/index.tsx new file mode 100644 index 0000000..9a1a9f2 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/class/index.tsx @@ -0,0 +1,25 @@ +import type { ApiClass, ApiConstructor } from '@microsoft/api-extractor-model' +import { ApiItemKind } from '@microsoft/api-extractor-model' +import { DocumentationContainer } from '~/components/documentation-container' +import { HierarchyText } from '~/components/hierarchy-text' +import { Members } from '~/components/documentation-item/members' +import { ObjectHeader } from '~/components/object-header' +import { ConstructorSection } from '~/components/documentation-item/section/ConstructorSection' +import { TypeParameterSection } from '~/components/documentation-item/section/TypeParametersSection' +export function Class({ clazz }: { readonly clazz: ApiClass }) { + const constructor = clazz.members.find(member => member.kind === ApiItemKind.Constructor) as + | ApiConstructor + | undefined + + return ( + + {/* */} + + + + {clazz.typeParameters.length ? : null} + {constructor ? : null} + + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/enum/index.tsx b/apps/wapijs.co/src/components/documentation-item/enum/index.tsx new file mode 100644 index 0000000..a2c72e2 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/enum/index.tsx @@ -0,0 +1,24 @@ +import type { ApiEnum } from '@microsoft/api-extractor-model' +import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum' +import { Panel } from '../../panel' +import { DocumentationContainer } from '../../documentation-container' +import { ObjectHeader } from '../../object-header' +import { DocumentationSection } from '../../documentation-section' +import { EnumMember } from './member' + +export function Enum({ item }: { readonly item: ApiEnum }) { + return ( + + + } padded title="Members"> +
+ {item.members.map((member, idx) => ( + + + + ))} +
+
+
+ ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/enum/member.tsx b/apps/wapijs.co/src/components/documentation-item/enum/member.tsx new file mode 100644 index 0000000..67ae454 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/enum/member.tsx @@ -0,0 +1,23 @@ +import type { ApiEnumMember } from '@microsoft/api-extractor-model' +import { CodeHeading } from '~/components/code-heading' +import { TSDoc } from '~/components/tsdoc/TSDoc' + +export function EnumMember({ member }: { readonly member: ApiEnumMember }) { + return ( +
+ + {member.name} + = + {/* {member.initializerExcerpt ? ( + + ) : null} */} + + {member.tsdocComment ? ( + + ) : null} +
+ ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/function/FunctionBody.tsx b/apps/wapijs.co/src/components/documentation-item/function/FunctionBody.tsx new file mode 100644 index 0000000..86b2514 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/function/FunctionBody.tsx @@ -0,0 +1,23 @@ +import type { ApiFunction } from '@microsoft/api-extractor-model' +import { SyntaxHighlighter } from '@wapijs/ui' +import { DocumentationContainer } from '~/components/documentation-container' +import { ParameterSection } from '~/components/documentation-item/section/ParametersSection' +import { SummarySection } from '~/components/summary-section' +import { TypeParameterSection } from '~/components/documentation-item/section/TypeParametersSection' + +export interface FunctionBodyProps { + mergedSiblingCount: number + overloadDocumentation: React.ReactNode[] +} + +export function FunctionBody({ item }: { readonly item: ApiFunction }) { + return ( + + {/* @ts-expect-error async component */} + + + {item.typeParameters.length ? : null} + {item.parameters.length ? : null} + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/function/index.tsx b/apps/wapijs.co/src/components/documentation-item/function/index.tsx new file mode 100644 index 0000000..b0993c7 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/function/index.tsx @@ -0,0 +1,34 @@ +import type { ApiFunction } from '@microsoft/api-extractor-model' +import dynamic from 'next/dynamic' +import { Header } from '~/components/header' +import { FunctionBody } from './FunctionBody' + +// const OverloadSwitcher = dynamic(async () => import('../../OverloadSwitcher')) + +export function Function({ item }: { readonly item: ApiFunction }) { + const header = ( +
+ ) + + if (item.getMergedSiblings().length > 1) { + const overloads = item + .getMergedSiblings() + .map((sibling, idx) => ( + + )) + + return ( +
+ {header} + {/* */} +
+ ) + } + + return ( +
+ {header} + +
+ ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/interface/index.tsx b/apps/wapijs.co/src/components/documentation-item/interface/index.tsx new file mode 100644 index 0000000..591232c --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/interface/index.tsx @@ -0,0 +1,18 @@ +import type { ApiInterface } from '@microsoft/api-extractor-model' +import { DocumentationContainer } from '~/components/documentation-container' +import { HierarchyText } from '~/components/hierarchy-text' +import { Members } from '~/components/documentation-item/members' +import { ObjectHeader } from '~/components/object-header' +import { TypeParameterSection } from '~/components/documentation-item/section/TypeParametersSection' + +export function Interface({ item }: { readonly item: ApiInterface }) { + return ( + + + + {item.typeParameters.length ? : null} + + {/* */} + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/members.tsx b/apps/wapijs.co/src/components/documentation-item/members.tsx new file mode 100644 index 0000000..22e4dd9 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/members.tsx @@ -0,0 +1,13 @@ +import type { ApiDeclaredItem, ApiItemContainerMixin } from '@microsoft/api-extractor-model' +import { MethodsSection } from './section/MethodsSection' +import { PropertiesSection } from './section/PropertiesSection' +import { hasProperties, hasMethods } from '~/reusable-function' + +export function Members({ item }: { readonly item: ApiDeclaredItem & ApiItemContainerMixin }) { + return ( + <> + {hasProperties(item) ? : null} + {hasMethods(item) ? : null} + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/method/Method.tsx b/apps/wapijs.co/src/components/documentation-item/method/Method.tsx new file mode 100644 index 0000000..a47adb0 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/method/Method.tsx @@ -0,0 +1,41 @@ +import type { + ApiDeclaredItem, + ApiItemContainerMixin, + ApiMethod, + ApiMethodSignature, +} from '@microsoft/api-extractor-model'; +import dynamic from 'next/dynamic'; +import { Fragment } from 'react'; +import { MethodDocumentation } from './MethodDocumentation'; +import { MethodHeader } from './MethodHeader'; + +// const OverloadSwitcher = dynamic(async () => import('../../OverloadSwitcher')); + +export function Method({ + method, + inheritedFrom, +}: { + readonly inheritedFrom?: (ApiDeclaredItem & ApiItemContainerMixin) | undefined; + readonly method: ApiMethod | ApiMethodSignature; +}) { + if (method.getMergedSiblings().length > 1) { + // We have overloads, use the overload switcher, but render + // each overload node on the server. + const overloads = method.getMergedSiblings().map((sibling, idx) => ( + + + + + )); + + // return ; + } + + // We have just a single method, render it on the server. + return ( + <> + + + + ); +} diff --git a/apps/wapijs.co/src/components/documentation-item/method/MethodDocumentation.tsx b/apps/wapijs.co/src/components/documentation-item/method/MethodDocumentation.tsx new file mode 100644 index 0000000..96edf67 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/method/MethodDocumentation.tsx @@ -0,0 +1,30 @@ +import type { + ApiDeclaredItem, + ApiItemContainerMixin, + ApiMethod, + ApiMethodSignature +} from '@microsoft/api-extractor-model' +import { ParameterTable } from '~/components/documentation-item/section/param-table' +import { InheritanceText } from '~/components/inheritance-text' +import { TSDoc } from '~/components/tsdoc/TSDoc' + +export interface MethodDocumentationProps { + readonly inheritedFrom?: (ApiDeclaredItem & ApiItemContainerMixin) | undefined + readonly method: ApiMethod | ApiMethodSignature +} + +export function MethodDocumentation({ method, inheritedFrom }: MethodDocumentationProps) { + const parent = method.parent as ApiDeclaredItem + + if (!(method.tsdocComment?.summarySection || method.parameters.length > 0)) { + return null + } + + return ( +
+ {method.tsdocComment ? : null} + {method.parameters.length ? : null} + {inheritedFrom && parent ? : null} +
+ ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/method/MethodHeader.tsx b/apps/wapijs.co/src/components/documentation-item/method/MethodHeader.tsx new file mode 100644 index 0000000..a5e0cca --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/method/MethodHeader.tsx @@ -0,0 +1,32 @@ +import type { ApiMethod, ApiMethodSignature } from '@microsoft/api-extractor-model' +import { useMemo } from 'react' +import { CodeHeading } from '~/components/code-heading' +import { ExcerptText } from '~/components/excerpt-text' +import { parametersString } from '~/reusable-function' +// import { Badges } from '~/components/Badges'; + +export function MethodHeader({ method }: { readonly method: ApiMethod | ApiMethodSignature }) { + const key = useMemo( + () => + `${method.displayName}${ + method.overloadIndex && method.overloadIndex > 1 ? `:${method.overloadIndex}` : '' + }`, + [method.displayName, method.overloadIndex] + ) + + return ( +
+
+ {/* */} + + {`${method.name}(${parametersString(method)})`} + : + + +
+
+ ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/section/ConstructorSection.tsx b/apps/wapijs.co/src/components/documentation-item/section/ConstructorSection.tsx new file mode 100644 index 0000000..a348929 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/section/ConstructorSection.tsx @@ -0,0 +1,19 @@ +import type { ApiConstructor } from '@microsoft/api-extractor-model' +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod' +import { CodeHeading } from '~/components/code-heading' +import { ParameterTable } from '~/components/documentation-item/section/param-table' +import { TSDoc } from '~/components/tsdoc/TSDoc' +import { parametersString } from '~/reusable-function' +import { DocumentationSection } from './DocumentationSection' + +export function ConstructorSection({ item }: { readonly item: ApiConstructor }) { + return ( + } padded title="Constructor"> +
+ {`constructor(${parametersString(item)})`} + {item.tsdocComment ? : null} + +
+
+ ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/section/DocumentationSection.tsx b/apps/wapijs.co/src/components/documentation-item/section/DocumentationSection.tsx new file mode 100644 index 0000000..1d1a04d --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/section/DocumentationSection.tsx @@ -0,0 +1,18 @@ +import type { SectionOptions } from '@wapijs/ui' +import type { PropsWithChildren } from 'react' +import { DisclosureSection } from '@wapijs/ui' + +export function DocumentationSection( + opts: PropsWithChildren +) { + const { children, separator, ...props } = opts + + return ( + + {children} + {separator ? ( +
+ ) : null} + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/section/MethodsSection.tsx b/apps/wapijs.co/src/components/documentation-item/section/MethodsSection.tsx new file mode 100644 index 0000000..8ec1d38 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/section/MethodsSection.tsx @@ -0,0 +1,50 @@ +import type { + ApiDeclaredItem, + ApiItem, + ApiItemContainerMixin, + ApiMethod, + ApiMethodSignature +} from '@microsoft/api-extractor-model' +import { ApiItemKind } from '@microsoft/api-extractor-model' +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod' +import { useMemo, Fragment } from 'react' +import { DocumentationSection } from './DocumentationSection' +import { resolveMembers } from '~/reusable-function' +import { Method } from '../method/Method' + +function isMethodLike(item: ApiItem): item is ApiMethod | ApiMethodSignature { + return ( + item.kind === ApiItemKind.Method || + (item.kind === ApiItemKind.MethodSignature && (item as ApiMethod).overloadIndex <= 1) + ) +} + +export function MethodsSection({ item }: { readonly item: ApiItemContainerMixin }) { + const members = resolveMembers(item, isMethodLike) + + const methodItems = useMemo( + () => + members.map(({ item: method, inherited }) => ( + 1 + ? `:${(method as ApiMethod).overloadIndex}` + : '' + }`} + > + +
+ + )), + [members] + ) + + return ( + } padded title="Methods"> +
{methodItems}
+
+ ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/section/ParametersSection.tsx b/apps/wapijs.co/src/components/documentation-item/section/ParametersSection.tsx new file mode 100644 index 0000000..462083c --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/section/ParametersSection.tsx @@ -0,0 +1,17 @@ +import type { ApiDocumentedItem, ApiParameterListMixin } from '@microsoft/api-extractor-model' +import { VscSymbolParameter } from '@react-icons/all-files/vsc/VscSymbolParameter' + +import { DocumentationSection } from './DocumentationSection' +import { ParameterTable } from './param-table' + +export function ParameterSection({ + item +}: { + readonly item: ApiDocumentedItem & ApiParameterListMixin +}) { + return ( + } padded title="Parameters"> + + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/section/PropertiesSection.tsx b/apps/wapijs.co/src/components/documentation-item/section/PropertiesSection.tsx new file mode 100644 index 0000000..8582d5c --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/section/PropertiesSection.tsx @@ -0,0 +1,12 @@ +import type { ApiItemContainerMixin } from '@microsoft/api-extractor-model' +import { VscSymbolProperty } from '@react-icons/all-files/vsc/VscSymbolProperty' +import { DocumentationSection } from './DocumentationSection' +import { PropertyList } from '~/components/property-list' + +export function PropertiesSection({ item }: { readonly item: ApiItemContainerMixin }) { + return ( + } padded title="Properties"> + + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/section/SummarySection.tsx b/apps/wapijs.co/src/components/documentation-item/section/SummarySection.tsx new file mode 100644 index 0000000..cc56626 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/section/SummarySection.tsx @@ -0,0 +1,21 @@ +import type { ApiDeclaredItem } from '@microsoft/api-extractor-model' +import { VscListSelection } from '@react-icons/all-files/vsc/VscListSelection' +import { DocumentationSection } from './DocumentationSection' +import { TSDoc } from '~/components/tsdoc/TSDoc' + +export function SummarySection({ item }: { readonly item: ApiDeclaredItem }) { + return ( + } + padded + separator + title="Summary" + > + {item.tsdocComment?.summarySection ? ( + + ) : ( +

No summary provided.

+ )} +
+ ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/section/TypeParametersSection.tsx b/apps/wapijs.co/src/components/documentation-item/section/TypeParametersSection.tsx new file mode 100644 index 0000000..cc97c38 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/section/TypeParametersSection.tsx @@ -0,0 +1,16 @@ +import type { ApiTypeParameterListMixin } from '@microsoft/api-extractor-model' +import { VscSymbolParameter } from '@react-icons/all-files/vsc/VscSymbolParameter' +import { DocumentationSection } from './DocumentationSection' +import { TypeParamTable } from '~/components/type-param-table' + +export function TypeParameterSection({ item }: { readonly item: ApiTypeParameterListMixin }) { + return ( + } + padded + title="Type Parameters" + > + + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/section/param-table.tsx b/apps/wapijs.co/src/components/documentation-item/section/param-table.tsx new file mode 100644 index 0000000..1f54226 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/section/param-table.tsx @@ -0,0 +1,49 @@ +import type { ApiDocumentedItem, ApiParameterListMixin } from '@microsoft/api-extractor-model' +import { useMemo } from 'react' +import { resolveParameters } from '~/reusable-function' +import { ExcerptText } from '~/components/excerpt-text' +import { Table } from '@wapijs/ui' +import { TSDoc } from '~/components/tsdoc/TSDoc' + +const columnStyles = { + Name: 'font-mono whitespace-nowrap', + Type: 'font-mono whitespace-pre-wrap break-normal' +} + +export function ParameterTable({ + item +}: { + readonly item: ApiDocumentedItem & ApiParameterListMixin +}) { + const params = resolveParameters(item) + + const rows = useMemo( + () => + params.map(param => ({ + Name: param.name, + Type: ( + + ), + Optional: param.isOptional ? 'Yes' : 'No', + Description: param.description ? ( + + ) : ( + 'None' + ) + })), + [item, params] + ) + + return ( +
+ + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-item/type-alias/index.tsx b/apps/wapijs.co/src/components/documentation-item/type-alias/index.tsx new file mode 100644 index 0000000..117b046 --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-item/type-alias/index.tsx @@ -0,0 +1,20 @@ +import type { ApiTypeAlias } from '@microsoft/api-extractor-model' +import { SyntaxHighlighter } from '@wapijs/ui' +import { DocumentationContainer } from '~/components/documentation-container' +import { Header } from '~/components/header' +import { SummarySection } from '~/components/summary-section' + +export function TypeAlias({ item }: { readonly item: ApiTypeAlias }) { + return ( + +
+ {/* @ts-expect-error async component */} + + + + ) +} diff --git a/apps/wapijs.co/src/components/documentation-section.tsx b/apps/wapijs.co/src/components/documentation-section.tsx new file mode 100644 index 0000000..1d1a04d --- /dev/null +++ b/apps/wapijs.co/src/components/documentation-section.tsx @@ -0,0 +1,18 @@ +import type { SectionOptions } from '@wapijs/ui' +import type { PropsWithChildren } from 'react' +import { DisclosureSection } from '@wapijs/ui' + +export function DocumentationSection( + opts: PropsWithChildren +) { + const { children, separator, ...props } = opts + + return ( + + {children} + {separator ? ( +
+ ) : null} + + ) +} diff --git a/apps/wapijs.co/src/components/excerpt-text.tsx b/apps/wapijs.co/src/components/excerpt-text.tsx new file mode 100644 index 0000000..95b0b76 --- /dev/null +++ b/apps/wapijs.co/src/components/excerpt-text.tsx @@ -0,0 +1,83 @@ +import type { ApiModel, Excerpt } from '@microsoft/api-extractor-model' +import { ExcerptTokenKind } from '@microsoft/api-extractor-model' +import { ItemLink } from '~/components/item-link' +import { resolveItemURI } from '~/reusable-function' + +export interface ExcerptTextProps { + /** + * The tokens to render. + */ + readonly excerpt: Excerpt + /** + * The model to resolve item references from. + */ + readonly model: ApiModel +} + +/** + * A component that renders excerpt tokens from an api item. + */ +export function ExcerptText({ model, excerpt }: ExcerptTextProps) { + return ( + + {excerpt.spannedTokens.map((token, idx) => { + if (token.kind === ExcerptTokenKind.Reference) { + const source = token.canonicalReference?.source + const symbol = token.canonicalReference?.symbol + if ( + source && + 'packageName' in source && + source.packageName === 'discord-api-types' && + symbol + ) { + const { meaning, componentPath: path } = symbol + let href = '' + + // dapi-types doesn't have routes for class members + // so we can assume this member is for an enum + if (meaning === 'member' && path && 'parent' in path) + href += `/enum/${path.parent}#${path.component}` + else if (meaning === 'type') href += `#${token.text}` + else href += `/${meaning}/${token.text}` + + return ( + + {token.text} + + ) + } + + const item = model.resolveDeclarationReference( + token.canonicalReference!, + model + ).resolvedApiItem + + if (!item) { + return token.text + } + + return ( + + {token.text} + + ) + } + + return token.text + })} + + ) +} diff --git a/apps/wapijs.co/src/components/footer.tsx b/apps/wapijs.co/src/components/footer.tsx new file mode 100644 index 0000000..e69de29 diff --git a/apps/wapijs.co/src/components/header.tsx b/apps/wapijs.co/src/components/header.tsx new file mode 100644 index 0000000..12cdf75 --- /dev/null +++ b/apps/wapijs.co/src/components/header.tsx @@ -0,0 +1,58 @@ +import { ApiItemKind } from '@microsoft/api-extractor-model' +import { VscFileCode } from '@react-icons/all-files/vsc/VscFileCode' +import { VscSymbolClass } from '@react-icons/all-files/vsc/VscSymbolClass' +import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum' +import { VscSymbolInterface } from '@react-icons/all-files/vsc/VscSymbolInterface' +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod' +import { VscSymbolVariable } from '@react-icons/all-files/vsc/VscSymbolVariable' +import type { PropsWithChildren } from 'react' + +function getItemIconByKind(kind: ApiItemKind) { + switch (kind) { + case ApiItemKind.Class: + return + case ApiItemKind.Function: + case ApiItemKind.Method: + return + case ApiItemKind.Enum: + return + case ApiItemKind.Interface: + return + case ApiItemKind.TypeAlias: + case ApiItemKind.Variable: + return + default: + return + } +} + +export function Header({ + kind, + name, + sourceURL +}: PropsWithChildren<{ + readonly kind: ApiItemKind + readonly name: string + readonly sourceURL?: string | undefined +}>) { + return ( +
+

+ + {getItemIconByKind(kind)} + {name} + + {sourceURL ? ( + + + + ) : null} +

+
+ ) +} diff --git a/apps/wapijs.co/src/components/hierarchy-text.tsx b/apps/wapijs.co/src/components/hierarchy-text.tsx new file mode 100644 index 0000000..44ea766 --- /dev/null +++ b/apps/wapijs.co/src/components/hierarchy-text.tsx @@ -0,0 +1,57 @@ +import type { ApiClass, ApiInterface, Excerpt } from '@microsoft/api-extractor-model' +import { ApiItemKind } from '@microsoft/api-extractor-model' +import { ExcerptText } from '~/components/excerpt-text' + +export function HierarchyText({ + item, + type +}: { + readonly item: ApiClass | ApiInterface + readonly type: 'Extends' | 'Implements' +}) { + const model = item.getAssociatedModel()! + + if ( + (item.kind === ApiItemKind.Class && + (item as ApiClass).extendsType === undefined && + (item as ApiClass).implementsTypes.length === 0) || + (item.kind === ApiItemKind.Interface && !(item as ApiInterface).extendsTypes) + ) { + return null + } + + let excerpts: Excerpt[] + + if (item.kind === ApiItemKind.Class) { + if (type === 'Implements') { + if ((item as ApiClass).implementsTypes.length === 0) { + return null + } + + excerpts = (item as ApiClass).implementsTypes.map(typeExcerpt => typeExcerpt.excerpt) + } else { + if (!(item as ApiClass).extendsType) { + return null + } + + excerpts = [(item as ApiClass).extendsType!.excerpt] + } + } else { + if ((item as ApiInterface).extendsTypes.length === 0) { + return null + } + + excerpts = (item as ApiInterface).extendsTypes.map(typeExcerpt => typeExcerpt.excerpt) + } + + return ( +
+

{type}

+ + {excerpts.map((excerpt, idx) => ( + + ))} + +
+ ) +} diff --git a/apps/wapijs.co/src/components/inheritance-text.tsx b/apps/wapijs.co/src/components/inheritance-text.tsx new file mode 100644 index 0000000..1ddd2e8 --- /dev/null +++ b/apps/wapijs.co/src/components/inheritance-text.tsx @@ -0,0 +1,17 @@ +import type { ApiDeclaredItem } from '@microsoft/api-extractor-model' +import { resolveItemURI } from '~/reusable-function' +import { ItemLink } from './item-link' + +export function InheritanceText({ parent }: { readonly parent: ApiDeclaredItem }) { + return ( + + Inherited from{' '} + + {parent.displayName} + + + ) +} diff --git a/apps/wapijs.co/src/components/item-link.tsx b/apps/wapijs.co/src/components/item-link.tsx new file mode 100644 index 0000000..2cbb25e --- /dev/null +++ b/apps/wapijs.co/src/components/item-link.tsx @@ -0,0 +1,28 @@ +'use client' + +import type { LinkProps } from 'next/link' +import Link from 'next/link' +import { usePathname } from 'next/navigation' +import type { PropsWithChildren } from 'react' +import { useDocPathMeta } from '~/hooks/use-docs-path-meta' + +export interface ItemLinkProps extends Omit, 'href'> { + className?: string + itemURI: string + packageName?: string | undefined +} + +export function ItemLink(props: PropsWithChildren>) { + const pathname = usePathname() + const { version } = useDocPathMeta() + + if (!pathname) { + throw new Error( + 'ItemLink must be used inside a Next.js page. (e.g. /docs/packages/foo/main)' + ) + } + + const { itemURI, packageName: pkgName, ...linkProps } = props + + return +} diff --git a/apps/wapijs.co/src/components/nav/sidebar.tsx b/apps/wapijs.co/src/components/nav/sidebar.tsx new file mode 100644 index 0000000..59abc40 --- /dev/null +++ b/apps/wapijs.co/src/components/nav/sidebar.tsx @@ -0,0 +1,124 @@ +'use client' + +import type { ApiItemKind } from '@microsoft/api-extractor-model' +import { VscSymbolClass } from '@react-icons/all-files/vsc/VscSymbolClass' +import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum' +import { VscSymbolInterface } from '@react-icons/all-files/vsc/VscSymbolInterface' +import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod' +import { VscSymbolVariable } from '@react-icons/all-files/vsc/VscSymbolVariable' +import { useSelectedLayoutSegment } from 'next/navigation' +import { useMemo } from 'react' +import { useNav } from '~/contexts/nav' +import { ItemLink } from '~/components/item-link' +import { DisclosureSection } from '@wapijs/ui' + +export interface SidebarSectionItemData { + href: string + kind: ApiItemKind + name: string + overloadIndex?: number | undefined +} + +interface GroupedMembers { + Classes: SidebarSectionItemData[] + Enums: SidebarSectionItemData[] + Functions: SidebarSectionItemData[] + Interfaces: SidebarSectionItemData[] + Types: SidebarSectionItemData[] + Variables: SidebarSectionItemData[] +} + +function groupMembers(members: readonly SidebarSectionItemData[]): GroupedMembers { + const Classes: SidebarSectionItemData[] = [] + const Enums: SidebarSectionItemData[] = [] + const Interfaces: SidebarSectionItemData[] = [] + const Types: SidebarSectionItemData[] = [] + const Variables: SidebarSectionItemData[] = [] + const Functions: SidebarSectionItemData[] = [] + + for (const member of members) { + switch (member.kind) { + case 'Class': + Classes.push(member) + break + case 'Enum': + Enums.push(member) + break + case 'Interface': + Interfaces.push(member) + break + case 'TypeAlias': + Types.push(member) + break + case 'Variable': + Variables.push(member) + break + case 'Function': + Functions.push(member) + break + default: + break + } + } + + return { Classes, Functions, Enums, Interfaces, Types, Variables } +} + +function resolveIcon(item: string) { + switch (item) { + case 'Classes': + return + case 'Enums': + return + case 'Interfaces': + return + case 'Types': + case 'Variables': + return + default: + return + } +} + +export function Sidebar({ members }: { readonly members: SidebarSectionItemData[] }) { + const segment = useSelectedLayoutSegment() + const { setOpened } = useNav() + + const groupItems = useMemo(() => groupMembers(members), [members]) + + return ( +
+ {(Object.keys(groupItems) as (keyof GroupedMembers)[]) + .filter(group => groupItems[group].length) + .map((group, idx) => ( + + {groupItems[group].map((member, index) => ( + setOpened(false)} + title={member.name} + > +
+ {member.name} + {member.overloadIndex && member.overloadIndex > 1 ? ( + {member.overloadIndex} + ) : null} +
+
+ ))} +
+ ))} +
+ ) +} diff --git a/apps/wapijs.co/src/components/object-header.tsx b/apps/wapijs.co/src/components/object-header.tsx new file mode 100644 index 0000000..2344ad8 --- /dev/null +++ b/apps/wapijs.co/src/components/object-header.tsx @@ -0,0 +1,23 @@ +import type { ApiDeclaredItem } from '@microsoft/api-extractor-model' +import { SyntaxHighlighter } from '@wapijs/ui' +import { Header } from './header' +import { SummarySection } from './summary-section' + +export interface ObjectHeaderProps { + readonly item: ApiDeclaredItem +} + +export function ObjectHeader({ item }: ObjectHeaderProps) { + return ( + <> +
+ {/* @ts-expect-error async component */} + + + + ) +} diff --git a/apps/wapijs.co/src/components/panel.tsx b/apps/wapijs.co/src/components/panel.tsx new file mode 100644 index 0000000..79230cf --- /dev/null +++ b/apps/wapijs.co/src/components/panel.tsx @@ -0,0 +1,10 @@ +import type { PropsWithChildren } from 'react' + +export function Panel({ children }: PropsWithChildren) { + return ( + <> + {children} +
+ + ) +} diff --git a/apps/wapijs.co/src/components/property-list.tsx b/apps/wapijs.co/src/components/property-list.tsx new file mode 100644 index 0000000..00cdfa1 --- /dev/null +++ b/apps/wapijs.co/src/components/property-list.tsx @@ -0,0 +1,39 @@ +import type { + ApiDeclaredItem, + ApiItem, + ApiItemContainerMixin, + ApiProperty, + ApiPropertySignature +} from '@microsoft/api-extractor-model' +import { ApiItemKind } from '@microsoft/api-extractor-model' +import { Fragment, useMemo } from 'react' +import { resolveMembers } from '~/reusable-function' +import { Property } from './property' + +export function isPropertyLike(item: ApiItem): item is ApiProperty | ApiPropertySignature { + return item.kind === ApiItemKind.Property || item.kind === ApiItemKind.PropertySignature +} + +export function PropertyList({ item }: { readonly item: ApiItemContainerMixin }) { + const members = resolveMembers(item, isPropertyLike) + + const propertyItems = useMemo( + () => + members.map((prop, idx) => { + return ( + + +
+ + ) + }), + [members] + ) + + return
{propertyItems}
+} diff --git a/apps/wapijs.co/src/components/property.tsx b/apps/wapijs.co/src/components/property.tsx new file mode 100644 index 0000000..6958202 --- /dev/null +++ b/apps/wapijs.co/src/components/property.tsx @@ -0,0 +1,47 @@ +import type { + ApiDeclaredItem, + ApiItemContainerMixin, + ApiProperty, + ApiPropertySignature +} from '@microsoft/api-extractor-model' +import type { PropsWithChildren } from 'react' +import { CodeHeading } from './code-heading' +import { ExcerptText } from './excerpt-text' +import { TSDoc } from './tsdoc/TSDoc' +import { InheritanceText } from './inheritance-text' + +export function Property({ + item, + children, + inheritedFrom +}: PropsWithChildren<{ + readonly inheritedFrom?: (ApiDeclaredItem & ApiItemContainerMixin) | undefined + readonly item: ApiProperty | ApiPropertySignature +}>) { + const hasSummary = Boolean(item.tsdocComment?.summarySection) + + return ( +
+
+ {/* */} + + {`${item.displayName}${item.isOptional ? '?' : ''}`} + : + {item.propertyTypeExcerpt.text ? ( + + ) : null} + +
+ {hasSummary || inheritedFrom ? ( +
+ {item.tsdocComment ? : null} + {inheritedFrom ? : null} + {children} +
+ ) : null} +
+ ) +} diff --git a/apps/wapijs.co/src/components/search-bar.tsx b/apps/wapijs.co/src/components/search-bar.tsx new file mode 100644 index 0000000..e69de29 diff --git a/apps/wapijs.co/src/components/summary-section.tsx b/apps/wapijs.co/src/components/summary-section.tsx new file mode 100644 index 0000000..039b97e --- /dev/null +++ b/apps/wapijs.co/src/components/summary-section.tsx @@ -0,0 +1,21 @@ +import type { ApiDeclaredItem } from '@microsoft/api-extractor-model' +import { VscListSelection } from '@react-icons/all-files/vsc/VscListSelection' +import { TSDoc } from './tsdoc/TSDoc' +import { DocumentationSection } from './documentation-section' + +export function SummarySection({ item }: { readonly item: ApiDeclaredItem }) { + return ( + } + padded + separator + title="Summary" + > + {item.tsdocComment?.summarySection ? ( + + ) : ( +

No summary provided.

+ )} +
+ ) +} diff --git a/apps/wapijs.co/src/components/tsdoc/BlockComment.tsx b/apps/wapijs.co/src/components/tsdoc/BlockComment.tsx new file mode 100644 index 0000000..c69f637 --- /dev/null +++ b/apps/wapijs.co/src/components/tsdoc/BlockComment.tsx @@ -0,0 +1,38 @@ +import { Callout } from '@wapijs/ui' +import type { PropsWithChildren } from 'react' + +export function Block({ children, title }: PropsWithChildren<{ readonly title: string }>) { + return ( +
+
{title}
+ {children} +
+ ) +} + +export function ExampleBlock({ + children, + exampleIndex +}: PropsWithChildren<{ readonly exampleIndex?: number | undefined }>): JSX.Element { + return {children} +} + +export function DefaultValueBlock({ children }: PropsWithChildren): JSX.Element { + return {children} +} + +export function RemarksBlock({ children }: PropsWithChildren): JSX.Element { + return {children} +} + +export function DeprecatedBlock({ children }: PropsWithChildren): JSX.Element { + return +} + +export function SeeBlock({ children }: PropsWithChildren): JSX.Element { + return {children} +} + +export function ReturnsBlock({ children }: PropsWithChildren): JSX.Element { + return {children} +} diff --git a/apps/wapijs.co/src/components/tsdoc/TSDoc.tsx b/apps/wapijs.co/src/components/tsdoc/TSDoc.tsx new file mode 100644 index 0000000..49e00cd --- /dev/null +++ b/apps/wapijs.co/src/components/tsdoc/TSDoc.tsx @@ -0,0 +1,183 @@ +import type { ApiItem } from '@microsoft/api-extractor-model' +import type { + DocComment, + DocFencedCode, + DocLinkTag, + DocNode, + DocNodeContainer, + DocPlainText +} from '@microsoft/tsdoc' +import { DocNodeKind, StandardTags } from '@microsoft/tsdoc' +import type { Route } from 'next' +import Link from 'next/link' +import { Fragment, useCallback, type ReactNode } from 'react' +import { ItemLink } from '../item-link' +import { SyntaxHighlighter } from '@wapijs/ui' +import { resolveItemURI } from '../../reusable-function' +import { + DefaultValueBlock, + DeprecatedBlock, + ExampleBlock, + RemarksBlock, + ReturnsBlock, + SeeBlock +} from './BlockComment' + +export function TSDoc({ + item, + tsdoc +}: { + readonly item: ApiItem + readonly tsdoc: DocNode +}): JSX.Element { + const createNode = useCallback( + (tsdoc: DocNode, idx?: number): ReactNode => { + switch (tsdoc.kind) { + case DocNodeKind.PlainText: + return ( + + {(tsdoc as DocPlainText).text} + + ) + case DocNodeKind.Section: + case DocNodeKind.Paragraph: + return ( + + {(tsdoc as DocNodeContainer).nodes.map((node, idx) => + createNode(node, idx) + )} + + ) + case DocNodeKind.SoftBreak: + return + case DocNodeKind.LinkTag: { + const { codeDestination, urlDestination, linkText } = tsdoc as DocLinkTag + + if (codeDestination) { + const foundItem = item + .getAssociatedModel() + ?.resolveDeclarationReference(codeDestination, item).resolvedApiItem + + if (!foundItem) return null + + return ( + + {linkText ?? foundItem.displayName} + + ) + } + + if (urlDestination) { + return ( + + {linkText ?? urlDestination} + + ) + } + + return null + } + + case DocNodeKind.CodeSpan: { + const { code } = tsdoc as DocFencedCode + return ( + + {code} + + ) + } + + case DocNodeKind.FencedCode: { + const { language, code } = tsdoc as DocFencedCode + return ( + // @ts-expect-error async component + + ) + } + + case DocNodeKind.Comment: { + const comment = tsdoc as DocComment + + const exampleBlocks = comment.customBlocks.filter( + block => + block.blockTag.tagName.toUpperCase() === + StandardTags.example.tagNameWithUpperCase + ) + + const defaultValueBlock = comment.customBlocks.find( + block => + block.blockTag.tagName.toUpperCase() === + StandardTags.defaultValue.tagNameWithUpperCase + ) + + return ( +
+ {comment.deprecatedBlock ? ( + + {createNode(comment.deprecatedBlock.content)} + + ) : null} + {comment.summarySection ? createNode(comment.summarySection) : null} + {comment.remarksBlock ? ( + + {createNode(comment.remarksBlock.content)} + + ) : null} + {defaultValueBlock ? ( + + {createNode(defaultValueBlock.content)} + + ) : null} + {comment.returnsBlock ? ( + + {createNode(comment.returnsBlock.content)} + + ) : null} + {exampleBlocks.length + ? exampleBlocks.map((block, idx) => ( + + {createNode(block.content)} + + )) + : null} + {comment.seeBlocks.length ? ( + + {comment.seeBlocks.map((seeBlock, idx) => + createNode(seeBlock.content, idx) + )} + + ) : null} +
+ ) + } + + default: + // console.log(`Captured unknown node kind: ${node.kind}`); + return null + } + }, + [item] + ) + + return ( + <> + {tsdoc.kind === 'Paragraph' || tsdoc.kind === 'Section' ? ( + <>{(tsdoc as DocNodeContainer).nodes.map((node, idx) => createNode(node, idx))} + ) : ( + createNode(tsdoc) + )} + + ) +} diff --git a/apps/wapijs.co/src/components/type-param-table.tsx b/apps/wapijs.co/src/components/type-param-table.tsx new file mode 100644 index 0000000..e491dbb --- /dev/null +++ b/apps/wapijs.co/src/components/type-param-table.tsx @@ -0,0 +1,40 @@ +import type { ApiTypeParameterListMixin } from '@microsoft/api-extractor-model' +import { useMemo } from 'react' +import { ExcerptText } from './excerpt-text' +import { TSDoc } from './tsdoc/TSDoc' +import { Table } from '@wapijs/ui' + +const rowElements = { + Name: 'font-mono whitespace-nowrap', + Constraints: 'font-mono whitespace-pre break-normal', + Default: 'font-mono whitespace-pre break-normal' +} + +export function TypeParamTable({ item }: { readonly item: ApiTypeParameterListMixin }) { + const model = item.getAssociatedModel()! + const rows = useMemo( + () => + item.typeParameters.map(typeParam => ({ + Name: typeParam.name, + Constraints: , + Optional: typeParam.isOptional ? 'Yes' : 'No', + Default: , + Description: typeParam.tsdocTypeParamBlock ? ( + + ) : ( + 'None' + ) + })), + [item, model] + ) + + return ( +
+
+ + ) +} diff --git a/apps/wapijs.co/src/context/cmd-k-context.tsx b/apps/wapijs.co/src/context/cmd-k-context.tsx new file mode 100644 index 0000000..58f9fdd --- /dev/null +++ b/apps/wapijs.co/src/context/cmd-k-context.tsx @@ -0,0 +1,17 @@ +'use client' + +import { useDialogState } from 'ariakit/dialog' +import type { DisclosureState } from 'ariakit/disclosure' +import { type PropsWithChildren, createContext, useContext } from 'react' + +export const CmdKContext = createContext(null) + +export const CmdKProvider = ({ children }: PropsWithChildren) => { + const dialog = useDialogState() + + return {children} +} + +export function useCmdK() { + return useContext(CmdKContext) +} diff --git a/apps/wapijs.co/src/hooks/use-docs-path-meta.tsx b/apps/wapijs.co/src/hooks/use-docs-path-meta.tsx new file mode 100644 index 0000000..7e2eba2 --- /dev/null +++ b/apps/wapijs.co/src/hooks/use-docs-path-meta.tsx @@ -0,0 +1,24 @@ +'use client' + +import { usePathname } from 'next/navigation' + +export const useDocPathMeta = () => { + const path = usePathname() + + if (!path) { + return { + version: null, + item: null + } + } + + /** + * @example: https://wapijs.co/docs//item-name -> ['https:', '', 'wapijs.co', 'docs', '', 'item-name'] + */ + const pathComponentArr = path.split('/') + + return { + version: pathComponentArr[4], + item: pathComponentArr[5] + } +} diff --git a/apps/wapijs.co/src/reusable-function.ts b/apps/wapijs.co/src/reusable-function.ts new file mode 100644 index 0000000..61fef4f --- /dev/null +++ b/apps/wapijs.co/src/reusable-function.ts @@ -0,0 +1,155 @@ +import { ApiDocumentedItem, ApiEntryPoint, ApiFunction, ApiItem, ApiItemContainerMixin, ApiItemKind, ApiMethod, ApiMethodSignature, ApiModel, ApiPackage, ApiParameterListMixin, ApiProperty, ApiPropertySignature } from "@microsoft/api-extractor-model"; +import { METHOD_SEPARATOR, OVERLOAD_SEPARATOR, PACKAGES } from "./constant"; +import { ResolvedParameter } from "./types"; +import { TSDocConfiguration } from "@microsoft/tsdoc"; +import { TSDocConfigFile } from '@microsoft/tsdoc-config'; +import { fetchDocumentationJsonDataFromSlug } from "./app/docs/[version]/function"; + + +export function resolveItemURI(item: ApiItem): string { + return !item.parent || item.parent.kind === ApiItemKind.EntryPoint + ? `${item.displayName}${OVERLOAD_SEPARATOR}${item.kind}` + : `${item.parent.displayName}${OVERLOAD_SEPARATOR}${item.parent.kind}${METHOD_SEPARATOR}${item.displayName}`; +} + + + +export function findMemberByKey(model: ApiModel, packageName: string, containerKey: string) { + const pkg = model.tryGetPackageByName(`@wapijs/${packageName}`)!; + return (pkg.members[0] as ApiEntryPoint).tryGetMemberByKey(containerKey); +} + +export function findMember(model: ApiModel, packageName: string, memberName: string | undefined) { + if (!memberName) { + return undefined; + } + + const pkg = model.tryGetPackageByName(`@wapijs/${packageName}`)!; + return pkg.entryPoints[0]?.findMembersByName(memberName)[0]; +} + +export async function getMember(params: { branchOrVersion: string, item: string }) { + + const { branchOrVersion, item } = params + const model = new ApiModel(); + + if (branchOrVersion === 'master') { + const modelJSONFiles = await Promise.all(PACKAGES.map(async (pkg) => fetchDocumentationJsonDataFromSlug(branchOrVersion))); + + for (const modelJSONFile of modelJSONFiles) { + addPackageToModel(model, modelJSONFile); + } + } else { + const modelJSON = await fetchDocumentationJsonDataFromSlug(branchOrVersion); + addPackageToModel(model, modelJSON); + } + + const [memberName, overloadIndex] = decodeURIComponent(item).split(OVERLOAD_SEPARATOR); + + // eslint-disable-next-line prefer-const + let { containerKey, displayName: name } = findMember(model, 'wapi.js', memberName) ?? {}; + if (name && overloadIndex && !Number.isNaN(Number.parseInt(overloadIndex, 10))) { + containerKey = ApiFunction.getContainerKey(name, Number.parseInt(overloadIndex, 10)); + } + + return memberName && containerKey ? findMemberByKey(model, 'wapi.js', containerKey) ?? null : null; + +} + +export function resolveParameters(item: ApiDocumentedItem & ApiParameterListMixin): ResolvedParameter[] { + return item.parameters.map((param, idx) => { + const tsdocAnalog = item.tsdocComment?.params.blocks[idx]; + + return { + name: param.tsdocParamBlock?.parameterName ?? tsdocAnalog?.parameterName ?? param.name, + description: param.tsdocParamBlock?.content ?? tsdocAnalog?.content, + isOptional: param.isOptional, + parameterTypeExcerpt: param.parameterTypeExcerpt, + }; + }); +} + +export function memberPredicate( + item: ApiItem, +): item is ApiMethod | ApiMethodSignature | ApiProperty | ApiPropertySignature { + return ( + item.kind === ApiItemKind.Property || + item.kind === ApiItemKind.PropertySignature || + item.kind === ApiItemKind.Method || + item.kind === ApiItemKind.MethodSignature + ); +} + + +export function hasProperties(item: ApiItemContainerMixin) { + return resolveMembers(item, memberPredicate).some( + ({ item: member }) => member.kind === ApiItemKind.Property || member.kind === ApiItemKind.PropertySignature, + ); +} + +export function hasMethods(item: ApiItemContainerMixin) { + return resolveMembers(item, memberPredicate).some( + ({ item: member }) => member.kind === ApiItemKind.Method || member.kind === ApiItemKind.MethodSignature, + ); +} + +export function resolveMembers( + parent: ApiItemContainerMixin, + predicate: (item: ApiItem) => item is T, +) { + const seenItems = new Set(); + const inheritedMembers = parent.findMembersWithInheritance().items.reduce((acc, item) => { + if (predicate(item) && !seenItems.has(item.displayName)) { + acc.push({ + item, + inherited: + item.parent?.containerKey === parent.containerKey + ? undefined + : (item.parent as ApiItemContainerMixin | undefined), + }); + + seenItems.add(item.displayName); + } + + return acc; + }, new Array<{ inherited?: ApiItemContainerMixin | undefined; item: T }>()); + + const mergedMembers = parent + .getMergedSiblings() + .filter((sibling) => sibling.containerKey !== parent.containerKey) + .flatMap((sibling) => (sibling as ApiItemContainerMixin).findMembersWithInheritance().items) + .filter((item) => predicate(item) && !seenItems.has(item.containerKey)) + .map((item) => ({ item: item as T, inherited: item.parent ? (item.parent as ApiItemContainerMixin) : undefined })); + + return [...inheritedMembers, ...mergedMembers]; +} + + +export function parametersString(item: ApiDocumentedItem & ApiParameterListMixin) { + return resolveParameters(item).reduce((prev, cur, index) => { + if (index === 0) { + return `${prev}${cur.isOptional ? `${cur.name}?` : cur.name}`; + } + + return `${prev}, ${cur.isOptional ? `${cur.name}?` : cur.name}`; + }, ''); +} + + + +export function addPackageToModel(model: ApiModel, data: any) { + const tsdocConfiguration = new TSDocConfiguration(); + console.log({ data: data }) + const tsdocConfigFile = TSDocConfigFile.loadFromObject(data.metadata.tsdocConfig); + tsdocConfigFile.configureParser(tsdocConfiguration); + + const apiPackage = ApiItem.deserialize(data, { + apiJsonFilename: '', + toolPackage: data.metadata.toolPackage, + toolVersion: data.metadata.toolVersion, + versionToDeserialize: data.metadata.schemaVersion, + tsdocConfiguration, + }) as ApiPackage; + model.addMember(apiPackage); + return model; +} diff --git a/apps/wapijs.co/src/types.ts b/apps/wapijs.co/src/types.ts new file mode 100644 index 0000000..d52f2de --- /dev/null +++ b/apps/wapijs.co/src/types.ts @@ -0,0 +1,9 @@ +import { Excerpt } from "@microsoft/api-extractor-model"; +import { DocSection } from "@microsoft/tsdoc"; + +export interface ResolvedParameter { + description?: DocSection | undefined; + isOptional: boolean; + name: string; + parameterTypeExcerpt: Excerpt; +} \ No newline at end of file diff --git a/packages/ui/src/callout.tsx b/packages/ui/src/callout.tsx new file mode 100644 index 0000000..4a2822c --- /dev/null +++ b/packages/ui/src/callout.tsx @@ -0,0 +1,56 @@ +import { type FC, type HTMLAttributes, type DetailedHTMLProps } from 'react' +import { cva, type VariantProps } from 'class-variance-authority' +import { clsx } from 'clsx' +import { + CheckCircleIcon, + ExclamationCircleIcon, + ExclamationTriangleIcon +} from '@heroicons/react/20/solid' + +const calloutClassVariants = cva('rounded-lg shadow-md my-4 flex flex-row gap-2', { + variants: { + type: { + note: 'bg-blue-100 text-blue-800 border-l-4 border-blue-500', + warning: 'bg-yellow-100 text-yellow-800 border-l-4 border-yellow-500', + error: 'bg-red-100 text-red-800 border-l-4 border-red-500', + success: 'bg-green-100 text-green-800 border-l-4 border-green-500' + }, + size: { + small: 'p-2 text-sm', + medium: 'p-4 text-base', + large: 'p-6 text-lg' + } + }, + defaultVariants: { + type: 'note', + size: 'medium' // Set default size as medium + } +}) + +interface CalloutProps + extends DetailedHTMLProps, HTMLDivElement>, + VariantProps { + text: string +} + +const Callout: FC = ({ type, text, children, className, ...props }) => { + const classes = clsx(calloutClassVariants({ type }), className) + + return ( +
+ {type === 'error' ? ( + + ) : type === 'success' ? ( + + ) : type === 'note' ? ( + + ) : ( + + )} + + {text} +
+ ) +} + +export { Callout } diff --git a/packages/ui/src/discloure-section.tsx b/packages/ui/src/discloure-section.tsx new file mode 100644 index 0000000..919e68c --- /dev/null +++ b/packages/ui/src/discloure-section.tsx @@ -0,0 +1,69 @@ +'use client' + +import { VscChevronDown } from '@react-icons/all-files/vsc/VscChevronDown' +import { Disclosure } from '@headlessui/react' +import type { PropsWithChildren } from 'react' + +export interface SectionOptions { + readonly buttonClassName?: string + readonly className?: string + readonly defaultClosed?: boolean | undefined + readonly gutter?: boolean | undefined + readonly icon?: JSX.Element | undefined + readonly padded?: boolean | undefined + readonly title: string +} + +export function DisclosureSection({ + title, + icon, + padded = false, + defaultClosed = false, + gutter = false, + children, + className = '', + buttonClassName = '' +}: PropsWithChildren) { + return ( +
+ + {({ open }) => { + return ( + <> + +
+
+ {icon ?? null} + {title} +
+ +
+
+ + {padded ? ( +
+ {children} +
+ ) : ( + children + )} +
+ + ) + }} +
+
+ ) +} diff --git a/packages/ui/src/dropdown-selector.tsx b/packages/ui/src/dropdown-selector.tsx new file mode 100644 index 0000000..8d8a803 --- /dev/null +++ b/packages/ui/src/dropdown-selector.tsx @@ -0,0 +1,40 @@ +import { Menu } from '@headlessui/react' +import React from 'react' + +export const DropdownComponent: React.FC<{ + menuItems: { slug: string; label: string }[] + buttonText: string +}> = ({ buttonText, menuItems }) => { + return ( + + {buttonText} + + {menuItems.map((item, index) => { + return ( + + {({ active }) => ( + + {item.label} + + )} + + ) + })} + + + {({ active }) => ( + + Documentation + + )} + + + Invite a friend (coming soon!) + + + + ) +} diff --git a/packages/ui/src/markdown-utils/md-renderer.tsx b/packages/ui/src/markdown-utils/md-renderer.tsx new file mode 100644 index 0000000..e69de29 diff --git a/packages/ui/src/markdown-utils/syntax-highlighter.tsx b/packages/ui/src/markdown-utils/syntax-highlighter.tsx new file mode 100644 index 0000000..f812778 --- /dev/null +++ b/packages/ui/src/markdown-utils/syntax-highlighter.tsx @@ -0,0 +1,27 @@ +// import { Code } from 'bright' + +export function SyntaxHighlighter(props) { + return ( + <> +
+ {/* */} +
+
+ {/* */} +
+ + ) +} diff --git a/packages/ui/src/scroll-area.tsx b/packages/ui/src/scroll-area.tsx new file mode 100644 index 0000000..3c0f6a8 --- /dev/null +++ b/packages/ui/src/scroll-area.tsx @@ -0,0 +1,80 @@ +'use client' + +import React, { type PropsWithChildren } from 'react' +import * as ScrollArea from '@radix-ui/react-scroll-area' + +const scrollbarStyles = ` +.ScrollAreaRoot { + width: 100%; + --scrollbar-size: 2px; + overflow: auto; + } + + .ScrollAreaViewport { + width: 100%; + height: 100%; + border-radius: inherit; + } + + .ScrollAreaScrollbar { + display: flex; + /* ensures no selection */ + user-select: none; + /* disable browser handling of all panning and zooming gestures on touch devices */ + touch-action: none; + padding: 5px; + transition: background 160ms ease-out; + } + .ScrollAreaScrollbar[data-orientation='vertical'] { + width: 5px; + } + .ScrollAreaScrollbar[data-orientation='horizontal'] { + flex-direction: column; + height: 5px; + } + + .ScrollAreaThumb { + flex: 1; + border-radius: 20px; + position: relative; + } + .ScrollAreaThumb::before { + background: #E2E8F0; + content: ''; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + height: 100%; + border-radius: 20px; + min-width: 9px; + min-height: 9px; + } + .dark .ScrollAreaThumb::before { + background: #475569; + } +` + +interface ScrollAreaProps extends PropsWithChildren {} + +const CustomScrollArea = ({ children }: ScrollAreaProps) => ( + <> +