From cb7d289e6b3aaa4e1eba769c3ba35bc851eb9e20 Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Sun, 7 Jan 2024 18:11:30 -0500 Subject: [PATCH 1/6] fix: remediate 'released' value in getGame and getGameExtended (#65) --- src/game/getGame.test.ts | 2 +- src/game/getGame.ts | 10 ++-------- src/game/getGameExtended.test.ts | 2 +- src/game/getGameExtended.ts | 5 ++--- src/game/models/game-extended.model.ts | 2 +- src/game/models/game.model.ts | 2 +- 6 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/game/getGame.test.ts b/src/game/getGame.test.ts index 0b0f4c6..e4c5208 100644 --- a/src/game/getGame.test.ts +++ b/src/game/getGame.test.ts @@ -73,7 +73,7 @@ describe("Function: getGame", () => { publisher: "Activision ", developer: "David Crane", genre: "Racing", - released: 1980, + released: "1980", gameTitle: "Dragster", console: "Atari 2600" }); diff --git a/src/game/getGame.ts b/src/game/getGame.ts index 3167cfd..b296556 100644 --- a/src/game/getGame.ts +++ b/src/game/getGame.ts @@ -45,7 +45,7 @@ import type { Game, GetGameResponse } from "./models"; * publisher: "Activision", * developer: "David Crane", * genre: "Racing", - * released: 1980, + * released: "1980", * gameTitle: "Dragster", * console: "Atari 2600" * } @@ -64,12 +64,6 @@ export const getGame = async ( const rawResponse = await call({ url }); return serializeProperties(rawResponse, { - shouldCastToNumbers: [ - "ID", - "ForumTopicID", - "ConsoleID", - "Flags", - "Released" - ] + shouldCastToNumbers: ["ID", "ForumTopicID", "ConsoleID", "Flags"] }); }; diff --git a/src/game/getGameExtended.test.ts b/src/game/getGameExtended.test.ts index 97cb59a..e0a5f39 100644 --- a/src/game/getGameExtended.test.ts +++ b/src/game/getGameExtended.test.ts @@ -91,7 +91,7 @@ describe("Function: getGameExtended", () => { publisher: "Activision ", developer: "David Crane", genre: "Racing", - released: 1980, + released: "1980", isFinal: false, consoleName: "Atari 2600", richPresencePatch: "2b92fa1bf9635c303b3b7f8feea3ed3c", diff --git a/src/game/getGameExtended.ts b/src/game/getGameExtended.ts index 3cd2a67..15b4930 100644 --- a/src/game/getGameExtended.ts +++ b/src/game/getGameExtended.ts @@ -43,7 +43,7 @@ import type { GameExtended, GetGameExtendedResponse } from "./models"; * publisher: "Activision", * developer: "David Crane", * genre: "Racing", - * released: 1980, + * released: "1980", * isFinal: false, * consoleName: "Atari 2600", * richPresencePatch: "2b92fa1bf9635c303b3b7f8feea3ed3c", @@ -97,8 +97,7 @@ export const getGameExtended = async ( "TrueRatio", "DisplayOrder", "NumDistinctPlayersCasual", - "NumDistinctPlayersHardcore", - "Released" + "NumDistinctPlayersHardcore" ] }); }; diff --git a/src/game/models/game-extended.model.ts b/src/game/models/game-extended.model.ts index ffd6015..f9ecaae 100644 --- a/src/game/models/game-extended.model.ts +++ b/src/game/models/game-extended.model.ts @@ -14,7 +14,7 @@ export interface GameExtended { publisher: string; developer: string; genre: string; - released: number; + released: string; isFinal: boolean; consoleName: string; richPresencePatch: string; diff --git a/src/game/models/game.model.ts b/src/game/models/game.model.ts index b0b9915..db113df 100644 --- a/src/game/models/game.model.ts +++ b/src/game/models/game.model.ts @@ -13,7 +13,7 @@ export interface Game { publisher: string; developer: string; genre: string; - released: number; + released: string; gameTitle: string; console: string; } From 13562f4e900cb09a3a276af5c9724e048c0a7a00 Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Sun, 14 Jan 2024 12:04:43 -0500 Subject: [PATCH 2/6] feat(getGameExtended): add support for unofficial achievements param (#63) --- src/game/getGameExtended.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/game/getGameExtended.ts b/src/game/getGameExtended.ts index 15b4930..1def77b 100644 --- a/src/game/getGameExtended.ts +++ b/src/game/getGameExtended.ts @@ -73,17 +73,23 @@ import type { GameExtended, GetGameExtendedResponse } from "./models"; */ export const getGameExtended = async ( authorization: AuthObject, - payload: { gameId: ID } + payload: { gameId: ID; isRequestingUnofficialAchievements: boolean } ): Promise => { - const { gameId } = payload; + const { gameId, isRequestingUnofficialAchievements } = payload; + + const params: Record = { + i: gameId + }; + + if (isRequestingUnofficialAchievements) { + params["f"] = 5; + } const url = buildRequestUrl( apiBaseUrl, "/API_GetGameExtended.php", authorization, - { - i: gameId - } + params ); const rawResponse = await call({ url }); From 5e9fa032ff33ce3d32b2bd8254cc6e984774934f Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Sun, 14 Jan 2024 12:05:05 -0500 Subject: [PATCH 3/6] feat(getUserCompletionProgress): add function (#64) --- src/user/getUserCompletionProgress.test.ts | 81 ++++++++++++++++++ src/user/getUserCompletionProgress.ts | 83 +++++++++++++++++++ src/user/index.ts | 1 + ...user-completion-progress-response.model.ts | 25 ++++++ src/user/models/index.ts | 3 + .../user-completion-progress-entity.model.ts | 19 +++++ .../models/user-completion-progress.model.ts | 7 ++ 7 files changed, 219 insertions(+) create mode 100644 src/user/getUserCompletionProgress.test.ts create mode 100644 src/user/getUserCompletionProgress.ts create mode 100644 src/user/models/get-user-completion-progress-response.model.ts create mode 100644 src/user/models/user-completion-progress-entity.model.ts create mode 100644 src/user/models/user-completion-progress.model.ts diff --git a/src/user/getUserCompletionProgress.test.ts b/src/user/getUserCompletionProgress.test.ts new file mode 100644 index 0000000..9b32bba --- /dev/null +++ b/src/user/getUserCompletionProgress.test.ts @@ -0,0 +1,81 @@ +import { http, HttpResponse } from "msw"; +import { setupServer } from "msw/node"; + +import { apiBaseUrl } from "../utils/internal"; +import { buildAuthorization } from "../utils/public"; +import { getUserCompletionProgress } from "./getUserCompletionProgress"; +import type { GetUserCompletionProgressResponse } from "./models"; + +const server = setupServer(); + +describe("Function: getUserCompletionProgress", () => { + // MSW Setup + beforeAll(() => server.listen()); + afterEach(() => server.resetHandlers()); + afterAll(() => server.close()); + + it("is defined #sanity", () => { + // ASSERT + expect(getUserCompletionProgress).toBeDefined(); + }); + + it("retrieves completion progress by username", async () => { + // ARRANGE + const authorization = buildAuthorization({ + userName: "mockUserName", + webApiKey: "mockWebApiKey" + }); + + const mockResponse: GetUserCompletionProgressResponse = { + Count: 1, + Total: 1, + Results: [ + { + GameID: 680, + Title: "Game & Watch Gallery", + ImageIcon: "/Images/042952.png", + ConsoleID: 4, + ConsoleName: "Game Boy", + MaxPossible: 27, + NumAwarded: 8, + NumAwardedHardcore: 8, + MostRecentAwardedDate: "2022-07-26T23:56:15+00:00", + HighestAwardKind: null, + HighestAwardDate: null + } + ] + }; + + server.use( + http.get(`${apiBaseUrl}/API_GetUserCompletionProgress.php`, () => + HttpResponse.json(mockResponse) + ) + ); + + // ACT + const response = await getUserCompletionProgress(authorization, { + userName: "xelnia" + }); + + // ASSERT + expect(response).toEqual({ + count: 1, + total: 1, + results: [ + { + gameId: 680, + title: "Game & Watch Gallery", + imageIcon: "/Images/042952.png", + consoleId: 4, + consoleName: "Game Boy", + maxPossible: 27, + numAwarded: 8, + numAwardedHardcore: 8, + mostRecentAwardedDate: "2022-07-26T23:56:15+00:00", + highestAwardKind: null, + highestAwardDate: null + } + ] + }); + }); +}); diff --git a/src/user/getUserCompletionProgress.ts b/src/user/getUserCompletionProgress.ts new file mode 100644 index 0000000..9c3e1ed --- /dev/null +++ b/src/user/getUserCompletionProgress.ts @@ -0,0 +1,83 @@ +import { + apiBaseUrl, + buildRequestUrl, + call, + serializeProperties +} from "../utils/internal"; +import type { AuthObject } from "../utils/public"; +import type { + GetUserCompletionProgressResponse, + UserCompletionProgress +} from "./models"; + +/** + * A call to this function will retrieve a given user's completion + * progress, targeted by their username. + * + * @param authorization An object containing your userName and webApiKey. + * This can be constructed with `buildAuthorization()`. + * + * @param payload.userName The user for which to retrieve the progress for. + * + * @param payload.offset Defaults to 0. The number of entries to skip. + * + * @param payload.count Defaults to 100, has a max of 500. + * + * @example + * ``` + * const userCompletionProgress = await getUserCompletionProgress( + * authorization, + * { userName: "xelnia" } + * ); + * ``` + * + * @returns + * ``` + * { + * "count": 100, + * "total": 752, + * "results": [ + * { + gameId: 11406, + title: 'Mortal Kombat 4', + imageIcon: '/Images/042133.png', + consoleId: 12, + consoleName: 'PlayStation', + maxPossible: 131, + numAwarded: 131, + numAwardedHardcore: 131, + mostRecentAwardedDate: '2022-08-07T18:24:44+00:00', + highestAwardKind: 'mastered', + highestAwardDate: '2022-08-07T18:24:44+00:00' + * } + * ] + * } + * ``` + */ +export const getUserCompletionProgress = async ( + authorization: AuthObject, + payload: { userName: string; offset?: number; count?: number } +): Promise => { + const { userName, offset, count } = payload; + + const params: Record = { + u: userName + }; + if (offset) { + params["o"] = offset; + } + if (count) { + params["c"] = count; + } + + const url = buildRequestUrl( + apiBaseUrl, + "/API_GetUserCompletionProgress.php", + authorization, + params + ); + + const rawResponse = await call({ url }); + + return serializeProperties(rawResponse); +}; diff --git a/src/user/index.ts b/src/user/index.ts index 2d7744b..08c853e 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -4,6 +4,7 @@ export * from "./getGameInfoAndUserProgress"; export * from "./getUserAwards"; export * from "./getUserClaims"; export * from "./getUserCompletedGames"; +export * from "./getUserCompletionProgress"; export * from "./getUserGameRankAndScore"; export * from "./getUserPoints"; export * from "./getUserProgress"; diff --git a/src/user/models/get-user-completion-progress-response.model.ts b/src/user/models/get-user-completion-progress-response.model.ts new file mode 100644 index 0000000..a6387f6 --- /dev/null +++ b/src/user/models/get-user-completion-progress-response.model.ts @@ -0,0 +1,25 @@ +interface RawUserCompletionProgressEntity { + GameID: number; + Title: string; + ImageIcon: string; + ConsoleID: number; + ConsoleName: string; + MaxPossible: number; + NumAwarded: number; + NumAwardedHardcore: number; + + MostRecentAwardedDate?: string; + HighestAwardKind?: + | "mastered" + | "completed" + | "beaten-hardcore" + | "beaten-softcore" + | null; + HighestAwardDate?: string | null; +} + +export interface GetUserCompletionProgressResponse { + Count: number; + Total: number; + Results: RawUserCompletionProgressEntity[]; +} diff --git a/src/user/models/index.ts b/src/user/models/index.ts index 848bbed..8c623a3 100644 --- a/src/user/models/index.ts +++ b/src/user/models/index.ts @@ -5,6 +5,7 @@ export * from "./game-info-and-user-progress.model"; export * from "./get-game-info-and-user-progress-response.model"; export * from "./get-user-awards-response.model"; export * from "./get-user-completed-games-response.model"; +export * from "./get-user-completion-progress-response.model"; export * from "./get-user-game-rank-and-score-response.model"; export * from "./get-user-points-response.model"; export * from "./get-user-progress-response.model"; @@ -15,6 +16,8 @@ export * from "./user-awards.model"; export * from "./user-claims.model"; export * from "./user-claims-response.model"; export * from "./user-completed-games.model"; +export * from "./user-completion-progress.model"; +export * from "./user-completion-progress-entity.model"; export * from "./user-game-rank-and-score.model"; export * from "./user-points.model"; export * from "./user-progress.model"; diff --git a/src/user/models/user-completion-progress-entity.model.ts b/src/user/models/user-completion-progress-entity.model.ts new file mode 100644 index 0000000..8896e9e --- /dev/null +++ b/src/user/models/user-completion-progress-entity.model.ts @@ -0,0 +1,19 @@ +export interface UserCompletionProgressEntity { + gameId: number; + title: string; + imageIcon: string; + consoleId: number; + consoleName: string; + maxPossible: number; + numAwarded: number; + numAwardedHardcore: number; + + mostRecentAwardedDate?: string; + highestAwardKind?: + | "mastered" + | "completed" + | "beaten-hardcore" + | "beaten-softcore" + | null; + highestAwardDate?: string; +} diff --git a/src/user/models/user-completion-progress.model.ts b/src/user/models/user-completion-progress.model.ts new file mode 100644 index 0000000..83b6c8d --- /dev/null +++ b/src/user/models/user-completion-progress.model.ts @@ -0,0 +1,7 @@ +import type { UserCompletionProgressEntity } from "./user-completion-progress-entity.model"; + +export interface UserCompletionProgress { + count: number; + total: number; + results: UserCompletionProgressEntity[]; +} From c3918fc564e103d11a8045d0ef310f1c11a6e973 Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Sun, 14 Jan 2024 12:38:36 -0500 Subject: [PATCH 4/6] feat(getUserProfile): add function (#66) --- README.md | 15 +--- src/user/getUserProfile.test.ts | 79 +++++++++++++++++++ src/user/getUserProfile.ts | 55 +++++++++++++ src/user/index.ts | 1 + .../models/get-user-profile-response.model.ts | 17 ++++ src/user/models/index.ts | 2 + src/user/models/user-profile.model.ts | 17 ++++ 7 files changed, 173 insertions(+), 13 deletions(-) create mode 100644 src/user/getUserProfile.test.ts create mode 100644 src/user/getUserProfile.ts create mode 100644 src/user/models/get-user-profile-response.model.ts create mode 100644 src/user/models/user-profile.model.ts diff --git a/README.md b/README.md index c0cc20a..a78d48b 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,8 @@ Click the function names to open their complete docs on the docs site. - [`getUserProgress()`](https://api-docs.retroachievements.org/v1/users/get-user-progress.html) - Get a user's progress on a list of specified games. - [`getUserRecentAchievements()`](https://api-docs.retroachievements.org/v1/users/get-user-recent-achievements.html) - Get a list of achievements recently earned by the user. - [`getUserRecentlyPlayedGames()`](https://api-docs.retroachievements.org/v1/users/get-user-recently-played-games.html) - Get a list of games a user has recently played. -- [`getUserSummary()`](https://api-docs.retroachievements.org/v1/users/get-user-summary.html) - Get a user's profile metadata. +- [`getUserSummary()`](https://api-docs.retroachievements.org/v1/users/get-user-summary.html) - Get a user's exhaustive profile metadata. +- [`getUserProfile()`](https://api-docs.retroachievements.org/v1/users/users/profile.html) - Get a thin subset of a user's profile metadata. ### Games @@ -133,15 +134,3 @@ Let us know about yours by [opening an issue](https://github.com/RetroAchievemen ## How to Contribute Check out [CONTRIBUTING.md](https://github.com/RetroAchievements/api-js/blob/main/CONTRIBUTING.md) for how to get started. - -## Contributors - - - - - - - - - -

Wes Copeland

💻 💡 📖
diff --git a/src/user/getUserProfile.test.ts b/src/user/getUserProfile.test.ts new file mode 100644 index 0000000..142b070 --- /dev/null +++ b/src/user/getUserProfile.test.ts @@ -0,0 +1,79 @@ +import { http, HttpResponse } from "msw"; +import { setupServer } from "msw/node"; + +import { apiBaseUrl } from "../utils/internal"; +import { buildAuthorization } from "../utils/public"; +import { getUserProfile } from "./getUserProfile"; +import type { GetUserProfileResponse } from "./models"; + +const server = setupServer(); + +describe("Function: getUserProfile", () => { + // MSW Setup + beforeAll(() => server.listen()); + afterEach(() => server.resetHandlers()); + afterAll(() => server.close()); + + it("is defined #sanity", () => { + // ASSERT + expect(getUserProfile).toBeDefined(); + }); + + it("given a username, retrieves minimal user profile information about the user", async () => { + // ARRANGE + const authorization = buildAuthorization({ + userName: "mockUserName", + webApiKey: "mockWebApiKey" + }); + + const mockResponse: GetUserProfileResponse = { + User: "MaxMilyin", + UserPic: "/UserPic/MaxMilyin.png", + MemberSince: "2016-01-02 00:43:04", + RichPresenceMsg: + "Playing ~Hack~ 11th Annual Vanilla Level Design Contest, The", + LastGameID: 19_504, + ContribCount: 0, + ContribYield: 0, + TotalPoints: 399_597, + TotalSoftcorePoints: 0, + TotalTruePoints: 1_599_212, + Permissions: 1, + Untracked: 0, + ID: 16_446, + UserWallActive: 1, + Motto: "Join me on Twitch! GameSquadSquad for live RA" + }; + + server.use( + http.get(`${apiBaseUrl}/API_GetUserProfile.php`, () => + HttpResponse.json(mockResponse) + ) + ); + + // ACT + const response = await getUserProfile(authorization, { + userName: "WCopeland" + }); + + // ASSERT + expect(response).toEqual({ + user: "MaxMilyin", + userPic: "/UserPic/MaxMilyin.png", + memberSince: "2016-01-02 00:43:04", + richPresenceMsg: + "Playing ~Hack~ 11th Annual Vanilla Level Design Contest, The", + lastGameId: 19_504, + contribCount: 0, + contribYield: 0, + totalPoints: 399_597, + totalSoftcorePoints: 0, + totalTruePoints: 1_599_212, + permissions: 1, + untracked: false, + id: 16_446, + userWallActive: true, + motto: "Join me on Twitch! GameSquadSquad for live RA" + }); + }); +}); diff --git a/src/user/getUserProfile.ts b/src/user/getUserProfile.ts new file mode 100644 index 0000000..83a7470 --- /dev/null +++ b/src/user/getUserProfile.ts @@ -0,0 +1,55 @@ +import { + apiBaseUrl, + buildRequestUrl, + call, + serializeProperties +} from "../utils/internal"; +import type { AuthObject } from "../utils/public"; +import type { GetUserProfileResponse, UserProfile } from "./models"; + +/** + * A call to this function will retrieve summary information about + * a given user, targeted by username. + * + * @param authorization An object containing your userName and webApiKey. + * This can be constructed with `buildAuthorization()`. + * + * @param payload.userName The user for which to retrieve the summary for. + * + * @example + * ``` + * const userSummary = await getUserProfile( + * authorization, + * { userName: "xelnia" } + * ); + * ``` + * + * @returns An object containing profile summary metadata about a target user. + */ +export const getUserProfile = async ( + authorization: AuthObject, + payload: { + userName: string; + } +): Promise => { + const { userName } = payload; + + const url = buildRequestUrl( + apiBaseUrl, + "/API_GetUserProfile.php", + authorization, + { u: userName } + ); + + const rawResponse = await call({ url }); + + return serializeProperties(rawResponse, { + shouldCastToNumbers: [ + "TotalPoints", + "TotalSoftcorePoints", + "TotalTruePoints", + "Permissions" + ], + shouldMapToBooleans: ["Untracked", "UserWallActive"] + }); +}; diff --git a/src/user/index.ts b/src/user/index.ts index 08c853e..e6c1e38 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -7,6 +7,7 @@ export * from "./getUserCompletedGames"; export * from "./getUserCompletionProgress"; export * from "./getUserGameRankAndScore"; export * from "./getUserPoints"; +export * from "./getUserProfile"; export * from "./getUserProgress"; export * from "./getUserRecentAchievements"; export * from "./getUserRecentlyPlayedGames"; diff --git a/src/user/models/get-user-profile-response.model.ts b/src/user/models/get-user-profile-response.model.ts new file mode 100644 index 0000000..e85c787 --- /dev/null +++ b/src/user/models/get-user-profile-response.model.ts @@ -0,0 +1,17 @@ +export interface GetUserProfileResponse { + User: string; + UserPic: string; + MemberSince: string; + RichPresenceMsg: string; + LastGameID: number; + ContribCount: number; + ContribYield: number; + TotalPoints: number; + TotalSoftcorePoints: number; + TotalTruePoints: number; + Permissions: number; + Untracked: number; + ID: number; + UserWallActive: number; + Motto: string; +} diff --git a/src/user/models/index.ts b/src/user/models/index.ts index 8c623a3..b0f5ab6 100644 --- a/src/user/models/index.ts +++ b/src/user/models/index.ts @@ -8,6 +8,7 @@ export * from "./get-user-completed-games-response.model"; export * from "./get-user-completion-progress-response.model"; export * from "./get-user-game-rank-and-score-response.model"; export * from "./get-user-points-response.model"; +export * from "./get-user-profile-response.model"; export * from "./get-user-progress-response.model"; export * from "./get-user-recent-achievements-response.model"; export * from "./get-user-recently-played-games-response.model"; @@ -20,6 +21,7 @@ export * from "./user-completion-progress.model"; export * from "./user-completion-progress-entity.model"; export * from "./user-game-rank-and-score.model"; export * from "./user-points.model"; +export * from "./user-profile.model"; export * from "./user-progress.model"; export * from "./user-recent-achievement.model"; export * from "./user-recently-played-games.model"; diff --git a/src/user/models/user-profile.model.ts b/src/user/models/user-profile.model.ts new file mode 100644 index 0000000..b447260 --- /dev/null +++ b/src/user/models/user-profile.model.ts @@ -0,0 +1,17 @@ +export interface UserProfile { + user: string; + userPic: string; + memberSince: string; + richPresenceMsg: string; + lastGameId: number; + contribCount: number; + contribYield: number; + totalPoints: number; + totalSoftcorePoints: number; + totalTruePoints: number; + permissions: number; + untracked: boolean; + id: number; + userWallActive: boolean; + motto: string; +} From 4030d65e97815f1472fcbb5aa8a7313a03259b5a Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Sun, 14 Jan 2024 12:48:29 -0500 Subject: [PATCH 5/6] chore: bump to 1.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 04cf798..be171fb 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "raweb", "retro gaming" ], - "version": "1.3.0", + "version": "1.4.0", "typings": "dist/index.d.ts", "exports": { ".": { From 711818b6162113cc6efff24d9e730ce3be6bb7ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Feb 2024 09:09:22 -0500 Subject: [PATCH 6/6] build(deps-dev): bump vite from 4.5.0 to 4.5.2 (#68) --- yarn.lock | 432 +----------------------------------------------------- 1 file changed, 6 insertions(+), 426 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1946acf..15b2c54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,137 +7,6 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@algolia/autocomplete-core@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" - integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== - dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-plugin-algolia-insights@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587" - integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-preset-algolia@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da" - integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-shared@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" - integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== - -"@algolia/cache-browser-local-storage@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz#357318242fc542ffce41d6eb5b4a9b402921b0bb" - integrity sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ== - dependencies: - "@algolia/cache-common" "4.20.0" - -"@algolia/cache-common@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.20.0.tgz#ec52230509fce891091ffd0d890618bcdc2fa20d" - integrity sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ== - -"@algolia/cache-in-memory@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz#5f18d057bd6b3b075022df085c4f83bcca4e3e67" - integrity sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg== - dependencies: - "@algolia/cache-common" "4.20.0" - -"@algolia/client-account@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.20.0.tgz#23ce0b4cffd63100fb7c1aa1c67a4494de5bd645" - integrity sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q== - dependencies: - "@algolia/client-common" "4.20.0" - "@algolia/client-search" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/client-analytics@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.20.0.tgz#0aa6bef35d3a41ac3991b3f46fcd0bf00d276fa9" - integrity sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug== - dependencies: - "@algolia/client-common" "4.20.0" - "@algolia/client-search" "4.20.0" - "@algolia/requester-common" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/client-common@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.20.0.tgz#ca60f04466515548651c4371a742fbb8971790ef" - integrity sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ== - dependencies: - "@algolia/requester-common" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/client-personalization@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.20.0.tgz#ca81308e8ad0db3b27458b78355f124f29657181" - integrity sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ== - dependencies: - "@algolia/client-common" "4.20.0" - "@algolia/requester-common" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/client-search@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.20.0.tgz#3bcce817ca6caedc835e0eaf6f580e02ee7c3e15" - integrity sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg== - dependencies: - "@algolia/client-common" "4.20.0" - "@algolia/requester-common" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/logger-common@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.20.0.tgz#f148ddf67e5d733a06213bebf7117cb8a651ab36" - integrity sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ== - -"@algolia/logger-console@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.20.0.tgz#ac443d27c4e94357f3063e675039cef0aa2de0a7" - integrity sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA== - dependencies: - "@algolia/logger-common" "4.20.0" - -"@algolia/requester-browser-xhr@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz#db16d0bdef018b93b51681d3f1e134aca4f64814" - integrity sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw== - dependencies: - "@algolia/requester-common" "4.20.0" - -"@algolia/requester-common@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.20.0.tgz#65694b2263a8712b4360fef18680528ffd435b5c" - integrity sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng== - -"@algolia/requester-node-http@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz#b52b182b52b0b16dec4070832267d484a6b1d5bb" - integrity sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng== - dependencies: - "@algolia/requester-common" "4.20.0" - -"@algolia/transporter@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.20.0.tgz#7e5b24333d7cc9a926b2f6a249f87c2889b944a9" - integrity sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg== - dependencies: - "@algolia/cache-common" "4.20.0" - "@algolia/logger-common" "4.20.0" - "@algolia/requester-common" "4.20.0" - "@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -1412,29 +1281,6 @@ resolved "https://registry.yarnpkg.com/@digitak/grubber/-/grubber-3.1.4.tgz#f29280bc8d205995b6bf4d73344f08b01f21fc65" integrity sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA== -"@docsearch/css@3.5.2", "@docsearch/css@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.5.2.tgz#610f47b48814ca94041df969d9fcc47b91fc5aac" - integrity sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA== - -"@docsearch/js@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docsearch/js/-/js-3.5.2.tgz#a11cb2e7e62890e9e940283fed6972ecf632629d" - integrity sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg== - dependencies: - "@docsearch/react" "3.5.2" - preact "^10.0.0" - -"@docsearch/react@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.5.2.tgz#2e6bbee00eb67333b64906352734da6aef1232b9" - integrity sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng== - dependencies: - "@algolia/autocomplete-core" "1.9.3" - "@algolia/autocomplete-preset-algolia" "1.9.3" - "@docsearch/css" "3.5.2" - algoliasearch "^4.19.1" - "@esbuild/android-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" @@ -2007,24 +1853,6 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/linkify-it@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.4.tgz#def6a9bb0ce78140860602f16ace37a9997f086a" - integrity sha512-hPpIeeHb/2UuCw06kSNAOVWgehBLXEo0/fUs0mw3W2qhqX89PI2yvok83MnuctYGCPrabGIoi0fFso4DQ+sNUQ== - -"@types/markdown-it@^13.0.4": - version "13.0.5" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-13.0.5.tgz#b5bba2af9ee8473409fe1571ec036417cb1e98fa" - integrity sha512-QhJP7hkq3FCrFNx0szMNCT/79CXfcEgUIA3jc5GBfeXqoKsk3R8JZm2wRXJ2DiyjbPE4VMFOSDemLFcUTZmHEQ== - dependencies: - "@types/linkify-it" "*" - "@types/mdurl" "*" - -"@types/mdurl@*": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.4.tgz#574bfbec51eb41ab5f444116c8555bc4347feba5" - integrity sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A== - "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -2081,11 +1909,6 @@ resolved "https://registry.yarnpkg.com/@types/statuses/-/statuses-2.0.3.tgz#9286ef63c99ed9fd739db7f7db5ab9bd6160ab33" integrity sha512-NwCYScf83RIwCyi5/9cXocrJB//xrqMh5PMw3mYTSFGaI3DuVjBLfO/PCk7QVAC3Da8b9NjxNmTO9Aj9T3rl/Q== -"@types/web-bluetooth@^0.0.18": - version "0.0.18" - resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz#74bd1c8fd3a2058cb6fc76b188fcded50a83d866" - integrity sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw== - "@typescript-eslint/eslint-plugin@^6.9.1": version "6.9.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz#d8ce497dc0ed42066e195c8ecc40d45c7b1254f4" @@ -2176,11 +1999,6 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@vitejs/plugin-vue@4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.3.1.tgz#635cf512dd1d5c78adf9e24615696e4918cd9d88" - integrity sha512-tUBEtWcF7wFtII7ayNiLNDTCE1X1afySEo+XNVMNkFXaThENyCowIEX095QqbJZGTgoOcSVDJGlnde2NG4jtbQ== - "@vitest/coverage-v8@^0.34.6": version "0.34.6" resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-0.34.6.tgz#931d9223fa738474e00c08f52b84e0f39cedb6d1" @@ -2241,132 +2059,6 @@ loupe "^2.3.6" pretty-format "^29.5.0" -"@vue/compiler-core@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.7.tgz#865a5734c971686d9737d85a0c5a08de045b6162" - integrity sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ== - dependencies: - "@babel/parser" "^7.23.0" - "@vue/shared" "3.3.7" - estree-walker "^2.0.2" - source-map-js "^1.0.2" - -"@vue/compiler-dom@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz#a245aa03f9bfcdb537a239bf02842072de0644c9" - integrity sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw== - dependencies: - "@vue/compiler-core" "3.3.7" - "@vue/shared" "3.3.7" - -"@vue/compiler-sfc@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz#219d04b3013c7b15fbc536e2279e07810b731cc2" - integrity sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw== - dependencies: - "@babel/parser" "^7.23.0" - "@vue/compiler-core" "3.3.7" - "@vue/compiler-dom" "3.3.7" - "@vue/compiler-ssr" "3.3.7" - "@vue/reactivity-transform" "3.3.7" - "@vue/shared" "3.3.7" - estree-walker "^2.0.2" - magic-string "^0.30.5" - postcss "^8.4.31" - source-map-js "^1.0.2" - -"@vue/compiler-ssr@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz#eff4a70f7ceb800d60e68d208b96a030c0f1b636" - integrity sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg== - dependencies: - "@vue/compiler-dom" "3.3.7" - "@vue/shared" "3.3.7" - -"@vue/devtools-api@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697" - integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA== - -"@vue/reactivity-transform@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz#eb9f5110af5085079b851d162205394bc790d539" - integrity sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA== - dependencies: - "@babel/parser" "^7.23.0" - "@vue/compiler-core" "3.3.7" - "@vue/shared" "3.3.7" - estree-walker "^2.0.2" - magic-string "^0.30.5" - -"@vue/reactivity@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.7.tgz#48b6671a45ba33039da2c0eb25ae702f924486a9" - integrity sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg== - dependencies: - "@vue/shared" "3.3.7" - -"@vue/runtime-core@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.7.tgz#c1eece1c98f936dc69dd0667d11b464579b128fd" - integrity sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ== - dependencies: - "@vue/reactivity" "3.3.7" - "@vue/shared" "3.3.7" - -"@vue/runtime-dom@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz#e7cf88cc01591fdf6e3164825554fdadc3137ffc" - integrity sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw== - dependencies: - "@vue/runtime-core" "3.3.7" - "@vue/shared" "3.3.7" - csstype "^3.1.2" - -"@vue/server-renderer@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.7.tgz#0cc3dc6ad39a54693e6e8f853caa3c7bb43b0364" - integrity sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw== - dependencies: - "@vue/compiler-ssr" "3.3.7" - "@vue/shared" "3.3.7" - -"@vue/shared@3.3.7": - version "3.3.7" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.7.tgz#0091852fe5cc4237c8440fe32f3ab6bc920ae6d9" - integrity sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg== - -"@vueuse/core@10.5.0", "@vueuse/core@^10.5.0": - version "10.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.5.0.tgz#04d1e6d26592bb997bb755a4830ea7583c3e8612" - integrity sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A== - dependencies: - "@types/web-bluetooth" "^0.0.18" - "@vueuse/metadata" "10.5.0" - "@vueuse/shared" "10.5.0" - vue-demi ">=0.14.6" - -"@vueuse/integrations@^10.5.0": - version "10.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-10.5.0.tgz#38f00bd5a1cd0160645f0c75efd5d9579061e3d6" - integrity sha512-fm5sXLCK0Ww3rRnzqnCQRmfjDURaI4xMsx+T+cec0ngQqHx/JgUtm8G0vRjwtonIeTBsH1Q8L3SucE+7K7upJQ== - dependencies: - "@vueuse/core" "10.5.0" - "@vueuse/shared" "10.5.0" - vue-demi ">=0.14.6" - -"@vueuse/metadata@10.5.0": - version "10.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.5.0.tgz#7501a88cf5cbf7a515a03f0b8bbe3cecf30cad11" - integrity sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw== - -"@vueuse/shared@10.5.0": - version "10.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.5.0.tgz#b3ac8c190a5dae41db5e1b60fe304a9b4247393c" - integrity sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg== - dependencies: - vue-demi ">=0.14.6" - JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -2410,26 +2102,6 @@ ajv@^8.11.0: require-from-string "^2.0.2" uri-js "^4.2.2" -algoliasearch@^4.19.1: - version "4.20.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.20.0.tgz#700c2cb66e14f8a288460036c7b2a554d0d93cf4" - integrity sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g== - dependencies: - "@algolia/cache-browser-local-storage" "4.20.0" - "@algolia/cache-common" "4.20.0" - "@algolia/cache-in-memory" "4.20.0" - "@algolia/client-account" "4.20.0" - "@algolia/client-analytics" "4.20.0" - "@algolia/client-common" "4.20.0" - "@algolia/client-personalization" "4.20.0" - "@algolia/client-search" "4.20.0" - "@algolia/logger-common" "4.20.0" - "@algolia/logger-console" "4.20.0" - "@algolia/requester-browser-xhr" "4.20.0" - "@algolia/requester-common" "4.20.0" - "@algolia/requester-node-http" "4.20.0" - "@algolia/transporter" "4.20.0" - ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -2447,11 +2119,6 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-sequence-parser@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#e0aa1cdcbc8f8bb0b5bca625aac41f5f056973cf" - integrity sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg== - ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -3209,11 +2876,6 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" -csstype@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - cz-conventional-changelog@3.3.0, cz-conventional-changelog@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz#9246947c90404149b3fe2cf7ee91acad3b7d22d2" @@ -3788,7 +3450,7 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== -estree-walker@^2.0.1, estree-walker@^2.0.2: +estree-walker@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== @@ -3992,13 +3654,6 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== -focus-trap@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.5.4.tgz#6c4e342fe1dae6add9c2aa332a6e7a0bbd495ba2" - integrity sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w== - dependencies: - tabbable "^6.2.0" - for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -5056,7 +4711,7 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -magic-string@^0.30.1, magic-string@^0.30.5: +magic-string@^0.30.1: version "0.30.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== @@ -5092,11 +4747,6 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -mark.js@8.11.1: - version "8.11.1" - resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" - integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== - maxmin@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" @@ -5243,11 +4893,6 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minisearch@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.2.0.tgz#310b50508551f22e10815f5baedeeeded03a6b5d" - integrity sha512-BECkorDF1TY2rGKt9XHdSeP9TP29yUbrAaCh/C03wpyf1vx3uYcP/+8XlMcpTkgoU0rBVnHMAOaP83Rc9Tm+TQ== - mlly@^1.2.0, mlly@^1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" @@ -5956,7 +5601,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.2.1, postcss@^8.4.27, postcss@^8.4.31: +postcss@^8.2.1, postcss@^8.4.27: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -5965,11 +5610,6 @@ postcss@^8.2.1, postcss@^8.4.27, postcss@^8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -preact@^10.0.0: - version "10.18.2" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.18.2.tgz#e3aeccc292aebbc2e0b76ed76570aa61dd5f75e4" - integrity sha512-X/K43vocUHDg0XhWVmTTMbec4LT/iBMh+csCEqJk+pJqegaXsvjdqN80ZZ3L+93azWCnWCZ+WGwYb8SplxeNjA== - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -6440,16 +6080,6 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shiki@^0.14.5: - version "0.14.5" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.5.tgz#375dd214e57eccb04f0daf35a32aa615861deb93" - integrity sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw== - dependencies: - ansi-sequence-parser "^1.1.0" - jsonc-parser "^3.2.0" - vscode-oniguruma "^1.7.0" - vscode-textmate "^8.0.0" - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -6733,11 +6363,6 @@ svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -tabbable@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" - integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== - tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -7081,9 +6706,9 @@ vite-node@0.34.6: vite "^3.0.0 || ^4.0.0 || ^5.0.0-0" "vite@^3.0.0 || ^4.0.0 || ^5.0.0-0", "vite@^3.1.0 || ^4.0.0 || ^5.0.0-0", vite@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26" - integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== + version "4.5.2" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.2.tgz#d6ea8610e099851dad8c7371599969e0f8b97e82" + integrity sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w== dependencies: esbuild "^0.18.10" postcss "^8.4.27" @@ -7091,25 +6716,6 @@ vite-node@0.34.6: optionalDependencies: fsevents "~2.3.2" -vitepress@^1.0.0-alpha.43: - version "1.0.0-rc.24" - resolved "https://registry.yarnpkg.com/vitepress/-/vitepress-1.0.0-rc.24.tgz#517b44d10e0cd3773f5e2f9799c2bde8e60f0505" - integrity sha512-RpnL8cnOGwiRlBbrYQUm9sYkJbtyOt/wYXk2diTcokY4yvks/5lq9LuSt+MURWB6ZqwpSNHvTmxgaSfLoG0/OA== - dependencies: - "@docsearch/css" "^3.5.2" - "@docsearch/js" "^3.5.2" - "@types/markdown-it" "^13.0.4" - "@vitejs/plugin-vue" "4.3.1" - "@vue/devtools-api" "^6.5.1" - "@vueuse/core" "^10.5.0" - "@vueuse/integrations" "^10.5.0" - focus-trap "^7.5.4" - mark.js "8.11.1" - minisearch "^6.1.0" - shiki "^0.14.5" - vite "^4.5.0" - vue "^3.3.6" - vitest@^0.34.6: version "0.34.6" resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.34.6.tgz#44880feeeef493c04b7f795ed268f24a543250d7" @@ -7140,32 +6746,6 @@ vitest@^0.34.6: vite-node "0.34.6" why-is-node-running "^2.2.2" -vscode-oniguruma@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" - integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== - -vscode-textmate@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" - integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== - -vue-demi@>=0.14.6: - version "0.14.6" - resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92" - integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w== - -vue@^3.2.45, vue@^3.3.6: - version "3.3.7" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.7.tgz#972a218682443a3819d121261b2bff914417f4f0" - integrity sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA== - dependencies: - "@vue/compiler-dom" "3.3.7" - "@vue/compiler-sfc" "3.3.7" - "@vue/runtime-dom" "3.3.7" - "@vue/server-renderer" "3.3.7" - "@vue/shared" "3.3.7" - wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"