diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 48a9d8d75..763033fff 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,12 +14,13 @@ jobs: node-version: 18 registry-url: 'https://registry.npmjs.org' - run: npm install - - name: Update version in package.json, package-lock.json + - name: Update version in package.json, package-lock.json, and lib/version.ts run: | VERSION=${{ github.event.release.tag_name }} VERSION=${VERSION#v} sed -i "s/__LINE_BOT_SDK_NODEJS_VERSION__/$VERSION/g" package.json sed -i "s/__LINE_BOT_SDK_NODEJS_VERSION__/$VERSION/g" package-lock.json + sed -i "s/__LINE_BOT_SDK_NODEJS_VERSION__/$VERSION/g" lib/version.ts - run: npm run release env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/generator/src/main/resources/line-bot-sdk-nodejs-generator/api_test.pebble b/generator/src/main/resources/line-bot-sdk-nodejs-generator/api_test.pebble index 0b0ba2498..2c9d840dd 100644 --- a/generator/src/main/resources/line-bot-sdk-nodejs-generator/api_test.pebble +++ b/generator/src/main/resources/line-bot-sdk-nodejs-generator/api_test.pebble @@ -10,7 +10,7 @@ import { {{import.classname}} } from '../{{import.filename}}'; import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -73,7 +73,7 @@ const channel_access_token = "test_channel_access_token"; {% endif -%} equal( req.headers["user-agent"], - `${pkg.name}/${pkg.version}`, + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", ); {% if op.isMultipart %} ok( diff --git a/lib/channel-access-token/tests/api/ChannelAccessTokenClientTest.spec.ts b/lib/channel-access-token/tests/api/ChannelAccessTokenClientTest.spec.ts index 60e555bac..2df0f1a0e 100644 --- a/lib/channel-access-token/tests/api/ChannelAccessTokenClientTest.spec.ts +++ b/lib/channel-access-token/tests/api/ChannelAccessTokenClientTest.spec.ts @@ -10,7 +10,7 @@ import { VerifyChannelAccessTokenResponse } from "../../model/verifyChannelAcces import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -47,7 +47,10 @@ describe("ChannelAccessTokenClient", () => { ), ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -110,7 +113,10 @@ describe("ChannelAccessTokenClient", () => { ), ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -157,7 +163,10 @@ describe("ChannelAccessTokenClient", () => { .replace("{clientSecret}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -207,7 +216,10 @@ describe("ChannelAccessTokenClient", () => { .replace("{clientSecret}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -257,7 +269,10 @@ describe("ChannelAccessTokenClient", () => { .replace("{clientAssertion}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -307,7 +322,10 @@ describe("ChannelAccessTokenClient", () => { .replace("{clientAssertion}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -359,7 +377,10 @@ describe("ChannelAccessTokenClient", () => { .replace("{clientSecret}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -417,7 +438,10 @@ describe("ChannelAccessTokenClient", () => { .replace("{clientSecret}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -470,7 +494,10 @@ describe("ChannelAccessTokenClient", () => { "/v2/oauth/revoke".replace("{accessToken}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -511,7 +538,10 @@ describe("ChannelAccessTokenClient", () => { "/v2/oauth/revoke".replace("{accessToken}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -555,7 +585,10 @@ describe("ChannelAccessTokenClient", () => { .replace("{accessToken}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -605,7 +638,10 @@ describe("ChannelAccessTokenClient", () => { .replace("{accessToken}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -652,7 +688,10 @@ describe("ChannelAccessTokenClient", () => { "/v2/oauth/verify".replace("{accessToken}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -693,7 +732,10 @@ describe("ChannelAccessTokenClient", () => { "/v2/oauth/verify".replace("{accessToken}", "DUMMY"), // string ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -744,7 +786,10 @@ describe("ChannelAccessTokenClient", () => { ), ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -795,7 +840,10 @@ describe("ChannelAccessTokenClient", () => { ), ); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); diff --git a/lib/http-axios.ts b/lib/http-axios.ts index 9a3f8a5d7..aa6176f78 100644 --- a/lib/http-axios.ts +++ b/lib/http-axios.ts @@ -6,8 +6,7 @@ import axios, { } from "axios"; import { Readable } from "node:stream"; import { HTTPError, ReadError, RequestError } from "./exceptions"; - -const pkg = require("../package.json"); +import { USER_AGENT } from "./version"; interface httpClientConfig extends Partial { baseURL?: string; @@ -25,7 +24,7 @@ export default class HTTPClient { this.instance = axios.create({ baseURL, headers: Object.assign({}, defaultHeaders, { - "User-Agent": `${pkg.name}/${pkg.version}`, + "User-Agent": USER_AGENT, }), }); diff --git a/lib/http-fetch.ts b/lib/http-fetch.ts index ab290800e..9e731ed99 100644 --- a/lib/http-fetch.ts +++ b/lib/http-fetch.ts @@ -1,7 +1,7 @@ import { Readable } from "node:stream"; import { HTTPFetchError } from "./exceptions"; +import { USER_AGENT } from "./version"; -const pkg = require("../package.json"); export interface FetchRequestConfig { headers?: Record; } @@ -32,7 +32,7 @@ export default class HTTPFetchClient { constructor(config: httpFetchClientConfig) { this.baseURL = config.baseURL; this.defaultHeaders = { - "User-Agent": `${pkg.name}/${pkg.version}`, + "User-Agent": USER_AGENT, ...config.defaultHeaders, }; } diff --git a/lib/insight/tests/api/InsightClientTest.spec.ts b/lib/insight/tests/api/InsightClientTest.spec.ts index c4d9f00c8..aba71b9f1 100644 --- a/lib/insight/tests/api/InsightClientTest.spec.ts +++ b/lib/insight/tests/api/InsightClientTest.spec.ts @@ -9,7 +9,7 @@ import { GetStatisticsPerUnitResponse } from "../../model/getStatisticsPerUnitRe import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -25,7 +25,10 @@ describe("InsightClient", () => { equal(reqUrl.pathname, "/v2/bot/insight/demographic"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -62,7 +65,10 @@ describe("InsightClient", () => { equal(reqUrl.pathname, "/v2/bot/insight/demographic"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -112,7 +118,10 @@ describe("InsightClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -165,7 +174,10 @@ describe("InsightClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -218,7 +230,10 @@ describe("InsightClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -271,7 +286,10 @@ describe("InsightClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -324,7 +342,10 @@ describe("InsightClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -377,7 +398,10 @@ describe("InsightClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -447,7 +471,10 @@ describe("InsightClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -523,7 +550,10 @@ describe("InsightClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); diff --git a/lib/liff/tests/api/LiffClientTest.spec.ts b/lib/liff/tests/api/LiffClientTest.spec.ts index 2593dd9ee..f405dbf4d 100644 --- a/lib/liff/tests/api/LiffClientTest.spec.ts +++ b/lib/liff/tests/api/LiffClientTest.spec.ts @@ -8,7 +8,7 @@ import { UpdateLiffAppRequest } from "../../model/updateLiffAppRequest"; import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -24,7 +24,10 @@ describe("LiffClient", () => { equal(reqUrl.pathname, "/liff/v1/apps"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -64,7 +67,10 @@ describe("LiffClient", () => { equal(reqUrl.pathname, "/liff/v1/apps"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -107,7 +113,10 @@ describe("LiffClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -150,7 +159,10 @@ describe("LiffClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -190,7 +202,10 @@ describe("LiffClient", () => { equal(reqUrl.pathname, "/liff/v1/apps"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -227,7 +242,10 @@ describe("LiffClient", () => { equal(reqUrl.pathname, "/liff/v1/apps"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -267,7 +285,10 @@ describe("LiffClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -313,7 +334,10 @@ describe("LiffClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); diff --git a/lib/manage-audience/tests/api/ManageAudienceBlobClientTest.spec.ts b/lib/manage-audience/tests/api/ManageAudienceBlobClientTest.spec.ts index ebf6cad8f..a949b33cc 100644 --- a/lib/manage-audience/tests/api/ManageAudienceBlobClientTest.spec.ts +++ b/lib/manage-audience/tests/api/ManageAudienceBlobClientTest.spec.ts @@ -5,7 +5,7 @@ import { CreateAudienceGroupResponse } from "../../model/createAudienceGroupResp import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -26,7 +26,10 @@ describe("ManageAudienceBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); ok( req.headers["content-type"].startsWith( @@ -83,7 +86,10 @@ describe("ManageAudienceBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); ok( req.headers["content-type"].startsWith( @@ -140,7 +146,10 @@ describe("ManageAudienceBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); ok( req.headers["content-type"].startsWith( @@ -200,7 +209,10 @@ describe("ManageAudienceBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); ok( req.headers["content-type"].startsWith( diff --git a/lib/manage-audience/tests/api/ManageAudienceClientTest.spec.ts b/lib/manage-audience/tests/api/ManageAudienceClientTest.spec.ts index 52139b855..33cabd68e 100644 --- a/lib/manage-audience/tests/api/ManageAudienceClientTest.spec.ts +++ b/lib/manage-audience/tests/api/ManageAudienceClientTest.spec.ts @@ -19,7 +19,7 @@ import { UpdateAudienceGroupDescriptionRequest } from "../../model/updateAudienc import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -41,7 +41,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -87,7 +90,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -127,7 +133,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/upload"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -167,7 +176,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/upload"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -207,7 +219,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/upload"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -247,7 +262,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/upload"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -287,7 +305,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/click"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -327,7 +348,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/click"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -367,7 +391,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/imp"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -407,7 +434,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/imp"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -453,7 +483,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -499,7 +532,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -545,7 +581,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -591,7 +630,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -631,7 +673,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/authorityLevel"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -668,7 +713,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/authorityLevel"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -756,7 +804,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -862,7 +913,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -917,7 +971,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/authorityLevel"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -957,7 +1014,10 @@ describe("ManageAudienceClient", () => { equal(reqUrl.pathname, "/v2/bot/audienceGroup/authorityLevel"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1003,7 +1063,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1052,7 +1115,10 @@ describe("ManageAudienceClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); diff --git a/lib/messaging-api/tests/api/MessagingApiBlobClientTest.spec.ts b/lib/messaging-api/tests/api/MessagingApiBlobClientTest.spec.ts index dc9759328..4ac297663 100644 --- a/lib/messaging-api/tests/api/MessagingApiBlobClientTest.spec.ts +++ b/lib/messaging-api/tests/api/MessagingApiBlobClientTest.spec.ts @@ -5,7 +5,7 @@ import { GetMessageContentTranscodingResponse } from "../../model/getMessageCont import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -24,7 +24,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -67,7 +70,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -113,7 +119,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -159,7 +168,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -205,7 +217,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -252,7 +267,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -298,7 +316,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -344,7 +365,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -390,7 +414,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -439,7 +466,10 @@ describe("MessagingApiBlobClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); diff --git a/lib/messaging-api/tests/api/MessagingApiClientTest.spec.ts b/lib/messaging-api/tests/api/MessagingApiClientTest.spec.ts index 7bcc5b1ab..915381f77 100644 --- a/lib/messaging-api/tests/api/MessagingApiClientTest.spec.ts +++ b/lib/messaging-api/tests/api/MessagingApiClientTest.spec.ts @@ -48,7 +48,7 @@ import { ValidateMessageRequest } from "../../model/validateMessageRequest"; import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -64,7 +64,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/bot/ad/multicast/phone"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -104,7 +107,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/bot/ad/multicast/phone"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -147,7 +153,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -193,7 +202,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -236,7 +248,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/user/all/richmenu"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -273,7 +288,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/user/all/richmenu"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -310,7 +328,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -350,7 +371,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -390,7 +414,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/alias"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -430,7 +457,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/alias"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -473,7 +503,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -516,7 +549,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -562,7 +598,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -608,7 +647,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -661,7 +703,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -714,7 +759,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -776,7 +824,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -841,7 +892,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -884,7 +938,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/aggregation/info"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -921,7 +978,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/aggregation/info"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -958,7 +1018,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/info"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -995,7 +1058,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/info"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1032,7 +1098,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/user/all/richmenu"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1069,7 +1138,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/user/all/richmenu"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1128,7 +1200,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1193,7 +1268,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1239,7 +1317,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1282,7 +1363,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1327,7 +1411,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1375,7 +1462,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1433,7 +1523,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1491,7 +1584,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1537,7 +1633,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1580,7 +1679,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1620,7 +1722,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/quota"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1657,7 +1762,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/quota"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1694,7 +1802,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/quota/consumption"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1731,7 +1842,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/quota/consumption"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1781,7 +1895,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1834,7 +1951,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1887,7 +2007,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1940,7 +2063,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -1993,7 +2119,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2046,7 +2175,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2099,7 +2231,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2152,7 +2287,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2205,7 +2343,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2258,7 +2399,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2311,7 +2455,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2364,7 +2511,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2407,7 +2557,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2450,7 +2603,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2493,7 +2649,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2536,7 +2695,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2582,7 +2744,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2628,7 +2793,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2668,7 +2836,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/alias/list"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2705,7 +2876,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/alias/list"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2755,7 +2929,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2808,7 +2985,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2851,7 +3031,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2894,7 +3077,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2934,7 +3120,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/list"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -2971,7 +3160,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/list"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3011,7 +3203,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3054,7 +3249,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3099,7 +3297,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3147,7 +3348,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3205,7 +3409,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3263,7 +3470,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3306,7 +3516,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/channel/webhook/endpoint"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3343,7 +3556,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/channel/webhook/endpoint"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3383,7 +3599,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3426,7 +3645,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3469,7 +3691,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3512,7 +3737,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3555,7 +3783,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3598,7 +3829,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3643,7 +3877,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3691,7 +3928,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3734,7 +3974,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/bulk/link"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3774,7 +4017,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/bulk/link"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3814,7 +4060,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/markAsRead"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3854,7 +4103,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/markAsRead"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3897,7 +4149,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3943,7 +4198,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -3989,7 +4247,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4035,7 +4296,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4081,7 +4345,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4127,7 +4394,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4173,7 +4443,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4219,7 +4492,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4262,7 +4538,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/reply"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4302,7 +4581,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/reply"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4342,7 +4624,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/batch"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4382,7 +4667,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/batch"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4428,7 +4716,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4474,7 +4765,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4514,7 +4808,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/channel/webhook/endpoint"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4554,7 +4851,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/channel/webhook/endpoint"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4594,7 +4894,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/channel/webhook/test"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4634,7 +4937,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/channel/webhook/test"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4677,7 +4983,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4720,7 +5029,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4760,7 +5072,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/bulk/unlink"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4800,7 +5115,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/bulk/unlink"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4846,7 +5164,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4895,7 +5216,10 @@ describe("MessagingApiClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4938,7 +5262,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/broadcast"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -4978,7 +5305,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/broadcast"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5018,7 +5348,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/multicast"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5058,7 +5391,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/multicast"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5098,7 +5434,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/narrowcast"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5138,7 +5477,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/narrowcast"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5178,7 +5520,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/push"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5218,7 +5563,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/push"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5258,7 +5606,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/reply"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5298,7 +5649,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/message/validate/reply"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5338,7 +5692,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/validate/batch"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5378,7 +5735,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/validate/batch"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5418,7 +5778,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/validate"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -5458,7 +5821,10 @@ describe("MessagingApiClient", () => { equal(reqUrl.pathname, "/v2/bot/richmenu/validate"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); diff --git a/lib/module-attach/tests/api/LineModuleAttachClientTest.spec.ts b/lib/module-attach/tests/api/LineModuleAttachClientTest.spec.ts index 0e39ab223..fabbc3154 100644 --- a/lib/module-attach/tests/api/LineModuleAttachClientTest.spec.ts +++ b/lib/module-attach/tests/api/LineModuleAttachClientTest.spec.ts @@ -5,7 +5,7 @@ import { AttachModuleResponse } from "../../model/attachModuleResponse"; import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -34,7 +34,10 @@ describe("LineModuleAttachClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -114,7 +117,10 @@ describe("LineModuleAttachClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); diff --git a/lib/module/tests/api/LineModuleClientTest.spec.ts b/lib/module/tests/api/LineModuleClientTest.spec.ts index e1b30adee..9a1a4e905 100644 --- a/lib/module/tests/api/LineModuleClientTest.spec.ts +++ b/lib/module/tests/api/LineModuleClientTest.spec.ts @@ -7,7 +7,7 @@ import { GetModulesResponse } from "../../model/getModulesResponse"; import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -26,7 +26,10 @@ describe("LineModuleClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -72,7 +75,10 @@ describe("LineModuleClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -115,7 +121,10 @@ describe("LineModuleClient", () => { equal(reqUrl.pathname, "/v2/bot/channel/detach"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -155,7 +164,10 @@ describe("LineModuleClient", () => { equal(reqUrl.pathname, "/v2/bot/channel/detach"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -217,7 +229,10 @@ describe("LineModuleClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -282,7 +297,10 @@ describe("LineModuleClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -328,7 +346,10 @@ describe("LineModuleClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -371,7 +392,10 @@ describe("LineModuleClient", () => { ); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); diff --git a/lib/shop/tests/api/ShopClientTest.spec.ts b/lib/shop/tests/api/ShopClientTest.spec.ts index abe05e6f3..ddde30741 100644 --- a/lib/shop/tests/api/ShopClientTest.spec.ts +++ b/lib/shop/tests/api/ShopClientTest.spec.ts @@ -5,7 +5,7 @@ import { MissionStickerRequest } from "../../model/missionStickerRequest"; import { createServer } from "node:http"; import { deepEqual, equal, ok } from "node:assert"; -const pkg = require("../../../../package.json"); +import { describe, it } from "vitest"; const channel_access_token = "test_channel_access_token"; @@ -21,7 +21,10 @@ describe("ShopClient", () => { equal(reqUrl.pathname, "/shop/v3/mission"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); @@ -61,7 +64,10 @@ describe("ShopClient", () => { equal(reqUrl.pathname, "/shop/v3/mission"); equal(req.headers["authorization"], `Bearer ${channel_access_token}`); - equal(req.headers["user-agent"], `${pkg.name}/${pkg.version}`); + equal( + req.headers["user-agent"], + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify({})); diff --git a/lib/version.ts b/lib/version.ts new file mode 100644 index 000000000..07283cc65 --- /dev/null +++ b/lib/version.ts @@ -0,0 +1,2 @@ +const LINE_BOT_SDK_VERSION = "__LINE_BOT_SDK_NODEJS_VERSION__"; +export const USER_AGENT = `@line/bot-sdk/${LINE_BOT_SDK_VERSION}`; diff --git a/package-lock.json b/package-lock.json index e2d057904..d3599320a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,18 +15,19 @@ "@types/express": "4.17.21", "@types/finalhandler": "1.2.3", "@types/mocha": "10.0.6", + "@vitest/coverage-v8": "^1.4.0", "express": "4.19.2", "finalhandler": "1.2.0", "husky": "9.0.11", - "mocha": "10.4.0", - "msw": "2.2.13", - "nyc": "15.1.0", + "msw": "2.2.11", "prettier": "3.2.5", "ts-node": "10.9.2", "typedoc": "^0.25.1", "typedoc-plugin-markdown": "^3.16.0", "typescript": "5.4.3", - "vitepress": "^1.0.1" + "vite": "^5.2.7", + "vitepress": "^1.0.1", + "vitest": "^1.4.0" }, "engines": { "node": ">=18" @@ -209,672 +210,570 @@ "@algolia/requester-common": "4.22.1" } }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@ampproject/remapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@babel/parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@bundled-es-modules/cookie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz", + "integrity": "sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "cookie": "^0.5.0" } }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/@bundled-es-modules/statuses": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", + "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", "dev": true, "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "statuses": "^2.0.1" } }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "node_modules/@docsearch/css": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", + "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==", + "dev": true + }, + "node_modules/@docsearch/js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.0.tgz", + "integrity": "sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@docsearch/react": "3.6.0", + "preact": "^10.0.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "node_modules/@docsearch/react": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", + "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.6.0", + "algoliasearch": "^4.19.1" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@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 + } } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], "dev": true, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "color-name": "1.1.3" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=0.8.0" + "node": ">=12" } }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/@babel/parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", - "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "node_modules/@inquirer/confirm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.0.0.tgz", + "integrity": "sha512-LHeuYP1D8NmQra1eR4UqvZMXwxEdDXyElJmmZfU44xdNLL6+GcQBS0uE16vyfZVjH8c22p9e+DStROfE/hyHrg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@inquirer/core": "^7.0.0", + "@inquirer/type": "^1.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/@inquirer/core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-7.0.0.tgz", + "integrity": "sha512-g13W5yEt9r1sEVVriffJqQ8GWy94OnfxLCreNSOTw0HPVcszmc/If1KIf7YBmlwtX4klmvwpZHnQpl3N7VX2xA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "@inquirer/type": "^1.2.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^20.11.16", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "cli-spinners": "^2.9.2", + "cli-width": "^4.1.0", + "figures": "^3.2.0", + "mute-stream": "^1.0.0", + "run-async": "^3.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "node_modules/@inquirer/core/node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bundled-es-modules/cookie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz", - "integrity": "sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==", - "dev": true, - "dependencies": { - "cookie": "^0.5.0" - } - }, - "node_modules/@bundled-es-modules/statuses": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", - "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", - "dev": true, - "dependencies": { - "statuses": "^2.0.1" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@docsearch/css": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", - "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==", - "dev": true - }, - "node_modules/@docsearch/js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.0.tgz", - "integrity": "sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==", - "dev": true, - "dependencies": { - "@docsearch/react": "3.6.0", - "preact": "^10.0.0" - } - }, - "node_modules/@docsearch/react": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", - "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-core": "1.9.3", - "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.6.0", - "algoliasearch": "^4.19.1" - }, - "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 - } - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@inquirer/confirm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.0.0.tgz", - "integrity": "sha512-LHeuYP1D8NmQra1eR4UqvZMXwxEdDXyElJmmZfU44xdNLL6+GcQBS0uE16vyfZVjH8c22p9e+DStROfE/hyHrg==", - "dev": true, - "dependencies": { - "@inquirer/core": "^7.0.0", - "@inquirer/type": "^1.2.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/core": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-7.0.0.tgz", - "integrity": "sha512-g13W5yEt9r1sEVVriffJqQ8GWy94OnfxLCreNSOTw0HPVcszmc/If1KIf7YBmlwtX4klmvwpZHnQpl3N7VX2xA==", - "dev": true, - "dependencies": { - "@inquirer/type": "^1.2.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^20.11.16", - "@types/wrap-ansi": "^3.0.0", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "cli-spinners": "^2.9.2", - "cli-width": "^4.1.0", - "figures": "^3.2.0", - "mute-stream": "^1.0.0", - "run-async": "^3.0.0", - "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/core/node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "engines": { - "node": ">= 12" + "node": ">= 12" } }, "node_modules/@inquirer/core/node_modules/mute-stream": { @@ -916,126 +815,49 @@ "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@jridgewell/resolve-uri": { @@ -1048,9 +870,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -1094,9 +916,9 @@ } }, "node_modules/@mswjs/interceptors": { - "version": "0.26.14", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.26.14.tgz", - "integrity": "sha512-q4S8RGjOUzv3A3gCawuKkUEcNJXjdPaSqoRHFvuZPWQnc7yOw702iGBRDMJoBK+l0KSv9XN8YP5ek6duRzrpqw==", + "version": "0.25.16", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.25.16.tgz", + "integrity": "sha512-8QC8JyKztvoGAdPgyZy49c9vSHHAZjHagwl4RY9E8carULk8ym3iTaiawrT1YoLF/qb449h48f71XDPgkUSOUg==", "dev": true, "dependencies": { "@open-draft/deferred-promise": "^2.2.0", @@ -1325,6 +1147,12 @@ "@shikijs/core": "1.2.0" } }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -1413,6 +1241,12 @@ "@types/node": "*" } }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, "node_modules/@types/linkify-it": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.3.tgz", @@ -1514,42 +1348,235 @@ "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", "dev": true }, - "node_modules/@vue/compiler-core": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", - "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", + "node_modules/@vitejs/plugin-vue": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", + "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", "dev": true, - "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/shared": "3.4.21", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" } }, - "node_modules/@vue/compiler-core/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" + "node_modules/@vitest/coverage-v8": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.4.0.tgz", + "integrity": "sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.4", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.4", + "istanbul-reports": "^3.1.6", + "magic-string": "^0.30.5", + "magicast": "^0.3.3", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.2.0" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "1.4.0" } }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", - "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", + "node_modules/@vitest/coverage-v8/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.4.21", - "@vue/shared": "3.4.21" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@vue/compiler-sfc": { + "node_modules/@vitest/coverage-v8/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@vitest/coverage-v8/node_modules/istanbul-lib-source-maps": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.4.tgz", + "integrity": "sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitest/coverage-v8/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@vitest/expect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.4.0.tgz", + "integrity": "sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==", + "dev": true, + "dependencies": { + "@vitest/spy": "1.4.0", + "@vitest/utils": "1.4.0", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.4.0.tgz", + "integrity": "sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==", + "dev": true, + "dependencies": { + "@vitest/utils": "1.4.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.4.0.tgz", + "integrity": "sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.4.0.tgz", + "integrity": "sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==", + "dev": true, + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.4.0.tgz", + "integrity": "sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==", + "dev": true, + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", + "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.23.9", + "@vue/shared": "3.4.21", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", + "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/compiler-sfc": { "version": "3.4.21", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz", "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==", @@ -1576,13 +1603,22 @@ "@vue/shared": "3.4.21" } }, + "node_modules/@vue/devtools-api": { + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.0.25.tgz", + "integrity": "sha512-fL6DlRp4MSXCLYcqYvKU7QhQZWE3Hfu7X8pC25BS74coJi7uJeSWs4tmrITcwFihNmC9S5GPiffkMdckkeWjzg==", + "dev": true, + "dependencies": { + "@vue/devtools-kit": "^7.0.25" + } + }, "node_modules/@vue/devtools-kit": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.0.21.tgz", - "integrity": "sha512-tNDtcQkPHfLDH1wtZuSZ2ZfE+r/aGswkBmKmXjwfpZTsOTk/YXsgrMnBKtHOL6dpsG3GyP09gIgNkCkA5lBIPQ==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.0.25.tgz", + "integrity": "sha512-wbLkSnOTsKHPb1mB9koFHUoSAF8Dp6Ii/ocR2+DeXFY4oKqIjCeJb/4Lihk4rgqEhCy1WwxLfTgNDo83VvDYkQ==", "dev": true, "dependencies": { - "@vue/devtools-shared": "^7.0.21", + "@vue/devtools-shared": "^7.0.25", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^1.0.0", @@ -1593,9 +1629,9 @@ } }, "node_modules/@vue/devtools-shared": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.0.21.tgz", - "integrity": "sha512-wuIakRkSqwsk9+Y4z5QTdsmhTJRAt4aX0ROXyOOEPL+ROrN26YsPbXyqlzroU5uoOoAvx81iObIlmwZWtZztgw==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.0.25.tgz", + "integrity": "sha512-5+XYhcHSXuJSguYnNwL6/e6VTmXwCfryWQOkffh9ZU2zMByybqqqBrMWqvBkqTmMFCjPdzulo66xXbVbwLaElQ==", "dev": true, "dependencies": { "rfdc": "^1.3.1" @@ -1865,9 +1901,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1877,27 +1913,14 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/algoliasearch": { "version": "4.22.1", "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.22.1.tgz", @@ -1920,15 +1943,6 @@ "@algolia/transporter": "4.22.1" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -1991,6 +2005,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1999,42 +2015,27 @@ "node": ">= 8" } }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2063,6 +2064,8 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -2130,6 +2133,8 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -2137,44 +2142,6 @@ "node": ">=8" } }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.21.11", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.11.tgz", - "integrity": "sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001538", - "electron-to-chromium": "^1.4.526", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2192,17 +2159,11 @@ "node": ">= 0.8" } }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, "engines": { "node": ">=8" } @@ -2220,35 +2181,24 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001538", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz", - "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2265,6 +2215,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -2276,6 +2238,8 @@ "url": "https://paulmillr.com/funding/" } ], + "optional": true, + "peer": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2292,15 +2256,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/cli-spinners": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", @@ -2313,34 +2268,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2379,12 +2306,6 @@ "optional": true, "peer": true }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2432,15 +2353,6 @@ "node": ">= 0.6" } }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, "node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -2491,25 +2403,16 @@ "ms": "2.0.0" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, "dependencies": { - "strip-bom": "^4.0.0" + "type-detect": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, "node_modules/delayed-stream": { @@ -2540,13 +2443,13 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { - "node": ">=0.3.1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/ee-first": { @@ -2555,12 +2458,6 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "node_modules/electron-to-chromium": { - "version": "1.4.527", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.527.tgz", - "integrity": "sha512-EafxEiEDzk2aLrdbtVczylHflHdHkNrpGNHIgDyA63sUQLQVS2ayj2hPw3RsVB42qkwURH+T2OxV7kGPUuYszA==", - "dev": true - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2576,11 +2473,43 @@ "node": ">= 0.8" } }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } }, "node_modules/escalade": { "version": "3.1.1", @@ -2597,31 +2526,6 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -2637,6 +2541,53 @@ "node": ">= 0.6" } }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", @@ -2737,6 +2688,8 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2762,112 +2715,6 @@ "node": ">= 0.8" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, "node_modules/focus-trap": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", @@ -2897,19 +2744,6 @@ } } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -2942,26 +2776,6 @@ "node": ">= 0.6" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2988,15 +2802,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -3006,6 +2811,15 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -3020,13 +2834,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "engines": { - "node": ">=8.0.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob": { @@ -3054,6 +2871,8 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -3061,21 +2880,6 @@ "node": ">= 6" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, "node_modules/graphql": { "version": "16.8.1", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", @@ -3148,31 +2952,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, "node_modules/headers-polyfill": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.2.tgz", @@ -3207,6 +2986,15 @@ "node": ">= 0.8" } }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, "node_modules/husky": { "version": "9.0.11", "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", @@ -3242,24 +3030,6 @@ "optional": true, "peer": true }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3290,6 +3060,8 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -3302,6 +3074,8 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3320,6 +3094,8 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -3338,49 +3114,12 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.12.0" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3388,123 +3127,62 @@ "dev": true }, "node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/istanbul-lib-source-maps": { + "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { - "ms": "2.1.2" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">=6.0" + "bin": { + "semver": "bin/semver.js" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, "node_modules/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -3514,89 +3192,47 @@ "node": ">=8" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json5": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", - "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lunr": { @@ -3617,19 +3253,15 @@ "node": ">=12" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/magicast": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.3.tgz", + "integrity": "sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==", "dev": true, "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "source-map-js": "^1.0.2" } }, "node_modules/make-error": { @@ -3671,6 +3303,12 @@ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -3713,6 +3351,18 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", @@ -3746,123 +3396,16 @@ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true }, - "node_modules/mocha": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", - "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "8.1.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/mlly": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", + "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" } }, "node_modules/ms": { @@ -3872,9 +3415,9 @@ "dev": true }, "node_modules/msw": { - "version": "2.2.13", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.2.13.tgz", - "integrity": "sha512-ljFf1xZsU0b4zv1l7xzEmC6OZA6yD06hcx0H+dc8V0VypaP3HGYJa1rMLjQbBWl32ptGhcfwcPCWDB1wjmsftw==", + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.2.11.tgz", + "integrity": "sha512-XtIoewF7XWLT0a39Ftkazt9PprBA1bxHZ4CSlomN74sCBJOJU2w5VwLmGlswwsOBhGoF7jovt6bxrSIESxA1KA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3882,7 +3425,7 @@ "@bundled-es-modules/statuses": "^1.0.1", "@inquirer/confirm": "^3.0.0", "@mswjs/cookies": "^1.1.0", - "@mswjs/interceptors": "^0.26.14", + "@mswjs/interceptors": "^0.25.16", "@open-draft/until": "^2.1.0", "@types/cookie": "^0.6.0", "@types/statuses": "^2.0.4", @@ -4014,188 +3557,51 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" + "path-key": "^4.0.0" }, "engines": { - "node": ">=8.9" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nyc/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/on-finished": { @@ -4219,77 +3625,26 @@ "wrappy": "1" } }, - "node_modules/outvariant": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.2.tgz", - "integrity": "sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==", - "dev": true - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/outvariant": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.2.tgz", + "integrity": "sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==", + "dev": true }, "node_modules/parseurl": { "version": "1.3.3", @@ -4300,15 +3655,6 @@ "node": ">= 0.8" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -4333,6 +3679,21 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/perfect-debounce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", @@ -4350,6 +3711,8 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8.6" }, @@ -4357,6 +3720,17 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, "node_modules/postcss": { "version": "8.4.38", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", @@ -4428,16 +3802,30 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "fromentries": "^1.2.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/proxy-addr": { @@ -4474,15 +3862,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -4492,11 +3871,19 @@ "node": ">= 0.6" } }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -4504,18 +3891,6 @@ "node": ">=8.10.0" } }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4525,33 +3900,12 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "node_modules/rfdc": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", "dev": true }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/rollup": { "version": "4.13.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", @@ -4584,12 +3938,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4622,15 +3970,6 @@ "dev": true, "peer": true }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -4661,15 +4000,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", @@ -4685,12 +4015,6 @@ "node": ">= 0.8.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -4744,21 +4068,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", @@ -4791,23 +4106,6 @@ "node": ">=0.10.0" } }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/speakingurl": { "version": "14.0.1", "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", @@ -4817,10 +4115,10 @@ "node": ">=0.10.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true }, "node_modules/statuses": { @@ -4832,6 +4130,12 @@ "node": ">= 0.8" } }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "dev": true + }, "node_modules/strict-event-emitter": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", @@ -4864,27 +4168,36 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/strip-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "js-tokens": "^9.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/antfu" } }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "dev": true + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4937,6 +4250,30 @@ "node": ">=8" } }, + "node_modules/tinybench": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz", + "integrity": "sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.3.tgz", + "integrity": "sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -4951,6 +4288,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-number": "^7.0.0" }, @@ -5019,13 +4358,13 @@ "node": ">=0.3.1" } }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/type-is": { @@ -5041,15 +4380,6 @@ "node": ">= 0.6" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typedoc": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.12.tgz", @@ -5120,6 +4450,12 @@ "node": ">=14.17" } }, + "node_modules/ufo": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", + "dev": true + }, "node_modules/uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -5142,542 +4478,73 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vitepress": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.1.tgz", - "integrity": "sha512-eNr5pOBppYUUjEhv8S0S2t9Tv95LQ6mMeHj6ivaGwfHxpov70Vduuwl/QQMDRznKDSaP0WKV7a82Pb4JVOaqEw==", - "dev": true, - "dependencies": { - "@docsearch/css": "^3.6.0", - "@docsearch/js": "^3.6.0", - "@shikijs/core": "^1.2.0", - "@shikijs/transformers": "^1.2.0", - "@types/markdown-it": "^13.0.7", - "@vitejs/plugin-vue": "^5.0.4", - "@vue/devtools-api": "^7.0.16", - "@vueuse/core": "^10.9.0", - "@vueuse/integrations": "^10.9.0", - "focus-trap": "^7.5.4", - "mark.js": "8.11.1", - "minisearch": "^6.3.0", - "shiki": "^1.2.0", - "vite": "^5.2.2", - "vue": "^3.4.21" - }, - "bin": { - "vitepress": "bin/vitepress.js" - }, - "peerDependencies": { - "markdown-it-mathjax3": "^4", - "postcss": "^8" - }, - "peerDependenciesMeta": { - "markdown-it-mathjax3": { - "optional": true - }, - "postcss": { - "optional": true - } - } - }, - "node_modules/vitepress/node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitepress/node_modules/@vitejs/plugin-vue": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", - "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", - "dev": true, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/vitepress/node_modules/@vue/devtools-api": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.0.21.tgz", - "integrity": "sha512-hIkqpU3I9BM/qNUGhb/RAfEkRtFZTM4QFrBBH5gxGYubBIRctqgQk4ukLAkhaW+VmOw5DAPxQHXH4W6Oh36L6g==", - "dev": true, - "dependencies": { - "@vue/devtools-kit": "^7.0.21" - } - }, - "node_modules/vitepress/node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" + "dev": true, + "engines": { + "node": ">= 0.8" } }, - "node_modules/vitepress/node_modules/shiki": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.2.0.tgz", - "integrity": "sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==", + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { - "@shikijs/core": "1.2.0" + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" } }, - "node_modules/vitepress/node_modules/vite": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.6.tgz", - "integrity": "sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==", + "node_modules/vite": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.7.tgz", + "integrity": "sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==", "dev": true, "dependencies": { "esbuild": "^0.20.1", - "postcss": "^8.4.36", + "postcss": "^8.4.38", "rollup": "^4.13.0" }, "bin": { @@ -5725,6 +4592,192 @@ } } }, + "node_modules/vite-node": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.4.0.tgz", + "integrity": "sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-node/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/vite-node/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/vitepress": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.2.tgz", + "integrity": "sha512-bEj9yTEdWyewJFOhEREZF+mXuAgOq27etuJZT6DZSp+J3XpQstXMJc5piSVwhZBtuj8OfA0iXy+jdP1c71KMYQ==", + "dev": true, + "dependencies": { + "@docsearch/css": "^3.6.0", + "@docsearch/js": "^3.6.0", + "@shikijs/core": "^1.2.0", + "@shikijs/transformers": "^1.2.0", + "@types/markdown-it": "^13.0.7", + "@vitejs/plugin-vue": "^5.0.4", + "@vue/devtools-api": "^7.0.16", + "@vueuse/core": "^10.9.0", + "@vueuse/integrations": "^10.9.0", + "focus-trap": "^7.5.4", + "mark.js": "8.11.1", + "minisearch": "^6.3.0", + "shiki": "^1.2.0", + "vite": "^5.2.2", + "vue": "^3.4.21" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vitepress/node_modules/@shikijs/core": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.2.2.tgz", + "integrity": "sha512-GXbTyNP6HlxpyWMR4eirW54Cxp84nVuivcV5hGVBgKnIl+UmD4AJgCX1uXuNRcFFAw58lB3HqryuezIc0iCLgw==", + "dev": true + }, + "node_modules/vitepress/node_modules/shiki": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.2.2.tgz", + "integrity": "sha512-nqazfFgrU+DBLqk4+WjmGQz8sVWkcUcGriHqSM2zGk0GhjirVz4FyJ3AABEx91OpjGiKpuKBg2diYfRfQG3Fbg==", + "dev": true, + "dependencies": { + "@shikijs/core": "1.2.2" + } + }, + "node_modules/vitest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.4.0.tgz", + "integrity": "sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==", + "dev": true, + "dependencies": { + "@vitest/expect": "1.4.0", + "@vitest/runner": "1.4.0", + "@vitest/snapshot": "1.4.0", + "@vitest/spy": "1.4.0", + "@vitest/utils": "1.4.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.2", + "vite": "^5.0.0", + "vite-node": "1.4.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.4.0", + "@vitest/ui": "1.4.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", @@ -5773,11 +4826,21 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } }, "node_modules/wordwrap": { "version": "1.0.0", @@ -5785,12 +4848,6 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -5811,107 +4868,11 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/decamelize": { + "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yn": { "version": "3.1.1", @@ -5921,18 +4882,6 @@ "engines": { "node": ">=6" } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/package.json b/package.json index d8358846f..e054485dc 100644 --- a/package.json +++ b/package.json @@ -13,13 +13,14 @@ ], "scripts": { "pretest": "npm run format && npm run build", - "test": "TEST_PORT=1234 TS_NODE_CACHE=0 mocha --exit", - "covtest": "TEST_PORT=1234 TS_NODE_CACHE=0 nyc mocha --exit", + "test": "vitest run", + "covtest": "vitest run --coverage", "prettier": "prettier \"{lib,test}/**/*.ts\"", "format": "npm run prettier -- --write", "format:check": "npm run prettier -- -l", "clean": "rm -rf dist/*", - "prebuild": "npm run format:check && npm run clean", + "copy-rollup": "node ./scripts/workaround-for-rollup.mjs", + "prebuild": "npm run format:check && npm run clean && npm run copy-rollup", "build": "tsc", "docs": "vitepress dev docs", "docs:build": "vitepress build docs", @@ -48,18 +49,19 @@ "@types/express": "4.17.21", "@types/finalhandler": "1.2.3", "@types/mocha": "10.0.6", + "@vitest/coverage-v8": "^1.4.0", "express": "4.19.2", "finalhandler": "1.2.0", "husky": "9.0.11", - "mocha": "10.4.0", - "msw": "2.2.13", - "nyc": "15.1.0", + "msw": "2.2.11", "prettier": "3.2.5", "ts-node": "10.9.2", "typedoc": "^0.25.1", "typedoc-plugin-markdown": "^3.16.0", "typescript": "5.4.3", - "vitepress": "^1.0.1" + "vite": "^5.2.7", + "vitepress": "^1.0.1", + "vitest": "^1.4.0" }, "husky": { "hooks": { @@ -67,26 +69,5 @@ "pre-push": "npm run format:check && npm run build && npm run test" } }, - "nyc": { - "require": [ - "ts-node/register" - ], - "extension": [ - ".ts" - ], - "reporter": [ - "lcov", - "text" - ], - "sourceMap": true, - "instrument": true - }, - "mocha": { - "require": "ts-node/register", - "spec": [ - "test/**/*.spec.ts", - "lib/**/tests/**/*.spec.ts" - ] - }, "license": "Apache-2.0" } diff --git a/scripts/workaround-for-rollup.mjs b/scripts/workaround-for-rollup.mjs new file mode 100644 index 000000000..8f102f859 --- /dev/null +++ b/scripts/workaround-for-rollup.mjs @@ -0,0 +1,44 @@ +/** + * This script is a workaround for a compatibility issue between Vite and its dependency, Rollup. + * Specifically, Vite's typescript definitions reference a module ('rollup/parseAst') that is not + * directly resolvable with the default module resolution strategy used in some configurations. + * + * The script copies the necessary Rollup files to the expected locations and updates import paths + * in 'parseAst.d.ts' to ensure Vite can correctly import these types. + * + * This workaround should be removed once the underlying issue with Vite's dependency resolution + * is resolved. Ideally, this would be when Vite or Rollup releases an update that addresses the + * issue directly, making this script unnecessary. + * + * Keep an eye on Vite and Rollup's release notes for an update on this issue. + * https://github.com/rollup/rollup/issues/5199 + * https://github.com/vitest-dev/vitest/issues/4567 + */ + +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const rollupDir = path.join(__dirname, '..', 'node_modules', 'rollup', 'dist'); +const destDir = path.join(__dirname, '..', 'node_modules', 'rollup'); + +const filesToCopy = ['parseAst.d.ts', 'parseAst.js']; + +filesToCopy.forEach(file => { + const srcPath = path.join(rollupDir, file); + const destPath = path.join(destDir, file); + + fs.copyFileSync(srcPath, destPath); + console.log(`[Workaround] Copied ${srcPath} to ${destPath}`); + + if (file === 'parseAst.d.ts') { + const data = fs.readFileSync(destPath, 'utf8'); + const result = data.replace("from './rollup';", "from './';"); + fs.writeFileSync(destPath, result, 'utf8'); + console.log(`[Workaround] Updated import in ${destPath}`); + } +}); diff --git a/test/client.spec.ts b/test/client.spec.ts index 221e4be20..d08ff2565 100644 --- a/test/client.spec.ts +++ b/test/client.spec.ts @@ -14,7 +14,7 @@ import { OAUTH_BASE_PREFIX_V2_1, } from "../lib/endpoints"; -const pkg = require("../package.json"); +import { describe, it, beforeAll, afterAll, afterEach } from "vitest"; const channelAccessToken = "test_channel_access_token"; @@ -58,10 +58,10 @@ const checkInterceptionOption = ( describe("client", () => { const server = setupServer(); - before(() => { + beforeAll(() => { server.listen(); }); - after(() => { + afterAll(() => { server.close(); }); afterEach(() => { @@ -95,7 +95,7 @@ describe("client", () => { const interceptionOption: Record = { authorization: `Bearer ${channelAccessToken}`, - "User-Agent": `${pkg.name}/${pkg.version}`, + "User-Agent": "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", }; const mockGet = ( @@ -1343,10 +1343,10 @@ describe("client", () => { const oauth = new OAuth(); describe("oauth", () => { const server = setupServer(); - before(() => { + beforeAll(() => { server.listen(); }); - after(() => { + afterAll(() => { server.close(); }); afterEach(() => { @@ -1355,7 +1355,7 @@ describe("oauth", () => { const interceptionOption: Record = { "content-type": "application/x-www-form-urlencoded", - "User-Agent": `${pkg.name}/${pkg.version}`, + "User-Agent": "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", }; it("issueAccessToken", async () => { const client_id = "test_client_id"; diff --git a/test/helpers/test-server.ts b/test/helpers/test-server.ts index 234e0d1d0..c6d0f1dd7 100644 --- a/test/helpers/test-server.ts +++ b/test/helpers/test-server.ts @@ -1,5 +1,5 @@ import * as bodyParser from "body-parser"; -import * as express from "express"; +import express from "express"; import { Server } from "node:http"; import { join } from "node:path"; import { writeFileSync } from "node:fs"; diff --git a/test/http-axios.spec.ts b/test/http-axios.spec.ts index ca8cf482c..7560df0d3 100644 --- a/test/http-axios.spec.ts +++ b/test/http-axios.spec.ts @@ -8,7 +8,8 @@ import { createReadStream, readFileSync } from "node:fs"; import { join } from "node:path"; import * as fs from "node:fs"; -const pkg = require("../package.json"); +import { describe, it, beforeAll, afterAll, afterEach } from "vitest"; + const baseURL = "https://line.me"; describe("http", () => { const httpClient = new HTTPClient({ @@ -19,10 +20,10 @@ describe("http", () => { }); const server = setupServer(); - before(() => { + beforeAll(() => { server.listen(); }); - after(() => { + afterAll(() => { server.close(); }); afterEach(() => { @@ -31,7 +32,7 @@ describe("http", () => { const interceptionOption: Record = { "test-header-key": "Test-Header-Value", - "User-Agent": `${pkg.name}/${pkg.version}`, + "User-Agent": "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", }; class MSWResult { @@ -265,7 +266,10 @@ describe("http", () => { server.use( http.get(baseURL + "/404", async ({ request, params, cookies }) => { scope.done(); - equal(request.headers.get("user-agent"), `${pkg.name}/${pkg.version}`); + equal( + request.headers.get("user-agent"), + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); return HttpResponse.json(404, { status: 404 }); }), ); @@ -285,7 +289,10 @@ describe("http", () => { server.use( http.get(baseURL + "/get", async ({ request }) => { scope.done(); - equal(request.headers.get("user-agent"), `${pkg.name}/${pkg.version}`); + equal( + request.headers.get("user-agent"), + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); return HttpResponse.json({}); }), ); diff --git a/test/http-fetch.spec.ts b/test/http-fetch.spec.ts index f14829252..5e539d686 100644 --- a/test/http-fetch.spec.ts +++ b/test/http-fetch.spec.ts @@ -7,7 +7,8 @@ import { setupServer } from "msw/node"; import { join } from "node:path"; import * as fs from "node:fs"; -const pkg = require("../package.json"); +import { describe, it, beforeAll, afterAll, afterEach } from "vitest"; + const baseURL = "https://line.me"; describe("http(fetch)", () => { @@ -19,10 +20,10 @@ describe("http(fetch)", () => { }); const server = setupServer(); - before(() => { + beforeAll(() => { server.listen(); }); - after(() => { + afterAll(() => { server.close(); }); afterEach(() => { @@ -31,7 +32,7 @@ describe("http(fetch)", () => { const interceptionOption: Record = { "test-header-key": "Test-Header-Value", - "User-Agent": `${pkg.name}/${pkg.version}`, + "User-Agent": "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", }; class MSWResult { @@ -206,7 +207,10 @@ describe("http(fetch)", () => { server.use( http.get(baseURL + "/404", async ({ request, params, cookies }) => { scope.done(); - equal(request.headers.get("user-agent"), `${pkg.name}/${pkg.version}`); + equal( + request.headers.get("user-agent"), + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); return HttpResponse.json({ reason: "not found" }, { status: 404 }); }), ); @@ -228,7 +232,10 @@ describe("http(fetch)", () => { server.use( http.get(baseURL + "/get", async ({ request }) => { scope.done(); - equal(request.headers.get("user-agent"), `${pkg.name}/${pkg.version}`); + equal( + request.headers.get("user-agent"), + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", + ); return HttpResponse.json({}); }), ); diff --git a/test/libs-channelAccessToken.spec.ts b/test/libs-channelAccessToken.spec.ts index e12cf5b08..433176a29 100644 --- a/test/libs-channelAccessToken.spec.ts +++ b/test/libs-channelAccessToken.spec.ts @@ -3,16 +3,16 @@ import { http, HttpResponse } from "msw"; import { setupServer } from "msw/node"; import { deepEqual, equal } from "node:assert"; -const pkg = require("../package.json"); +import { describe, it, beforeAll, afterAll, afterEach } from "vitest"; const client = new channelAccessToken.ChannelAccessTokenClient({}); describe("channelAccessToken", () => { const server = setupServer(); - before(() => { + beforeAll(() => { server.listen(); }); - after(() => { + afterAll(() => { server.close(); }); afterEach(() => { @@ -26,7 +26,7 @@ describe("channelAccessToken", () => { async ({ request, params, cookies }) => { equal( request.headers.get("User-Agent"), - `${pkg.name}/${pkg.version}`, + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", ); equal( request.headers.get("content-type"), diff --git a/test/libs-manageAudience.spec.ts b/test/libs-manageAudience.spec.ts index 1d9fa3aad..7832f23d8 100644 --- a/test/libs-manageAudience.spec.ts +++ b/test/libs-manageAudience.spec.ts @@ -3,7 +3,7 @@ import { http, HttpResponse } from "msw"; import { setupServer } from "msw/node"; import { deepEqual, equal, match } from "node:assert"; -const pkg = require("../package.json"); +import { describe, it, beforeAll, afterAll, afterEach } from "vitest"; const channelAccessToken = "test_channel_access_token"; @@ -17,10 +17,10 @@ const blobClient = new manageAudience.ManageAudienceBlobClient({ describe("manageAudience", () => { const server = setupServer(); - before(() => { + beforeAll(() => { server.listen(); }); - after(() => { + afterAll(() => { server.close(); }); afterEach(() => { @@ -41,7 +41,7 @@ describe("manageAudience", () => { ); equal( request.headers.get("User-Agent"), - `${pkg.name}/${pkg.version}`, + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", ); match( request.headers.get("content-type")!!, diff --git a/test/libs-messagingApi.spec.ts b/test/libs-messagingApi.spec.ts index eab38cb37..ab588be60 100644 --- a/test/libs-messagingApi.spec.ts +++ b/test/libs-messagingApi.spec.ts @@ -3,7 +3,7 @@ import { http, HttpResponse } from "msw"; import { setupServer } from "msw/node"; import { deepEqual, equal } from "node:assert"; -const pkg = require("../package.json"); +import { describe, it, beforeAll, afterAll, afterEach } from "vitest"; const channelAccessToken = "test_channel_access_token"; @@ -17,10 +17,10 @@ const blobClient = new messagingApi.MessagingApiBlobClient({ describe("messagingApi", () => { const server = setupServer(); - before(() => { + beforeAll(() => { server.listen(); }); - after(() => { + afterAll(() => { server.close(); }); afterEach(() => { @@ -41,7 +41,7 @@ describe("messagingApi", () => { ); equal( request.headers.get("User-Agent"), - `${pkg.name}/${pkg.version}`, + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", ); equal(request.headers.get("content-type"), "image/jpeg"); equal(await request.text(), "GREAT_JPEG"); @@ -73,7 +73,7 @@ describe("messagingApi", () => { ); equal( request.headers.get("User-Agent"), - `${pkg.name}/${pkg.version}`, + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", ); equal(request.headers.get("content-type"), "application/json"); equal(request.headers.get("x-line-retry-key"), "KEYKEYKEYKEY"); @@ -104,7 +104,7 @@ describe("messagingApi", () => { ); equal( request.headers.get("User-Agent"), - `${pkg.name}/${pkg.version}`, + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", ); equal(request.headers.get("content-type"), "application/json"); equal(request.headers.get("x-line-retry-key"), undefined); @@ -135,7 +135,7 @@ describe("messagingApi", () => { ); equal( request.headers.get("User-Agent"), - `${pkg.name}/${pkg.version}`, + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", ); const url = new URL(request.url); @@ -172,7 +172,7 @@ describe("messagingApi", () => { ); equal( request.headers.get("User-Agent"), - `${pkg.name}/${pkg.version}`, + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", ); const url = new URL(request.url); diff --git a/test/libs-shop.spec.ts b/test/libs-shop.spec.ts index 2e423005e..839b30bf9 100644 --- a/test/libs-shop.spec.ts +++ b/test/libs-shop.spec.ts @@ -3,7 +3,7 @@ import { http, HttpResponse } from "msw"; import { setupServer } from "msw/node"; import { deepEqual, equal } from "node:assert"; -const pkg = require("../package.json"); +import { describe, it, beforeAll, afterAll, afterEach } from "vitest"; const channelAccessToken = "test_channel_access_token"; @@ -13,10 +13,10 @@ const client = new shop.ShopClient({ describe("shop", () => { const server = setupServer(); - before(() => { + beforeAll(() => { server.listen(); }); - after(() => { + afterAll(() => { server.close(); }); afterEach(() => { @@ -34,7 +34,7 @@ describe("shop", () => { ); equal( request.headers.get("User-Agent"), - `${pkg.name}/${pkg.version}`, + "@line/bot-sdk/__LINE_BOT_SDK_NODEJS_VERSION__", ); return HttpResponse.json({}); }, diff --git a/test/libs-webhook.spec.ts b/test/libs-webhook.spec.ts index ff9467a12..49424e954 100644 --- a/test/libs-webhook.spec.ts +++ b/test/libs-webhook.spec.ts @@ -1,5 +1,7 @@ import { webhook } from "../lib"; +import { describe, it } from "vitest"; + describe("webhook", () => { it("event", async () => { const event: webhook.Event = { diff --git a/test/middleware.spec.ts b/test/middleware.spec.ts index 0a3f27d33..11da664de 100644 --- a/test/middleware.spec.ts +++ b/test/middleware.spec.ts @@ -7,6 +7,8 @@ import middleware from "../lib/middleware"; import * as Types from "../lib/types"; import { close, listen } from "./helpers/test-server"; +import { describe, it, beforeAll, afterAll, afterEach } from "vitest"; + const TEST_PORT = parseInt(process.env.TEST_PORT || "1234", 10); const m = middleware({ channelSecret: "test_channel_secret" }); @@ -48,8 +50,12 @@ describe("middleware test", () => { defaultHeaders: headers, }); - before(() => listen(TEST_PORT, m)); - after(() => close()); + beforeAll(() => { + listen(TEST_PORT, m); + }); + afterAll(() => { + close(); + }); describe("Succeeds on parsing valid request", () => { const testCases = [ @@ -84,7 +90,7 @@ describe("middleware test", () => { const req = getRecentReq(); deepEqual(req.body.destination, DESTINATION); deepEqual(req.body.events, [webhook]); - }).timeout(6000); + }); }); }); diff --git a/test/utils.spec.ts b/test/utils.spec.ts index 0e6c690d2..04aa8fcbc 100644 --- a/test/utils.spec.ts +++ b/test/utils.spec.ts @@ -2,6 +2,8 @@ import { ensureJSON } from "../lib/utils"; import { JSONParseError } from "../lib/exceptions"; import { equal, ok } from "node:assert"; +import { describe, it } from "vitest"; + describe("utils", () => { describe("ensureJSON", () => { it("fails when input isn't an object", () => { diff --git a/test/validate-signature.spec.ts b/test/validate-signature.spec.ts index d830db82a..26f8878e9 100644 --- a/test/validate-signature.spec.ts +++ b/test/validate-signature.spec.ts @@ -1,6 +1,8 @@ import { ok } from "node:assert"; import validateSignature from "../lib/validate-signature"; +import { describe, it } from "vitest"; + const body = { hello: "world" }; const secret = "test_secret"; diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 000000000..33f068cbf --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + include: [ + "test/**/*.spec.ts", + "lib/**/tests/**/*.spec.ts" + ] + }, +})