diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml index 854c85f..fa4ed74 100644 --- a/.github/workflows/continuous-integration-workflow.yml +++ b/.github/workflows/continuous-integration-workflow.yml @@ -8,8 +8,8 @@ jobs: name: Test and Build strategy: matrix: - os: [ubuntu-latest, macOS-latest, windows-latest] - node-version: [20.x] + os: [ubuntu-latest, macOS-latest] + node-version: [22.x] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v1 diff --git a/docs/package.json b/docs/package.json index 7caf6b4..f01c6fe 100644 --- a/docs/package.json +++ b/docs/package.json @@ -15,6 +15,7 @@ }, "license": "MIT", "devDependencies": { + "sass-embedded": "^1.83.0", "vuepress": "^2.0.0-rc.14" }, "dependencies": { diff --git a/packages/helloao-cli/actions.ts b/packages/helloao-cli/actions.ts index f47df95..2dc5671 100644 --- a/packages/helloao-cli/actions.ts +++ b/packages/helloao-cli/actions.ts @@ -564,6 +564,75 @@ export async function importApi( } } +/** + * A single chapter's worth of audio timing data to import. + */ +export interface AudioTimingRecord { + /** + * The ID of the translation. + */ + translationId: string; + + /** + * The ID of the book. + */ + bookId: string; + + /** + * The number of the chapter. + */ + chapterNumber: number; + + /** + * The reader that the timings are for. + */ + reader: string; + + /** + * The times (in seconds) that each verse starts, in verse order. + */ + verses: number[]; +} + +/** + * Imports chapter audio timing data from the given JSON file into the database in the + * current working directory. + * + * The file should contain an array of records: `{ translationId, bookId, chapterNumber, reader, verses }` + * where `verses` is an array of numbers (seconds) - one per verse in the chapter, in order. + * @param file The path to the JSON file to import. + * @param options The options. + */ +export async function importAudioTimings( + file: string, + options: ImportTranslationOptions +): Promise { + const logger = log.getLogger(); + const records: AudioTimingRecord[] = JSON.parse( + await readFile(file, 'utf-8') + ); + + const db = await database.getDb(options.db); + try { + const importTimings = db.transaction(() => { + for (let record of records) { + database.upsertChapterAudioTiming( + db, + record.translationId, + record.bookId, + record.chapterNumber, + record.reader, + record.verses + ); + } + }); + importTimings(); + logger.log(`Imported ${records.length} audio timing records.`); + } finally { + db.close(); + } +} + export interface FetchTranslationsOptions { /** * Fetch all translations. If omitted, only undownloaded translations will be fetched. diff --git a/packages/helloao-cli/cli.ts b/packages/helloao-cli/cli.ts index 6067dd5..996e0fd 100644 --- a/packages/helloao-cli/cli.ts +++ b/packages/helloao-cli/cli.ts @@ -17,6 +17,7 @@ import { generateTranslationFiles, generateTranslationsFiles, importApi, + importAudioTimings, importCommentaries, importCommentary, importTranslation, @@ -413,6 +414,18 @@ async function start() { }); }); + program + .command('import-audio-timings ') + .description( + 'Imports chapter audio timing data from the given JSON file into the database.\nThe file should contain an array of records: { translationId, bookId, chapterNumber, reader, verses } where verses is an array of numbers (seconds) - one per verse in the chapter, in order.' + ) + .action(async (file: string, options: any) => { + await importAudioTimings(file, { + ...program.opts(), + ...options, + }); + }); + program .command('upload-test-translation ') .description( diff --git a/packages/helloao-cli/db.ts b/packages/helloao-cli/db.ts index 21a0ec4..869a54b 100644 --- a/packages/helloao-cli/db.ts +++ b/packages/helloao-cli/db.ts @@ -489,6 +489,22 @@ export function insertTranslationContent( UPDATE SET url=excluded.url;`); + const chapterAudioTimingUpsert = db.prepare(`INSERT INTO ChapterAudioTiming( + translationId, + bookId, + number, + reader, + timingsJson + ) VALUES ( + @translationId, + @bookId, + @number, + @reader, + @timingsJson + ) ON CONFLICT(translationId,bookId,number,reader) DO + UPDATE SET + timingsJson=excluded.timingsJson;`); + const insertChaptersAndVerses = db.transaction(() => { for (let chapter of chapters) { let verses: { @@ -594,12 +610,67 @@ export function insertTranslationContent( }); } } + + for (let reader in chapter.thisChapterAudioTimings) { + const verses = chapter.thisChapterAudioTimings[reader]; + if (verses) { + chapterAudioTimingUpsert.run({ + translationId: translation.id, + bookId: book.id, + number: chapter.chapter.number, + reader: reader, + timingsJson: JSON.stringify(verses), + }); + } + } } }); insertChaptersAndVerses(); } +/** + * Inserts or updates the audio timing (per-verse start times, in seconds) for a chapter and reader. + * @param db The database to insert the timing into. + * @param translationId The ID of the translation. + * @param bookId The ID of the book. + * @param chapterNumber The number of the chapter. + * @param reader The reader that the timing is for. + * @param verses The times (in seconds) that each verse starts, in verse order. + */ +export function upsertChapterAudioTiming( + db: Database, + translationId: string, + bookId: string, + chapterNumber: number, + reader: string, + verses: number[] +) { + db.prepare( + `INSERT INTO ChapterAudioTiming( + translationId, + bookId, + number, + reader, + timingsJson + ) VALUES ( + @translationId, + @bookId, + @number, + @reader, + @timingsJson + ) ON CONFLICT(translationId,bookId,number,reader) DO + UPDATE SET + timingsJson=excluded.timingsJson;` + ).run({ + translationId, + bookId, + number: chapterNumber, + reader, + timingsJson: JSON.stringify(verses), + }); +} + /** * Updates the hashes for the translations in the database. * @param db The database to update the hashes in. @@ -1766,6 +1837,14 @@ export async function* loadTranslationDatasets( orderBy: [{ number: 'asc' }, { reader: 'asc' }], }); + const audioTimings = await db.chapterAudioTiming.findMany({ + where: { + translationId: translation.id, + bookId: book.id, + }, + orderBy: [{ number: 'asc' }, { reader: 'asc' }], + }); + const bookChapters: TranslationBookChapter[] = chapters.map( (chapter) => { return { @@ -1778,6 +1857,17 @@ export async function* loadTranslationDatasets( acc[link.reader] = link.url; return acc; }, {} as any), + thisChapterAudioTimings: audioTimings + .filter( + (timing) => + timing.number === chapter.number + ) + .reduce((acc, timing) => { + acc[timing.reader] = JSON.parse( + timing.timingsJson + ); + return acc; + }, {} as any), }; } ); diff --git a/packages/helloao-cli/files.ts b/packages/helloao-cli/files.ts index fa0948f..3a55dcb 100644 --- a/packages/helloao-cli/files.ts +++ b/packages/helloao-cli/files.ts @@ -470,6 +470,11 @@ export async function loadTranslationsFromDirectory( chapter: chapterJson.chapter, thisChapterAudioLinks: chapterJson.thisChapterAudioLinks, + // Audio timings can't be reconstructed from the generated JSON files: + // thisChapterAudioTimings there is a map of reader -> URL, not the + // raw per-verse timing data. Re-importing timings requires the + // `import-audio-timings` CLI command instead. + thisChapterAudioTimings: {}, }); } else { logger.warn(`Unknown chapter format: ${chapterFile}`); diff --git a/packages/helloao-cli/migrations/20260703000000_add_chapter_audio_timing/migration.sql b/packages/helloao-cli/migrations/20260703000000_add_chapter_audio_timing/migration.sql new file mode 100644 index 0000000..aa05bf8 --- /dev/null +++ b/packages/helloao-cli/migrations/20260703000000_add_chapter_audio_timing/migration.sql @@ -0,0 +1,13 @@ +-- CreateTable +CREATE TABLE "ChapterAudioTiming" ( + "number" INTEGER NOT NULL, + "bookId" TEXT NOT NULL, + "translationId" TEXT NOT NULL, + "reader" TEXT NOT NULL, + "timingsJson" TEXT NOT NULL, + + PRIMARY KEY ("translationId", "bookId", "number", "reader"), + CONSTRAINT "ChapterAudioTiming_translationId_bookId_fkey" FOREIGN KEY ("translationId", "bookId") REFERENCES "Book" ("translationId", "id") ON DELETE RESTRICT ON UPDATE CASCADE, + CONSTRAINT "ChapterAudioTiming_translationId_fkey" FOREIGN KEY ("translationId") REFERENCES "Translation" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, + CONSTRAINT "ChapterAudioTiming_translationId_bookId_number_fkey" FOREIGN KEY ("translationId", "bookId", "number") REFERENCES "Chapter" ("translationId", "bookId", "number") ON DELETE RESTRICT ON UPDATE CASCADE +); diff --git a/packages/helloao-cli/openapi.ts b/packages/helloao-cli/openapi.ts index b9fff6d..9f732f0 100644 --- a/packages/helloao-cli/openapi.ts +++ b/packages/helloao-cli/openapi.ts @@ -6,6 +6,7 @@ import { ApiCommentaryBooksSchema, ApiDatasetBookChapterSchema, ApiDatasetBooksSchema, + ApiTranslationBookChapterAudioTimingsSchema, ApiTranslationBookChapterSchema, ApiTranslationBooksSchema, ApiTranslationCompleteBookSchema, @@ -37,6 +38,11 @@ const chapter = z.number().positive().meta({ 'The chapter number to get the content for. This should be a positive integer.', }); +const reader = z.string().meta({ + description: + 'The ID of the reader to get the audio timings for. For example, "hays" for the Hays reading of the Berean Standard Bible.', +}); + export function createFreeUseBibleApiOpenApiDocument(): any { return createDocument({ openapi: '3.1.0', @@ -155,6 +161,36 @@ export function createFreeUseBibleApiOpenApiDocument(): any { }, }, }, + '/api/{translation}/{book}/{chapter}.{reader}.audioTimings.json': + { + get: { + operationId: 'getTranslationBookChapterAudioTimings', + description: + 'Get the audio timings (per-verse start times, in seconds) for a specific chapter of a specific book for a specific translation and reader.', + requestParams: { + path: z.object({ + translation, + book, + chapter, + reader, + }), + }, + responses: { + '200': { + description: '200 OK', + content: { + 'application/json': { + schema: ApiTranslationBookChapterAudioTimingsSchema, + }, + }, + }, + '404': { + description: + '404 Not Found - The specified translation, book, chapter, or reader was not found.', + }, + }, + }, + }, '/api/{translation}/complete.json': { get: { operationId: 'getTranslationComplete', diff --git a/packages/helloao-cli/schema.prisma b/packages/helloao-cli/schema.prisma index 283707a..6999414 100644 --- a/packages/helloao-cli/schema.prisma +++ b/packages/helloao-cli/schema.prisma @@ -28,6 +28,7 @@ model Translation { verses ChapterVerse[] footnotes ChapterFootnote[] audioUrls ChapterAudioUrl[] + audioTimings ChapterAudioTiming[] } model Commentary { @@ -149,6 +150,7 @@ model Book { verses ChapterVerse[] footnotes ChapterFootnote[] audioUrls ChapterAudioUrl[] + audioTimings ChapterAudioTiming[] @@id([translationId, id]) } @@ -216,6 +218,7 @@ model Chapter { verses ChapterVerse[] footnotes ChapterFootnote[] audioUrls ChapterAudioUrl[] + audioTimings ChapterAudioTiming[] @@id([translationId, bookId, number]) } @@ -256,6 +259,24 @@ model ChapterAudioUrl { @@id([translationId, bookId, number, reader]) } +model ChapterAudioTiming { + number Int + bookId String + book Book @relation(fields: [translationId, bookId], references: [translationId, id]) + + translationId String + translation Translation @relation(fields: [translationId], references: [id]) + + chapter Chapter @relation(fields: [translationId, bookId, number], references: [translationId, bookId, number]) + + reader String + + // JSON array of numbers: the time (in seconds) that each verse starts, in verse order. + timingsJson String + + @@id([translationId, bookId, number, reader]) +} + model ChapterVerse { number Int diff --git a/packages/helloao-tools/generation/api.spec.ts b/packages/helloao-tools/generation/api.spec.ts index 13ded8b..50111aa 100644 --- a/packages/helloao-tools/generation/api.spec.ts +++ b/packages/helloao-tools/generation/api.spec.ts @@ -175,6 +175,7 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: '/api/bsb/EXO/1.json', nextChapterReference: { translationId: 'bsb', @@ -182,9 +183,11 @@ describe('generateApiForDataset', () => { chapter: 1, }, nextChapterAudioLinks: {}, + nextChapterAudioTimings: {}, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 2, chapter: { number: 1, @@ -249,9 +252,11 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: '/api/bsb/GEN/1.json', previousChapterReference: { translationId: 'bsb', @@ -259,6 +264,7 @@ describe('generateApiForDataset', () => { chapter: 1, }, previousChapterAudioLinks: {}, + previousChapterAudioTimings: {}, numberOfVerses: 2, chapter: { number: 1, @@ -432,6 +438,7 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: '/api/bsb/EXO/1.json', nextChapterReference: { translationId: 'bsb', @@ -439,9 +446,11 @@ describe('generateApiForDataset', () => { chapter: 1, }, nextChapterAudioLinks: {}, + nextChapterAudioTimings: {}, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 2, chapter: { number: 1, @@ -506,9 +515,11 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: '/api/bsb/GEN/1.json', previousChapterReference: { translationId: 'bsb', @@ -516,6 +527,7 @@ describe('generateApiForDataset', () => { chapter: 1, }, previousChapterAudioLinks: {}, + previousChapterAudioTimings: {}, numberOfVerses: 2, chapter: { number: 1, @@ -560,6 +572,7 @@ describe('generateApiForDataset', () => { chapters: [ { thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, numberOfVerses: 2, chapter: { number: 1, @@ -605,6 +618,7 @@ describe('generateApiForDataset', () => { chapters: [ { thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, numberOfVerses: 2, chapter: { number: 1, @@ -801,6 +815,7 @@ describe('generateApiForDataset', () => { chapter: 5, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: '/api/bsb/GEN/6.json', nextChapterReference: { translationId: 'bsb', @@ -808,9 +823,11 @@ describe('generateApiForDataset', () => { chapter: 6, }, nextChapterAudioLinks: {}, + nextChapterAudioTimings: {}, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 1, chapter: { number: 5, @@ -862,9 +879,11 @@ describe('generateApiForDataset', () => { chapter: 6, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: '/api/bsb/GEN/5.json', previousChapterReference: { translationId: 'bsb', @@ -872,6 +891,7 @@ describe('generateApiForDataset', () => { chapter: 5, }, previousChapterAudioLinks: {}, + previousChapterAudioTimings: {}, numberOfVerses: 1, chapter: { number: 6, @@ -1039,6 +1059,7 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: '/hello/api/bsb/EXO/1.json', nextChapterReference: { translationId: 'bsb', @@ -1046,9 +1067,11 @@ describe('generateApiForDataset', () => { chapter: 1, }, nextChapterAudioLinks: {}, + nextChapterAudioTimings: {}, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 2, chapter: { number: 1, @@ -1113,9 +1136,11 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: '/hello/api/bsb/GEN/1.json', previousChapterReference: { translationId: 'bsb', @@ -1123,6 +1148,7 @@ describe('generateApiForDataset', () => { chapter: 1, }, previousChapterAudioLinks: {}, + previousChapterAudioTimings: {}, numberOfVerses: 2, chapter: { number: 1, @@ -1266,12 +1292,15 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 1, chapter: { number: 1, @@ -1405,12 +1434,15 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 1, chapter: { number: 1, @@ -1561,12 +1593,15 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 1, chapter: { number: 1, @@ -2689,6 +2724,7 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: '/api/test/2MA/1.json', nextChapterReference: { translationId: 'test', @@ -2696,9 +2732,11 @@ describe('generateApiForDataset', () => { chapter: 1, }, nextChapterAudioLinks: {}, + nextChapterAudioTimings: {}, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 3, chapter: { number: 1, @@ -2761,9 +2799,11 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: '/api/test/BEL/1.json', previousChapterReference: { translationId: 'test', @@ -2771,6 +2811,7 @@ describe('generateApiForDataset', () => { chapter: 1, }, previousChapterAudioLinks: {}, + previousChapterAudioTimings: {}, numberOfVerses: 5, chapter: { number: 1, @@ -2942,12 +2983,15 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 2, chapter: { number: 1, @@ -3093,12 +3137,15 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 2, chapter: { number: 1, @@ -3318,12 +3365,15 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 2, chapter: { number: 1, @@ -3378,12 +3428,15 @@ describe('generateApiForDataset', () => { chapter: 1, }, thisChapterAudioLinks: {}, + thisChapterAudioTimings: {}, nextChapterApiLink: null, nextChapterReference: null, nextChapterAudioLinks: null, + nextChapterAudioTimings: null, previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + previousChapterAudioTimings: null, numberOfVerses: 2, chapter: { number: 1, diff --git a/packages/helloao-tools/generation/api.ts b/packages/helloao-tools/generation/api.ts index daff6e1..f49a670 100644 --- a/packages/helloao-tools/generation/api.ts +++ b/packages/helloao-tools/generation/api.ts @@ -24,6 +24,7 @@ import { TranslationBookChapter, TranslationBookChapterSchema, TranslationBookChapterAudioLinks, + TranslationBookChapterAudioTimings, CommentarySchema, } from './common-types.js'; import { DatasetOutput } from './dataset.js'; @@ -60,6 +61,13 @@ export interface ApiOutput { */ translationBookChapterAudio: ApiTranslationBookChapterAudio[]; + /** + * The list of audio timings. + * This maps to the following endpoints: + * - /api/:translationId/:bookId/:chapterNumber.:reader.audioTimings.json + */ + translationBookChapterAudioTimings: ApiTranslationBookChapterAudioTimings[]; + /** * The list of available commentaries. * This maps to the /api/available-commentaries.json endpoint. @@ -1016,6 +1024,40 @@ export const ApiTranslationBookChapterSchema = 'The links to the audio versions for the next chapter. Relative to the API origin. Null if this is the last chapter in the translation.', }), + /** + * The links to the audio timings for different audio versions for the chapter. + */ + thisChapterAudioTimings: z + .record(z.string(), z.string()) + .meta({ + description: + 'The links to the audio timings for different audio versions for the chapter. Relative to the API origin.', + }), + + /** + * The links to the audio timings for different audio versions for the next chapter. + * Null if this is the last chapter in the translation. + */ + nextChapterAudioTimings: z + .record(z.string(), z.string()) + .nullable() + .meta({ + description: + 'The links to the audio timings for different audio versions for the next chapter. Relative to the API origin. Null if this is the last chapter in the translation.', + }), + + /** + * The links to the audio timings for different audio versions for the previous chapter. + * Null if this is the first chapter in the translation. + */ + previousChapterAudioTimings: z + .record(z.string(), z.string()) + .nullable() + .meta({ + description: + 'The links to the audio timings for different audio versions for the previous chapter. Relative to the API origin. Null if this is the first chapter in the translation.', + }), + /** * The link to the previous chapter. * Null if this is the first chapter in the translation. @@ -1252,6 +1294,109 @@ export type ApiTranslationBookChapterAudio = z.infer< typeof ApiTranslationBookChapterAudioSchema >; +export const ApiTranslationBookChapterAudioTimingsSchema = z.object({ + /** + * The ID of the translation. + */ + translationId: z.string().meta({ + description: 'The ID of the translation.', + }), + + /** + * The ID of the book. + */ + bookId: z.string().meta({ + description: 'The ID of the book.', + }), + + /** + * The number of the chapter. + */ + chapterNumber: z.number().meta({ + description: 'The number of the chapter.', + }), + + /** + * The reader for the chapter. + */ + reader: z.string().meta({ + description: 'The reader for the chapter.', + }), + + /** + * The link to the audio for these timings. + */ + audioLink: z.string().meta({ + description: 'The link to the audio for these timings.', + }), + + /** + * The link to the information for this chapter. + */ + thisChapterLink: z.string().meta({ + description: 'The link to the information for this chapter.', + }), + + /** + * The link to the information for the next chapter. + * Null if this is the last chapter in the translation. + */ + nextChapterLink: z.string().nullable().meta({ + description: + 'The link to the information for the next chapter. Null if this is the last chapter in the translation.', + }), + + /** + * The link to the information for the previous chapter. + * Null if this is the first chapter in the translation. + */ + previousChapterLink: z.string().nullable().meta({ + description: + 'The link to the information for the previous chapter. Null if this is the first chapter in the translation.', + }), + + /** + * The link to this audio timings file. + */ + thisChapterAudioTimingsLink: z.string().meta({ + description: 'The link to this audio timings file.', + }), + + /** + * The link to the timings for the next chapter. + * Null if this is the last chapter in the translation. + */ + nextChapterAudioTimingsLink: z.string().nullable().meta({ + description: + 'The link to the timings for the next chapter. Null if this is the last chapter in the translation.', + }), + + /** + * The link to the timings for the previous chapter. + * Null if this is the first chapter in the translation. + */ + previousChapterAudioTimingsLink: z.string().nullable().meta({ + description: + 'The link to the timings for the previous chapter. Null if this is the first chapter in the translation.', + }), + + /** + * The times in seconds at which each verse starts, in order. + */ + verses: z.array(z.number()).meta({ + description: + 'The times in seconds at which each verse starts, in order. The first number (index 0) is the time in the recording at which the first verse starts.', + }), +}).meta({ + id: 'ApiTranslationBookChapterAudioTimings', + description: + 'Defines an interface that contains the audio timings for a book chapter, for a specific reader.', +}); + +export type ApiTranslationBookChapterAudioTimings = z.infer< + typeof ApiTranslationBookChapterAudioTimingsSchema +>; + export const ApiCommentaryProfileContentSchema = z.object({ /** * The commentary information for the profile. @@ -1346,6 +1491,7 @@ export function generateApiForDataset( translationBooks: [], translationBookChapters: [], translationBookChapterAudio: [], + translationBookChapterAudioTimings: [], translationComplete: [], availableCommentaries: { commentaries: [], @@ -1403,6 +1549,15 @@ export function generateApiForDataset( }; let translationChapters: ApiTranslationBookChapter[] = []; + let pendingAudioTimings: { + reader: string; + verses: number[]; + apiBookChapter: ApiTranslationBookChapter; + }[] = []; + let rawAudioTimingsByChapter = new Map< + ApiTranslationBookChapter, + TranslationBookChapterAudioTimings + >(); for (let { chapters, ...book } of books) { const firstChapterNumber = chapters[0]?.chapter.number; @@ -1440,8 +1595,13 @@ export function generateApiForDataset( totalNumberOfVerses: 0, }; - for (let { chapter, thisChapterAudioLinks } of chapters) { + for (let { + chapter, + thisChapterAudioLinks, + thisChapterAudioTimings, + } of chapters) { const audio: TranslationBookChapterAudioLinks = {}; + const audioTimings: Record = {}; const apiBookChapter: ApiTranslationBookChapter = { translation: apiTranslation, book: apiBook, @@ -1465,6 +1625,9 @@ export function generateApiForDataset( previousChapterApiLink: null, previousChapterReference: null, previousChapterAudioLinks: null, + thisChapterAudioTimings: audioTimings, + nextChapterAudioTimings: null, + previousChapterAudioTimings: null, numberOfVerses: 0, }; @@ -1488,6 +1651,27 @@ export function generateApiForDataset( } } + rawAudioTimingsByChapter.set( + apiBookChapter, + thisChapterAudioTimings + ); + + for (let reader in thisChapterAudioTimings) { + const verses = thisChapterAudioTimings[reader]; + audioTimings[reader] = bookChapterAudioTimingsApiLink( + translation.id, + getBookLink(book), + chapter.number, + reader, + apiPathPrefix + ); + pendingAudioTimings.push({ + reader, + verses, + apiBookChapter, + }); + } + for (let c of chapter.content) { if (c.type === 'verse') { apiBookChapter.numberOfVerses++; @@ -1539,6 +1723,8 @@ export function generateApiForDataset( }; currentChapter.previousChapterAudioLinks = previousChapter.thisChapterAudioLinks; + currentChapter.previousChapterAudioTimings = + previousChapter.thisChapterAudioTimings; } if (i < translationChapters.length - 1) { @@ -1557,9 +1743,33 @@ export function generateApiForDataset( }; currentChapter.nextChapterAudioLinks = nextChapter.thisChapterAudioLinks; + currentChapter.nextChapterAudioTimings = + nextChapter.thisChapterAudioTimings; } } + for (let { reader, verses, apiBookChapter } of pendingAudioTimings) { + api.translationBookChapterAudioTimings.push({ + translationId: translation.id, + bookId: apiBookChapter.book.id, + chapterNumber: apiBookChapter.chapter.number, + reader, + audioLink: + apiBookChapter.thisChapterAudioLinks[reader] ?? '', + thisChapterLink: apiBookChapter.thisChapterLink, + nextChapterLink: apiBookChapter.nextChapterApiLink, + previousChapterLink: apiBookChapter.previousChapterApiLink, + thisChapterAudioTimingsLink: + apiBookChapter.thisChapterAudioTimings[reader], + nextChapterAudioTimingsLink: + apiBookChapter.nextChapterAudioTimings?.[reader] ?? null, + previousChapterAudioTimingsLink: + apiBookChapter.previousChapterAudioTimings?.[reader] ?? + null, + verses, + }); + } + api.availableTranslations.translations.push(apiTranslation); api.translationBooks.push(translationBooks); @@ -1583,6 +1793,8 @@ export function generateApiForDataset( chapters: bookChapters.map((ch) => ({ numberOfVerses: ch.numberOfVerses, thisChapterAudioLinks: ch.thisChapterAudioLinks, + thisChapterAudioTimings: + rawAudioTimingsByChapter.get(ch) ?? {}, chapter: ch.chapter, })), }; @@ -1991,6 +2203,10 @@ export function generateFilesForApi(api: ApiOutput): OutputFile[] { files.push(downloadedFile(audio.link, audio.originalUrl)); } + for (let timings of api.translationBookChapterAudioTimings) { + files.push(jsonFile(timings.thisChapterAudioTimingsLink, timings)); + } + // Generate complete translation download files for (let complete of api.translationComplete) { if (complete.translation.completeTranslationApiLink) { @@ -2187,6 +2403,18 @@ export function bookChapterAudioApiLink( )}/${chapterNumber}.${reader}.mp3`; } +export function bookChapterAudioTimingsApiLink( + translationId: string, + bookId: string, + chapterNumber: number, + reader: string, + prefix: string = '' +) { + return `${prefix}/api/${translationId}/${replaceSpacesWithUnderscores( + bookId + )}/${chapterNumber}.${reader}.audioTimings.json`; +} + /** * Getes the API link for a book chapter. * @param translationId The ID of the translation. diff --git a/packages/helloao-tools/generation/common-types.ts b/packages/helloao-tools/generation/common-types.ts index b7c5ab7..b25d975 100644 --- a/packages/helloao-tools/generation/common-types.ts +++ b/packages/helloao-tools/generation/common-types.ts @@ -559,6 +559,13 @@ export const TranslationBookChapterSchema = z.object({ thisChapterAudioLinks: z.lazy(() => TranslationBookChapterAudioLinksSchema).meta({ description: 'The links to different audio versions for the chapter.', }), + + /** + * The audio timings (per-verse start times, in seconds) for different audio versions for the chapter. + */ + thisChapterAudioTimings: z.lazy(() => TranslationBookChapterAudioTimingsSchema).meta({ + description: 'The audio timings (per-verse start times, in seconds) for different audio versions for the chapter.', + }), }).meta({ id: 'TranslationBookChapter', description: 'Defines the schema for information about a book chapter.', @@ -593,6 +600,17 @@ export const TranslationBookChapterAudioLinksSchema = z.record(z.string(), z.str export type TranslationBookChapterAudioLinks = z.infer; +/** + * Defines a Zod schema for the audio timings for a book chapter. + * Maps a reader ID to the list of times (in seconds) that each verse starts, in verse order. + */ +export const TranslationBookChapterAudioTimingsSchema = z.record(z.string(), z.array(z.number())).meta({ + id: 'TranslationBookChapterAudioTimings', + description: 'Defines the schema for the audio timings for a book chapter. Maps a reader ID to the list of times (in seconds) that each verse starts, in verse order.', +}); + +export type TranslationBookChapterAudioTimings = z.infer; + /** * Defines a Zod schema for information about data in a chapter. */ diff --git a/packages/helloao-tools/generation/dataset.ts b/packages/helloao-tools/generation/dataset.ts index bc50abf..716dbf8 100644 --- a/packages/helloao-tools/generation/dataset.ts +++ b/packages/helloao-tools/generation/dataset.ts @@ -302,6 +302,7 @@ export function generateDataset( id, content.number ), + thisChapterAudioTimings: {}, }); } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bbb07b8..d14217a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,32 +75,35 @@ importers: dependencies: '@vuepress/bundler-vite': specifier: 2.0.0-rc.30 - version: 2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0) + version: 2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0) '@vuepress/plugin-back-to-top': specifier: 2.0.0-rc.130 - version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vuepress/plugin-markdown-include': specifier: 2.0.0-rc.130 - version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vuepress/plugin-medium-zoom': specifier: 2.0.0-rc.130 - version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vuepress/plugin-search': specifier: 2.0.0-rc.130 - version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vuepress/plugin-shiki': specifier: 2.0.0-rc.130 - version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vuepress/theme-default': specifier: 2.0.0-rc.130 - version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + version: 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(sass-embedded@1.100.0)(sass@1.100.0)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) vue: specifier: ^3.4.32 version: 3.5.16(typescript@5.8.3) devDependencies: + sass-embedded: + specifier: ^1.83.0 + version: 1.100.0 vuepress: specifier: ^2.0.0-rc.14 - version: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + version: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) packages/free-use-bible-api: {} @@ -838,6 +841,12 @@ packages: integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, } + '@bufbuild/protobuf@2.12.1': + resolution: + { + integrity: sha512-BvAMfS6LrgZiryOAZ4pBYucu4wG/Ei/9o9DZ9akbREnMLbPJiom2i8b9C8IsKErQoiKqVhrerzt3kOT/RrzLHg==, + } + '@cspotcode/source-map-support@0.8.1': resolution: { @@ -1894,6 +1903,130 @@ packages: integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==, } + '@parcel/watcher-android-arm64@2.5.6': + resolution: + { + integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: + { + integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.6': + resolution: + { + integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: + { + integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: + { + integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: + { + integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: + { + integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: + { + integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: + { + integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: + { + integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.6': + resolution: + { + integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==, + } + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.6': + resolution: + { + integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==, + } + engines: { node: '>= 10.0.0' } + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.6': + resolution: + { + integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==, + } + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.6': + resolution: + { + integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==, + } + engines: { node: '>= 10.0.0' } + '@pkgr/core@0.2.9': resolution: { @@ -4114,6 +4247,12 @@ packages: } hasBin: true + colorjs.io@0.5.2: + resolution: + { + integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==, + } + combined-stream@1.0.8: resolution: { @@ -5200,6 +5339,12 @@ packages: } engines: { node: '>= 4' } + immutable@5.1.9: + resolution: + { + integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==, + } + import-local@3.2.0: resolution: { @@ -6232,6 +6377,12 @@ packages: } engines: { node: '>=10' } + node-addon-api@7.1.1: + resolution: + { + integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==, + } + node-int64@0.4.0: resolution: { @@ -6858,6 +7009,12 @@ packages: integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, } + rxjs@7.8.2: + resolution: + { + integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==, + } + safe-buffer@5.2.1: resolution: { @@ -6870,6 +7027,180 @@ packages: integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, } + sass-embedded-all-unknown@1.100.0: + resolution: + { + integrity: sha512-auFtXY/kwYILmSVjtBDwyj0axcLbYYiffOKWoaXHnI5bsYwiRbBh3EneR1rpbX2ZIZCrwX93i5pxKLTZF/662Q==, + } + cpu: ['!arm', '!arm64', '!riscv64', '!x64'] + + sass-embedded-android-arm64@1.100.0: + resolution: + { + integrity: sha512-W+Ru9JwTnfU0UX3jSZcbqFdtKFMcYdfFwytc57h2DgnqCOIiAqI2E06mABZBZC+r3LwXCBuS5GbXAGeVgvVDkA==, + } + engines: { node: '>=14.0.0' } + cpu: [arm64] + os: [android] + + sass-embedded-android-arm@1.100.0: + resolution: + { + integrity: sha512-70f3HgX2pFNmzpGQ86n5e6QfWn2fP4QUQGfFQK0P1XH73ZLIzLo2YqygrGKGKeeqtc5eU2Wl1/xQzhzuKnO4kw==, + } + engines: { node: '>=14.0.0' } + cpu: [arm] + os: [android] + + sass-embedded-android-riscv64@1.100.0: + resolution: + { + integrity: sha512-icU3o0V/uCSytSpf+tX5Lf51BvyQEbLzDUJfUi9etSauYBGHpPKkdtdZH0si4v98phq11Kl8rSV1SggksxF1Hg==, + } + engines: { node: '>=14.0.0' } + cpu: [riscv64] + os: [android] + + sass-embedded-android-x64@1.100.0: + resolution: + { + integrity: sha512-mevF9VQk6gEYByy8+jusaHGmd7Usb2ytX/DsEOd0JtOGCtcf1kh575xJ6OUBDIcJ15uLnbau/0iy1eP6WVBvWA==, + } + engines: { node: '>=14.0.0' } + cpu: [x64] + os: [android] + + sass-embedded-darwin-arm64@1.100.0: + resolution: + { + integrity: sha512-1PVlYi61POo93IT/FfrG1mc1tAHxeSTyUALF2aOFmXGWjVXr3bQzEQiBGCOvQbj/ix+5hNyXFXcEMEyKvtUJJA==, + } + engines: { node: '>=14.0.0' } + cpu: [arm64] + os: [darwin] + + sass-embedded-darwin-x64@1.100.0: + resolution: + { + integrity: sha512-x97o3JnGyImZNCIVs9wQHJUE5QCvmVIKaH1cwrz/5dK7OT1FpeNiW+u9TUomP9hG6Ekjd8EL8NBHpxTfIhdjmg==, + } + engines: { node: '>=14.0.0' } + cpu: [x64] + os: [darwin] + + sass-embedded-linux-arm64@1.100.0: + resolution: + { + integrity: sha512-Dwjmj8Z6VRy7rAi53JAdEwIyUjpfl7PhpSc2/LpQPQx+aO5Dp7Spaipkax0ufJl1SoDUdchCsM4y/88YaluorQ==, + } + engines: { node: '>=14.0.0' } + cpu: [arm64] + os: [linux] + + sass-embedded-linux-arm@1.100.0: + resolution: + { + integrity: sha512-9Ul7O1eKrc5YlhwWjkp8tZPSe3UEwSZ1uwUZOQom1HL0pRlBA6F/IlGZYFTLwnHMIP1fc77MMNaBRfc05mKMpw==, + } + engines: { node: '>=14.0.0' } + cpu: [arm] + os: [linux] + + sass-embedded-linux-musl-arm64@1.100.0: + resolution: + { + integrity: sha512-XpACJB2KjSLjf2e9uuvGVdOURsoNrFqgRiihhXyUHK9W0t3LIHb7z5MA/7XGPIT9bWSOO2zyw+rH/FHtDV/Yrg==, + } + engines: { node: '>=14.0.0' } + cpu: [arm64] + os: [linux] + + sass-embedded-linux-musl-arm@1.100.0: + resolution: + { + integrity: sha512-sl0JgbGloPyJg66XXx5UDSDScZ0oU85DpMQU4JU/sCUCFj1Z8zZ69SJWKTCNE4/jwnce7WI2zPCV5AG+RHOZJw==, + } + engines: { node: '>=14.0.0' } + cpu: [arm] + os: [linux] + + sass-embedded-linux-musl-riscv64@1.100.0: + resolution: + { + integrity: sha512-ShvI0Kx04mwoCARwZ0UjiT97isQvzO80tAt91zmFyHLN9kelc/IrQi940farSm2xQVPCKdeVyeG0ekBsokSpYQ==, + } + engines: { node: '>=14.0.0' } + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-musl-x64@1.100.0: + resolution: + { + integrity: sha512-TDBCRWNuS4RDLQXvRc1gjZlWiWTWaWGp0Bwu/IKwJxov81lsvrCs3TihTyNXtW7V5aoN4Ky3r0QOkNb3mwmBnA==, + } + engines: { node: '>=14.0.0' } + cpu: [x64] + os: [linux] + + sass-embedded-linux-riscv64@1.100.0: + resolution: + { + integrity: sha512-j4ENJGOheO+fm3j/yorLxCjBP6/XskrZx7dTLlT+lXYwN/qqCqoA/gsNLI0McS3DFM6GBwPiffzWsdWS8t6sEQ==, + } + engines: { node: '>=14.0.0' } + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-x64@1.100.0: + resolution: + { + integrity: sha512-0vUSN8j0WGtCJIOPh//EmUvYGHW0QOe5iul8qyhPk50MAcw49MA0r34AhftjDdx94ILPF6vApFs0gwHPQRlpVA==, + } + engines: { node: '>=14.0.0' } + cpu: [x64] + os: [linux] + + sass-embedded-unknown-all@1.100.0: + resolution: + { + integrity: sha512-c+naBgWId4MIpToXcI0DgqetjdAkwTTAxFAuOaBz7HUXLdyG1oZRrEvSsbe41nEdQOKH0vgofVFCeSQgoXOG9A==, + } + os: ['!android', '!darwin', '!linux', '!win32'] + + sass-embedded-win32-arm64@1.100.0: + resolution: + { + integrity: sha512-iE+yxj+hUXwwbqpHkXxgAWTzeRfcWxJ7SSTQEPMk48lwq3oCrWLlz5sQuWHbuTK/i0GKQfROdP+hOmPi89yjUg==, + } + engines: { node: '>=14.0.0' } + cpu: [arm64] + os: [win32] + + sass-embedded-win32-x64@1.100.0: + resolution: + { + integrity: sha512-qI4F8MI7/KYoy9NdjJfhSspG42WPkADSNDvwEV7qWvCSFC83koJssRsKO2/PfY+niZz6BG65Ic/D+A11h959hw==, + } + engines: { node: '>=14.0.0' } + cpu: [x64] + os: [win32] + + sass-embedded@1.100.0: + resolution: + { + integrity: sha512-Ut8wlQSk19tm7jMK6mz6cF1+e+E7tUnW2tM02zQDPnOTcVbV8qCQG8UWxZkkNlY50+hV3hqP24OOkUlMz8xBpw==, + } + engines: { node: '>=16.0.0' } + hasBin: true + + sass@1.100.0: + resolution: + { + integrity: sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ==, + } + engines: { node: '>=20.19.0' } + hasBin: true + sax@1.4.1: resolution: { @@ -7208,6 +7539,20 @@ packages: } engines: { node: '>= 0.4' } + sync-child-process@1.0.2: + resolution: + { + integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==, + } + engines: { node: '>=16.0.0' } + + sync-message-port@1.2.0: + resolution: + { + integrity: sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==, + } + engines: { node: '>=16.0.0' } + synckit@0.11.12: resolution: { @@ -7539,6 +7884,12 @@ packages: typescript: optional: true + varint@6.0.0: + resolution: + { + integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==, + } + vfile-location@5.0.3: resolution: { @@ -8602,6 +8953,8 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@bufbuild/protobuf@2.12.1': {} + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -9300,6 +9653,67 @@ snapshots: '@oxc-project/types@0.130.0': {} + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.0.4 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.4 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true + '@pkgr/core@0.2.9': {} '@prisma/adapter-better-sqlite3@7.8.0': @@ -10087,10 +10501,10 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@6.0.6(vite@8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(yaml@2.9.0))(vue@3.5.34(typescript@5.8.3))': + '@vitejs/plugin-vue@6.0.6(vite@8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(yaml@2.9.0))(vue@3.5.34(typescript@5.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.13 - vite: 8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(yaml@2.9.0) + vite: 8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(yaml@2.9.0) vue: 3.5.34(typescript@5.8.3) '@vue-macros/common@3.1.2(vue@3.5.34(typescript@5.8.3))': @@ -10244,9 +10658,9 @@ snapshots: '@vue/shared@3.5.34': {} - '@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0)': + '@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0)': dependencies: - '@vitejs/plugin-vue': 6.0.6(vite@8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(yaml@2.9.0))(vue@3.5.34(typescript@5.8.3)) + '@vitejs/plugin-vue': 6.0.6(vite@8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(yaml@2.9.0))(vue@3.5.34(typescript@5.8.3)) '@vuepress/bundlerutils': 2.0.0-rc.30(@vue/compiler-sfc@3.5.34)(typescript@5.8.3) '@vuepress/client': 2.0.0-rc.30(@vue/compiler-sfc@3.5.34)(typescript@5.8.3) '@vuepress/core': 2.0.0-rc.30(@vue/compiler-sfc@3.5.34)(typescript@5.8.3) @@ -10257,7 +10671,7 @@ snapshots: postcss: 8.5.14 postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.14)(tsx@4.20.3)(yaml@2.9.0) rolldown: 1.0.1 - vite: 8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(yaml@2.9.0) + vite: 8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(yaml@2.9.0) vue: 3.5.34(typescript@5.8.3) vue-router: 5.0.7(@vue/compiler-sfc@3.5.34)(vue@3.5.34(typescript@5.8.3)) transitivePeerDependencies: @@ -10355,7 +10769,7 @@ snapshots: - supports-color - typescript - '@vuepress/helper@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/helper@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: '@vue/shared': 3.5.34 '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.8.3)) @@ -10363,16 +10777,16 @@ snapshots: fflate: 0.8.2 gray-matter: 4.0.3 vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) optionalDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0) + '@vuepress/bundler-vite': 2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0) transitivePeerDependencies: - typescript - '@vuepress/highlighter-helper@2.0.0-rc.130(@vuepress/helper@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/highlighter-helper@2.0.0-rc.130(@vuepress/helper@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) optionalDependencies: '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.8.3)) @@ -10418,68 +10832,68 @@ snapshots: transitivePeerDependencies: - supports-color - '@vuepress/plugin-active-header-links@2.0.0-rc.130(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-active-header-links@2.0.0-rc.130(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.8.3)) vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - typescript - '@vuepress/plugin-back-to-top@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-back-to-top@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.8.3)) vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-copy-code@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-copy-code@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.8.3)) vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-git@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-git@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.8.3)) rehype-parse: 9.0.1 rehype-sanitize: 6.0.0 rehype-stringify: 10.0.1 unified: 11.0.5 vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-links-check@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-links-check@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-markdown-hint@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vue@3.5.34(typescript@5.8.3))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-markdown-hint@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vue@3.5.34(typescript@5.8.3))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: '@mdit/plugin-alert': 0.23.2(markdown-it@14.1.1) '@mdit/plugin-container': 0.23.2(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.8.3)) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' @@ -10487,125 +10901,125 @@ snapshots: - typescript - vue - '@vuepress/plugin-markdown-include@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-markdown-include@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: '@mdit/plugin-include': 0.23.2(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-markdown-tab@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-markdown-tab@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: '@mdit/plugin-tab': 0.24.2(markdown-it@14.1.1) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.8.3)) vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - markdown-it - typescript - '@vuepress/plugin-medium-zoom@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-medium-zoom@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) medium-zoom: 1.1.0 vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-nprogress@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-nprogress@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-palette@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-palette@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) chokidar: 5.0.0 - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-prismjs@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(@vueuse/core@14.3.0(vue@3.5.34(typescript@5.8.3)))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-prismjs@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(@vueuse/core@14.3.0(vue@3.5.34(typescript@5.8.3)))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/highlighter-helper': 2.0.0-rc.130(@vuepress/helper@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/highlighter-helper': 2.0.0-rc.130(@vuepress/helper@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) prismjs: 1.30.0 - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - '@vueuse/core' - typescript - '@vuepress/plugin-search@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-search@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) chokidar: 5.0.0 vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-seo@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-seo@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-shiki@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-shiki@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: '@shikijs/transformers': 4.0.2 - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/highlighter-helper': 2.0.0-rc.130(@vuepress/helper@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/highlighter-helper': 2.0.0-rc.130(@vuepress/helper@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))))(@vueuse/core@14.3.0(vue@3.5.16(typescript@5.8.3)))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) nanoid: 5.1.11 shiki: 4.0.2 synckit: 0.11.12 - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - '@vueuse/core' - typescript - '@vuepress/plugin-sitemap@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-sitemap@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) sitemap: 9.0.1 - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' - typescript - '@vuepress/plugin-theme-data@2.0.0-rc.130(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + '@vuepress/plugin-theme-data@2.0.0-rc.130(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': dependencies: '@vue/devtools-api': 8.1.2 vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) transitivePeerDependencies: - typescript @@ -10617,26 +11031,29 @@ snapshots: dependencies: '@mdit-vue/types': 3.0.2 - '@vuepress/theme-default@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-active-header-links': 2.0.0-rc.130(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-back-to-top': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-copy-code': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-git': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-links-check': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-markdown-hint': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vue@3.5.34(typescript@5.8.3))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-markdown-tab': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-medium-zoom': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-nprogress': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-palette': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-prismjs': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(@vueuse/core@14.3.0(vue@3.5.34(typescript@5.8.3)))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-seo': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-sitemap': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) - '@vuepress/plugin-theme-data': 2.0.0-rc.130(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/theme-default@2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(sass-embedded@1.100.0)(sass@1.100.0)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-active-header-links': 2.0.0-rc.130(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-back-to-top': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-copy-code': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-git': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-links-check': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-markdown-hint': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vue@3.5.34(typescript@5.8.3))(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-markdown-tab': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(markdown-it@14.1.1)(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-medium-zoom': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-nprogress': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-palette': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-prismjs': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(@vueuse/core@14.3.0(vue@3.5.34(typescript@5.8.3)))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-seo': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-sitemap': 2.0.0-rc.130(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) + '@vuepress/plugin-theme-data': 2.0.0-rc.130(typescript@5.8.3)(vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3))) '@vueuse/core': 14.3.0(vue@3.5.34(typescript@5.8.3)) vue: 3.5.34(typescript@5.8.3) - vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + vuepress: 2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)) + optionalDependencies: + sass: 1.100.0 + sass-embedded: 1.100.0 transitivePeerDependencies: - '@vuepress/bundler-vite' - '@vuepress/bundler-webpack' @@ -11054,6 +11471,8 @@ snapshots: color-support@1.1.3: {} + colorjs.io@0.5.2: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -11682,6 +12101,8 @@ snapshots: ignore@7.0.5: {} + immutable@5.1.9: {} + import-local@3.2.0: dependencies: pkg-dir: 4.2.0 @@ -12412,6 +12833,9 @@ snapshots: dependencies: semver: 7.7.2 + node-addon-api@7.1.1: + optional: true + node-int64@0.4.0: {} node-releases@2.0.19: {} @@ -12804,10 +13228,110 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + safe-buffer@5.2.1: {} safer-buffer@2.1.2: {} + sass-embedded-all-unknown@1.100.0: + dependencies: + sass: 1.100.0 + optional: true + + sass-embedded-android-arm64@1.100.0: + optional: true + + sass-embedded-android-arm@1.100.0: + optional: true + + sass-embedded-android-riscv64@1.100.0: + optional: true + + sass-embedded-android-x64@1.100.0: + optional: true + + sass-embedded-darwin-arm64@1.100.0: + optional: true + + sass-embedded-darwin-x64@1.100.0: + optional: true + + sass-embedded-linux-arm64@1.100.0: + optional: true + + sass-embedded-linux-arm@1.100.0: + optional: true + + sass-embedded-linux-musl-arm64@1.100.0: + optional: true + + sass-embedded-linux-musl-arm@1.100.0: + optional: true + + sass-embedded-linux-musl-riscv64@1.100.0: + optional: true + + sass-embedded-linux-musl-x64@1.100.0: + optional: true + + sass-embedded-linux-riscv64@1.100.0: + optional: true + + sass-embedded-linux-x64@1.100.0: + optional: true + + sass-embedded-unknown-all@1.100.0: + dependencies: + sass: 1.100.0 + optional: true + + sass-embedded-win32-arm64@1.100.0: + optional: true + + sass-embedded-win32-x64@1.100.0: + optional: true + + sass-embedded@1.100.0: + dependencies: + '@bufbuild/protobuf': 2.12.1 + colorjs.io: 0.5.2 + immutable: 5.1.9 + rxjs: 7.8.2 + supports-color: 8.1.1 + sync-child-process: 1.0.2 + varint: 6.0.0 + optionalDependencies: + sass-embedded-all-unknown: 1.100.0 + sass-embedded-android-arm: 1.100.0 + sass-embedded-android-arm64: 1.100.0 + sass-embedded-android-riscv64: 1.100.0 + sass-embedded-android-x64: 1.100.0 + sass-embedded-darwin-arm64: 1.100.0 + sass-embedded-darwin-x64: 1.100.0 + sass-embedded-linux-arm: 1.100.0 + sass-embedded-linux-arm64: 1.100.0 + sass-embedded-linux-musl-arm: 1.100.0 + sass-embedded-linux-musl-arm64: 1.100.0 + sass-embedded-linux-musl-riscv64: 1.100.0 + sass-embedded-linux-musl-x64: 1.100.0 + sass-embedded-linux-riscv64: 1.100.0 + sass-embedded-linux-x64: 1.100.0 + sass-embedded-unknown-all: 1.100.0 + sass-embedded-win32-arm64: 1.100.0 + sass-embedded-win32-x64: 1.100.0 + + sass@1.100.0: + dependencies: + chokidar: 5.0.0 + immutable: 5.1.9 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.6 + optional: true + sax@1.4.1: {} scheduler@0.27.0: {} @@ -12967,6 +13491,12 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + sync-child-process@1.0.2: + dependencies: + sync-message-port: 1.2.0 + + sync-message-port@1.2.0: {} + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 @@ -13169,6 +13699,8 @@ snapshots: optionalDependencies: typescript: 5.8.3 + varint@6.0.0: {} + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 @@ -13184,7 +13716,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite@8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(yaml@2.9.0): + vite@8.0.13(@types/node@24.12.4)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -13196,6 +13728,8 @@ snapshots: esbuild: 0.24.0 fsevents: 2.3.3 jiti: 2.7.0 + sass: 1.100.0 + sass-embedded: 1.100.0 tsx: 4.20.3 yaml: 2.9.0 @@ -13247,7 +13781,7 @@ snapshots: optionalDependencies: typescript: 5.8.3 - vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)): + vuepress@2.0.0-rc.23(@vuepress/bundler-vite@2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0))(typescript@5.8.3)(vue@3.5.16(typescript@5.8.3)): dependencies: '@vuepress/cli': 2.0.0-rc.23(typescript@5.8.3) '@vuepress/client': 2.0.0-rc.23(typescript@5.8.3) @@ -13257,7 +13791,7 @@ snapshots: '@vuepress/utils': 2.0.0-rc.23 vue: 3.5.16(typescript@5.8.3) optionalDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0) + '@vuepress/bundler-vite': 2.0.0-rc.30(@types/node@24.12.4)(@vue/compiler-sfc@3.5.34)(esbuild@0.24.0)(jiti@2.7.0)(sass-embedded@1.100.0)(sass@1.100.0)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.9.0) transitivePeerDependencies: - supports-color - typescript