From 65d9d3f222811730de945a4bf90827fdfb9091b2 Mon Sep 17 00:00:00 2001 From: hmmhmmhm Date: Wed, 9 Sep 2026 18:39:55 +0900 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=ED=98=B8=EC=B6=9C=EB=9F=89=20?= =?UTF-8?q?=EC=A7=91=EA=B3=84=EC=9D=98=20=EB=B3=B4=EC=A1=B4=EA=B8=B0?= =?UTF-8?q?=EA=B0=84=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +- assets/analytics/workers-invocations.json | 74 +++++----- assets/analytics/workers-invocations.png | Bin 81816 -> 91445 bytes docs/traffic-history-recovery-2026-09-09.md | 48 +++++++ .../ops/update-workers-invocations-chart.ts | 54 +++++-- scripts/ops/workers-chart-data.ts | 72 +++++++++- scripts/ops/workers-chart-helpers.ts | 15 +- tests/scripts/workers-chart-data.test.ts | 20 ++- .../scripts/workers-chart-entrypoint.test.ts | 135 ++++++++++++++++++ tests/scripts/workers-chart-retention.test.ts | 106 ++++++++++++++ 10 files changed, 470 insertions(+), 59 deletions(-) create mode 100644 docs/traffic-history-recovery-2026-09-09.md create mode 100644 tests/scripts/workers-chart-entrypoint.test.ts create mode 100644 tests/scripts/workers-chart-retention.test.ts diff --git a/README.md b/README.md index becf0f2f..d8b9d3c6 100644 --- a/README.md +++ b/README.md @@ -83,11 +83,12 @@ **[실시간 서비스 상태 보기](https://aka-page.betteruptime.com/)** -

Cloudflare Workers 호출량 (2026-08-10 ~ 2026-09-08, 30일)

+

Cloudflare 요청 수 (2026-08-10 ~ 2026-09-08, 30일)

-Cloudflare Workers 호출량 그래프 (2026-08-10 ~ 2026-09-08) +Cloudflare 요청 수 그래프 (2026-08-10 ~ 2026-09-08) 기준 워커: daiso-mcp · 마지막 갱신: 2026-09-09 03:45 KST +
집계: Worker 실행 + 루트 GET 리디렉션 요청 · 사용자 수와 다릅니다. diff --git a/assets/analytics/workers-invocations.json b/assets/analytics/workers-invocations.json index 375494fb..a6ac0a78 100644 --- a/assets/analytics/workers-invocations.json +++ b/assets/analytics/workers-invocations.json @@ -1,8 +1,9 @@ { + "accountId": "6353b3b978a6ebc8ee4b2953509da274", "scriptName": "daiso-mcp", "metric": "workersInvocationsAdaptive.requests + httpRequestsAdaptiveGroups.count", "aggregation": "script-level plus redirected root GET", - "includedTraffic": "Worker invocations for daiso-mcp plus redirected GET / traffic on mcp.aka.page where zone analytics retention permits.", + "includedTraffic": "Worker invocations for daiso-mcp plus redirected GET / traffic on mcp.aka.page, retaining complete historical daily totals.", "rootRedirect": { "zoneId": "c987d32286724a5a1fd5586cec7756c1", "host": "mcp.aka.page", @@ -11,23 +12,24 @@ "rootRequestsRetentionDays": 7 }, "timezone": "Asia/Seoul", + "coverageVersion": 1, "days": 30, "startDate": "2026-08-10", "endDate": "2026-09-08", "updatedAt": "2026-09-08T18:45:16.570Z", - "renderedAt": "2026-09-08T18:45:16.570Z", - "total": 16546459, - "average": 551549, - "median": 187001, + "renderedAt": "2026-09-09T09:35:24.062Z", + "total": 59226067, + "average": 1974202, + "median": 1961683, "peak": { - "date": "2026-09-08", - "requests": 2820280 + "date": "2026-08-14", + "requests": 3063834 }, - "recent7Total": 12596889, - "recent7Average": 1799556, - "previous7Total": 1020439, - "weekOverWeekDiff": 11576450, - "weekOverWeekPercent": 1134.4578166847798, + "recent7Total": 12781738, + "recent7Average": 1825963, + "previous7Total": 12474864, + "weekOverWeekDiff": 306874, + "weekOverWeekPercent": 2.459938641415249, "latest": { "date": "2026-09-08", "requests": 2820280 @@ -41,99 +43,99 @@ "points": [ { "date": "2026-08-10", - "requests": 140090 + "requests": 2482869 }, { "date": "2026-08-11", - "requests": 126647 + "requests": 2183677 }, { "date": "2026-08-12", - "requests": 137894 + "requests": 2443491 }, { "date": "2026-08-13", - "requests": 170133 + "requests": 2595363 }, { "date": "2026-08-14", - "requests": 206298 + "requests": 3063834 }, { "date": "2026-08-15", - "requests": 169162 + "requests": 2370520 }, { "date": "2026-08-16", - "requests": 170065 + "requests": 2018530 }, { "date": "2026-08-17", - "requests": 203591 + "requests": 1273637 }, { "date": "2026-08-18", - "requests": 217502 + "requests": 2157416 }, { "date": "2026-08-19", - "requests": 238271 + "requests": 2508367 }, { "date": "2026-08-20", - "requests": 192381 + "requests": 2533868 }, { "date": "2026-08-21", - "requests": 183848 + "requests": 2645579 }, { "date": "2026-08-22", - "requests": 187086 + "requests": 837045 }, { "date": "2026-08-23", - "requests": 186915 + "requests": 872927 }, { "date": "2026-08-24", - "requests": 215169 + "requests": 2281357 }, { "date": "2026-08-25", - "requests": 184079 + "requests": 1700985 }, { "date": "2026-08-26", - "requests": 196154 + "requests": 1811819 }, { "date": "2026-08-27", - "requests": 175418 + "requests": 1750102 }, { "date": "2026-08-28", - "requests": 171532 + "requests": 1932412 }, { "date": "2026-08-29", - "requests": 126391 + "requests": 1990954 }, { "date": "2026-08-30", - "requests": 109463 + "requests": 1250744 }, { "date": "2026-08-31", - "requests": 142067 + "requests": 1889143 }, { "date": "2026-09-01", - "requests": 99414 + "requests": 1849690 }, { "date": "2026-09-02", - "requests": 1644260 + "requests": 1829109 }, { "date": "2026-09-03", diff --git a/assets/analytics/workers-invocations.png b/assets/analytics/workers-invocations.png index 1e0cc8e9b7af8ae1af76bde15228407941587bb8..7db103689d09cf97bc699af44ba71e72115b70a7 100644 GIT binary patch literal 91445 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 z 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 x + 18 + (index / Math.max(recent.length - 1, 1)) * (width - 36); const toY = (value) => innerBottom - ((value - min) / range) * (innerBottom - innerTop); - const recentPath = linePath(recent.map((point, index) => ({ x: toX(index), y: toY(point.requests) }))); + const recentPath = linePath( + recent.map((point, index) => ({ x: toX(index), y: toY(point.requests) })), + ); const latest = recent[recent.length - 1]; return ` @@ -211,7 +216,7 @@ async function renderChart(points, summary, metadata) { .recent-label { font-size: 12px; font-weight: 700; fill: ${WORKERS_CHART_ACCENT_COLORS.recent14Label}; } - ${escapeXml(`Cloudflare Workers Invocations (${metadata.startDate} ~ ${metadata.endDate}, ${labels.length} days)`)} + ${escapeXml(`Cloudflare Requests (${metadata.startDate} ~ ${metadata.endDate}, ${labels.length} days)`)} ${escapeXml(`Updated: ${metadata.updatedAtText}`)} Requests @@ -270,8 +275,12 @@ async function renderChart(points, summary, metadata) { } async function updateReadme(section) { - const readme = await fs.readFile(README_PATH, 'utf8'); + const readme = (await fs.readFile(README_PATH, 'utf8')).replaceAll('\r\n', '\n'); const pattern = new RegExp(`${README_START}[\\s\\S]*?${README_END}`, 'm'); + if (pattern.test(readme)) { + await fs.writeFile(README_PATH, readme.replace(pattern, section), 'utf8'); + return; + } const withoutSection = readme.replace(pattern, '').replace(/\n{3,}/g, '\n\n'); const badgesAnchor = '\n\n
\n\n
\n\n>; if (INPUT_JSON_PATH) { - const inputPayload = await readInputPayload(INPUT_JSON_PATH); + inputPayload = await readInputPayload(INPUT_JSON_PATH); points = inputPayload.points; scriptName = inputPayload.scriptName ?? scriptName; startDate = inputPayload.startDate ?? points[0]?.date ?? startDate; @@ -306,7 +316,14 @@ async function main() { const endDateExclusive = parseKstDateText(todayKstDate); endDate = formatKstDate(new Date(endDateExclusive.getTime() - 86400000)); startDate = startDate ?? calculateStartDateFromDays(endDate, CHART_DAYS); - const rootRequestsRetentionStart = calculateRetentionStart(renderedAt, ROOT_REQUESTS_RETENTION_DAYS); + const rootRequestsRetentionStart = calculateRetentionStart( + renderedAt, + ROOT_REQUESTS_RETENTION_DAYS, + ); + const previousPayload = await readInputPayload(DATA_PATH).catch((error) => { + if (error.code === 'ENOENT') return undefined; + throw error; + }); points = await fetchDailyWorkerInvocations({ accountId: ACCOUNT_ID, @@ -321,6 +338,7 @@ async function main() { rootRedirectPath: ROOT_REDIRECT_PATH, rootRedirectStart: ROOT_REDIRECT_START, rootRequestsRetentionStart, + previousPayload, concurrency: Number.isFinite(CHART_CONCURRENCY) && CHART_CONCURRENCY > 0 ? CHART_CONCURRENCY : 4, }); @@ -334,15 +352,15 @@ async function main() { }); await fs.writeFile(CHART_PATH, chartBuffer); const payload = { + accountId: ACCOUNT_ID, scriptName, metric: ROOT_REDIRECT_START ? 'workersInvocationsAdaptive.requests + httpRequestsAdaptiveGroups.count' : 'workersInvocationsAdaptive.requests', aggregation: ROOT_REDIRECT_START ? 'script-level plus redirected root GET' : 'script-level', - includedTraffic: - ROOT_REDIRECT_START - ? `Worker invocations for ${scriptName} plus redirected GET ${ROOT_REDIRECT_PATH} traffic on ${ROOT_REDIRECT_HOST} where zone analytics retention permits.` - : 'All invocations for this Worker script are counted across routes and domains, including GET / on mcp.aka.page.', + includedTraffic: ROOT_REDIRECT_START + ? `Worker invocations for ${scriptName} plus redirected GET ${ROOT_REDIRECT_PATH} traffic on ${ROOT_REDIRECT_HOST}, retaining complete historical daily totals.` + : 'All invocations for this Worker script are counted across routes and domains, including GET / on mcp.aka.page.', rootRedirect: ROOT_REDIRECT_START && ZONE_ID ? { @@ -354,6 +372,19 @@ async function main() { } : null, timezone: 'Asia/Seoul', + coverageVersion: 1, + // 오프라인 렌더링에서는 원본 지표와 완전성 정보를 그대로 유지합니다. + ...(inputPayload + ? { + accountId: inputPayload.accountId, + metric: inputPayload.metric, + aggregation: inputPayload.aggregation, + includedTraffic: inputPayload.includedTraffic, + rootRedirect: inputPayload.rootRedirect, + timezone: inputPayload.timezone, + coverageVersion: inputPayload.coverageVersion, + } + : {}), days: points.length, startDate, endDate, @@ -366,11 +397,12 @@ async function main() { const section = buildReadmeSection({ scriptName, - updatedAt: formatKstDateTime(renderedAt), + updatedAt: formatKstDateTime(new Date(updatedAt)), days: points.length, startDate, endDate, cacheKey: payload.renderedAt, + includesRootRedirect: Boolean(payload.rootRedirect), }); await updateReadme(section); diff --git a/scripts/ops/workers-chart-data.ts b/scripts/ops/workers-chart-data.ts index 966c59f0..3b9a6ad6 100644 --- a/scripts/ops/workers-chart-data.ts +++ b/scripts/ops/workers-chart-data.ts @@ -2,6 +2,42 @@ import { buildKstDateRangeBetween, parseKstDateText } from './workers-chart-help const DEFAULT_ROOT_REQUESTS_RETENTION_MS = 7 * 86400000; +// 보존기간 밖의 날짜는 같은 지표를 완전히 관측한 스냅샷에서만 복구합니다. +function findCompleteCachedPoint(payload, window, source, requiredRootStart) { + if ( + !source.accountId || + payload?.accountId !== source.accountId || + payload?.scriptName !== source.scriptName || + payload?.timezone !== 'Asia/Seoul' || + payload?.metric !== 'workersInvocationsAdaptive.requests + httpRequestsAdaptiveGroups.count' || + payload?.rootRedirect?.zoneId !== source.zoneId || + payload?.rootRedirect?.host !== source.rootRedirectHost || + payload?.rootRedirect?.path !== source.rootRedirectPath || + payload?.rootRedirect?.start !== source.rootRedirectStart.toISOString() + ) + return undefined; + + const point = Array.isArray(payload.points) + ? payload.points.find((point) => point.date === window.date) + : undefined; + if (!point || !Number.isFinite(point.requests) || point.requests < 0) return undefined; + + if (payload.coverageVersion === 1) return { date: window.date, requests: point.requests }; + if (payload.coverageVersion !== undefined) return undefined; + + // 기존 형식은 기록 당시 하루 전체가 보존기간 안에 있었는지 검증합니다. + const observedAt = new Date(payload.updatedAt).getTime(); + const retentionDays = payload.rootRedirect.rootRequestsRetentionDays; + if ( + Number.isFinite(retentionDays) && + retentionDays > 0 && + observedAt >= window.end.getTime() && + observedAt - retentionDays * 86400000 <= requiredRootStart.getTime() + ) + return { date: window.date, requests: point.requests }; + return undefined; +} + const WORKER_INVOCATIONS_QUERY = ` query WorkerInvocations($accountTag: string, $scriptName: string, $start: Time!, $end: Time!) { viewer { @@ -228,6 +264,7 @@ export async function fetchRootGetRequestsForWindow({ * @param {string} [params.rootRedirectPath] * @param {Date} [params.rootRedirectStart] * @param {Date} [params.rootRequestsRetentionStart] + * @param {object} [params.previousPayload] * @param {number} [params.concurrency] * @param {typeof fetch} [params.fetchImpl] * @returns {Promise>} @@ -245,6 +282,7 @@ export async function fetchDailyWorkerInvocations({ rootRedirectPath = '/', rootRedirectStart, rootRequestsRetentionStart = new Date(Date.now() - DEFAULT_ROOT_REQUESTS_RETENTION_MS), + previousPayload, concurrency = 4, fetchImpl = fetch, }) { @@ -258,6 +296,33 @@ export async function fetchDailyWorkerInvocations({ const index = nextIndex; nextIndex += 1; const window = windows[index]; + const requiredRootStart = rootRedirectStart > window.start ? rootRedirectStart : window.start; + if ( + rootRedirectStart && + requiredRootStart < window.end && + (!zoneId || rootRequestsRetentionStart > requiredRootStart) + ) { + const cachedPoint = findCompleteCachedPoint( + previousPayload, + window, + { + accountId, + scriptName, + zoneId, + rootRedirectHost, + rootRedirectPath, + rootRedirectStart, + }, + requiredRootStart, + ); + if (!cachedPoint) { + throw new Error( + `Incomplete daily traffic: ${window.date}; complete root GET history is unavailable.`, + ); + } + points[index] = cachedPoint; + continue; + } const requests = await fetchWorkerInvocationsForWindow({ accountId, apiToken, @@ -268,11 +333,8 @@ export async function fetchDailyWorkerInvocations({ end: window.end, fetchImpl, }); - const redirectStart = [window.start, rootRedirectStart, rootRequestsRetentionStart] - .filter((date) => date instanceof Date) - .reduce((latest, date) => (date > latest ? date : latest), window.start); const redirectedRootRequests = - zoneId && rootRedirectStart && redirectStart < window.end + zoneId && rootRedirectStart && requiredRootStart < window.end ? await fetchRootGetRequestsForWindow({ apiToken, apiEmail, @@ -280,7 +342,7 @@ export async function fetchDailyWorkerInvocations({ zoneId, host: rootRedirectHost, path: rootRedirectPath, - start: redirectStart, + start: requiredRootStart, end: window.end, fetchImpl, }) diff --git a/scripts/ops/workers-chart-helpers.ts b/scripts/ops/workers-chart-helpers.ts index efb34af7..f2e5f2de 100644 --- a/scripts/ops/workers-chart-helpers.ts +++ b/scripts/ops/workers-chart-helpers.ts @@ -285,14 +285,23 @@ export function calculateSummary(points) { }; } -export function buildReadmeSection({ scriptName, updatedAt, days, startDate, endDate, cacheKey }) { +export function buildReadmeSection({ + scriptName, + updatedAt, + days, + startDate, + endDate, + cacheKey, + includesRootRedirect = false, +}) { return [ '', - `

Cloudflare Workers 호출량 (${startDate} ~ ${endDate}, ${days}일)

`, + `

Cloudflare 요청 수 (${startDate} ~ ${endDate}, ${days}일)

`, '', - `Cloudflare Workers 호출량 그래프 (${startDate} ~ ${endDate})`, + `Cloudflare 요청 수 그래프 (${startDate} ~ ${endDate})`, '', `기준 워커: ${scriptName} · 마지막 갱신: ${updatedAt}`, + `
집계: ${includesRootRedirect ? 'Worker 실행 + 루트 GET 리디렉션 요청' : 'Worker 실행'} · 사용자 수와 다릅니다.`, '', '', '', diff --git a/tests/scripts/workers-chart-data.test.ts b/tests/scripts/workers-chart-data.test.ts index b5a13cc8..9a9a1992 100644 --- a/tests/scripts/workers-chart-data.test.ts +++ b/tests/scripts/workers-chart-data.test.ts @@ -353,7 +353,9 @@ describe('fetchDailyWorkerInvocations', () => { viewer: { accounts: [ { - workersInvocationsAdaptive: [{ sum: { requests: start.includes('06-03') ? 100 : 200 } }], + workersInvocationsAdaptive: [ + { sum: { requests: start.includes('06-03') ? 100 : 200 } }, + ], }, ], }, @@ -371,12 +373,26 @@ describe('fetchDailyWorkerInvocations', () => { zoneId: 'zone-id', rootRedirectStart: new Date('2026-05-27T07:24:50.000Z'), rootRequestsRetentionStart: new Date('2026-06-04T15:00:00.000Z'), + previousPayload: { + accountId: 'account-id', + scriptName: 'daiso-mcp', + timezone: 'Asia/Seoul', + coverageVersion: 1, + metric: 'workersInvocationsAdaptive.requests + httpRequestsAdaptiveGroups.count', + rootRedirect: { + zoneId: 'zone-id', + host: 'mcp.aka.page', + path: '/', + start: '2026-05-27T07:24:50.000Z', + }, + points: [{ date: '2026-06-04', requests: 999 }], + }, fetchImpl: mockFetch, concurrency: 1, }); expect(points).toEqual([ - { date: '2026-06-04', requests: 100 }, + { date: '2026-06-04', requests: 999 }, { date: '2026-06-05', requests: 225 }, ]); diff --git a/tests/scripts/workers-chart-entrypoint.test.ts b/tests/scripts/workers-chart-entrypoint.test.ts new file mode 100644 index 00000000..0df4ff6d --- /dev/null +++ b/tests/scripts/workers-chart-entrypoint.test.ts @@ -0,0 +1,135 @@ +import { execFileSync } from 'node:child_process'; +import fs from 'node:fs/promises'; +import path from 'node:path'; +import { pathToFileURL } from 'node:url'; +import { afterEach, describe, expect, it } from 'vitest'; +import { formatKstDate, parseKstDateText } from '../../scripts/ops/workers-chart-helpers.ts'; + +const temporaryRoots: string[] = []; +afterEach(async () => { + await Promise.all(temporaryRoots.map((root) => fs.rm(root, { recursive: true, force: true }))); + temporaryRoots.length = 0; +}); +async function fixture() { + const root = await fs.mkdtemp(path.join(process.cwd(), '.chart-test-')); + temporaryRoots.push(root); + await fs.mkdir(path.join(root, 'scripts/ops'), { recursive: true }); + await fs.mkdir(path.join(root, 'assets/analytics'), { recursive: true }); + for (const name of [ + 'workers-chart-data.ts', + 'workers-chart-helpers.ts', + 'update-workers-invocations-chart.ts', + ]) { + await fs.copyFile(path.join('scripts/ops', name), path.join(root, 'scripts/ops', name)); + } + await fs.writeFile(path.join(root, 'README.md'), '# Test\n'); + const date = formatKstDate( + new Date(parseKstDateText(formatKstDate(new Date())).getTime() - 86400000), + ); + const payload = { + accountId: 'account', + scriptName: 'daiso-mcp', + metric: 'workersInvocationsAdaptive.requests + httpRequestsAdaptiveGroups.count', + aggregation: 'script-level plus redirected root GET', + includedTraffic: 'complete test traffic', + timezone: 'Asia/Seoul', + coverageVersion: 1, + rootRedirect: { + zoneId: 'zone', + host: 'mcp.aka.page', + path: '/', + start: '2026-05-27T07:24:50.000Z', + rootRequestsRetentionDays: 1, + }, + updatedAt: new Date().toISOString(), + startDate: date, + endDate: date, + points: [{ date, requests: 1234 }], + }; + const dataPath = path.join(root, 'assets/analytics/workers-invocations.json'); + await fs.writeFile(dataPath, JSON.stringify(payload)); + await fs.writeFile( + path.join(root, 'no-network.mjs'), + 'globalThis.fetch = () => { throw new Error("Unexpected network request"); };', + ); + return { root, payload, dataPath }; +} +function run(root: string, overrides: Record) { + const env = { ...process.env }; + for (const key of Object.keys(env)) + if ( + key.startsWith('CLOUDFLARE_') || + key.startsWith('WORKERS_CHART_') || + key === 'CF_WORKER_SCRIPT_NAME' + ) + delete env[key]; + execFileSync( + process.execPath, + [ + '--import', + pathToFileURL(path.join(root, 'no-network.mjs')).href, + path.join(root, 'scripts/ops/update-workers-invocations-chart.ts'), + ], + { env: { ...env, ...overrides }, stdio: 'pipe' }, + ); +} +describe('workers chart entrypoint', () => { + it('불완전한 기록이면 오류로 종료하고 기존 산출물을 보존한다', async () => { + const { root, payload, dataPath } = await fixture(); + const incomplete = { + ...payload, + coverageVersion: undefined, + updatedAt: '2026-05-01T00:00:00Z', + }; + const original = JSON.stringify(incomplete); + await fs.writeFile(dataPath, original); + expect(() => + run(root, { + CLOUDFLARE_ACCOUNT_ID: 'account', + CLOUDFLARE_API_TOKEN: 'token', + CLOUDFLARE_ZONE_ID: 'zone', + WORKERS_CHART_DAYS: '1', + WORKERS_CHART_ROOT_REQUESTS_RETENTION_DAYS: '1', + WORKERS_CHART_ROOT_REDIRECT_START: payload.rootRedirect.start, + }), + ).toThrow('Incomplete daily traffic'); + expect(await fs.readFile(dataPath, 'utf8')).toBe(original); + expect(await fs.readFile(path.join(root, 'README.md'), 'utf8')).toBe('# Test\n'); + }); + it('실시간 실행에서 저장된 완전한 날짜를 읽고 보존한다', async () => { + const { root, payload, dataPath } = await fixture(); + run(root, { + CLOUDFLARE_ACCOUNT_ID: 'account', + CLOUDFLARE_API_TOKEN: 'token', + CLOUDFLARE_ZONE_ID: 'zone', + WORKERS_CHART_DAYS: '1', + WORKERS_CHART_ROOT_REQUESTS_RETENTION_DAYS: '1', + WORKERS_CHART_ROOT_REDIRECT_START: payload.rootRedirect.start, + }); + const output = JSON.parse(await fs.readFile(dataPath, 'utf8')); + expect(output.points).toEqual(payload.points); + expect(output.coverageVersion).toBe(1); + expect(output.accountId).toBe('account'); + }); + it('오프라인 렌더링은 인증 없이 원본 출처와 완전성 정보를 유지한다', async () => { + const { root, payload, dataPath } = await fixture(); + run(root, { WORKERS_CHART_INPUT_JSON: dataPath }); + const output = JSON.parse(await fs.readFile(dataPath, 'utf8')); + expect(output).toMatchObject(payload); + expect( + (await fs.stat(path.join(root, 'assets/analytics/workers-invocations.png'))).size, + ).toBeGreaterThan(0); + }); + it('CRLF 문서에서도 기존 차트 위치와 앞뒤 내용을 보존한다', async () => { + const { root, dataPath } = await fixture(); + await fs.writeFile( + path.join(root, 'README.md'), + '# Header\r\n\r\n\r\nold\r\n\r\n\r\n## Footer\r\n', + ); + run(root, { WORKERS_CHART_INPUT_JSON: dataPath }); + const readme = await fs.readFile(path.join(root, 'README.md'), 'utf8'); + expect(readme.startsWith('# Header\n\n')).toBe(true); + expect(readme.endsWith('\n\n## Footer\n')).toBe(true); + expect(readme).toContain('Worker 실행 + 루트 GET 리디렉션 요청'); + }); +}); diff --git a/tests/scripts/workers-chart-retention.test.ts b/tests/scripts/workers-chart-retention.test.ts new file mode 100644 index 00000000..9fac4c65 --- /dev/null +++ b/tests/scripts/workers-chart-retention.test.ts @@ -0,0 +1,106 @@ +import { describe, expect, it, vi } from 'vitest'; +import { fetchDailyWorkerInvocations } from '../../scripts/ops/workers-chart-data.ts'; + +const options = { + accountId: 'account', + apiToken: 'token', + scriptName: 'daiso-mcp', + startDateText: '2026-09-01', + endDateText: '2026-09-01', + zoneId: 'zone', + rootRedirectStart: new Date('2026-05-27T07:24:50.000Z'), + rootRequestsRetentionStart: new Date('2026-09-01T00:00:00.000Z'), +}; +function cache() { + return { + accountId: 'account', + scriptName: 'daiso-mcp', + timezone: 'Asia/Seoul', + metric: 'workersInvocationsAdaptive.requests + httpRequestsAdaptiveGroups.count', + coverageVersion: 1, + rootRedirect: { + zoneId: 'zone', + host: 'mcp.aka.page', + path: '/', + start: options.rootRedirectStart.toISOString(), + rootRequestsRetentionDays: 7, + }, + updatedAt: '2026-09-08T00:00:00.000Z', + points: [{ date: '2026-09-01', requests: 1234 }], + }; +} +function fetcher() { + return vi.fn(async (_url, init) => { + const root = JSON.parse(init.body).query.includes('RootGetRequests'); + return new Response( + JSON.stringify({ + data: { + viewer: root + ? { zones: [{ httpRequestsAdaptiveGroups: [{ count: 25 }] }] } + : { accounts: [{ workersInvocationsAdaptive: [{ sum: { requests: 100 } }] }] }, + }, + }), + ); + }); +} +describe('root GET retention', () => { + it.each(['2026-09-01T00:00:00Z', '2026-09-02T00:00:00Z'])( + '보존 경계 %s에서 완전한 과거 합계를 보존한다', + async (boundary) => { + const fetchImpl = fetcher(); + expect( + await fetchDailyWorkerInvocations({ + ...options, + rootRequestsRetentionStart: new Date(boundary), + previousPayload: cache(), + fetchImpl, + }), + ).toEqual(cache().points); + expect(fetchImpl).not.toHaveBeenCalled(); + }, + ); + it('전체 날짜를 조회할 수 있으면 캐시보다 최신 합계를 사용한다', async () => { + expect( + await fetchDailyWorkerInvocations({ + ...options, + rootRequestsRetentionStart: new Date('2026-08-31T15:00:00Z'), + previousPayload: cache(), + fetchImpl: fetcher(), + }), + ).toEqual([{ date: '2026-09-01', requests: 125 }]); + }); + it.each([ + undefined, + { ...cache(), accountId: 'other-account' }, + { ...cache(), accountId: undefined }, + { + ...cache(), + accountId: undefined, + coverageVersion: undefined, + updatedAt: '2026-09-02T00:00:00Z', + }, + { ...cache(), metric: 'workersInvocationsAdaptive.requests' }, + { ...cache(), scriptName: 'other' }, + { ...cache(), timezone: 'UTC' }, + { ...cache(), rootRedirect: { ...cache().rootRedirect, host: 'other' } }, + { ...cache(), points: [{ date: '2026-09-01', requests: -1 }] }, + ])('완전한 동일 출처 캐시가 없으면 부분 합계 출력을 거부한다', async (previousPayload) => { + await expect( + fetchDailyWorkerInvocations({ ...options, previousPayload, fetchImpl: fetcher() }), + ).rejects.toThrow('Incomplete daily traffic: 2026-09-01'); + }); + it('기존 스냅샷도 관측 시점에 완전한 창이었을 때만 사용한다', async () => { + const previousPayload = { + ...cache(), + coverageVersion: undefined, + updatedAt: '2026-09-02T00:00:00Z', + }; + expect( + await fetchDailyWorkerInvocations({ ...options, previousPayload, fetchImpl: fetcher() }), + ).toEqual(cache().points); + previousPayload.updatedAt = '2026-09-08T00:00:00Z'; + await expect( + fetchDailyWorkerInvocations({ ...options, previousPayload, fetchImpl: fetcher() }), + ).rejects.toThrow('Incomplete daily traffic'); + }); +}); From 9f88c7f934840160c44e3c5ab1ac52772e78fe1a Mon Sep 17 00:00:00 2001 From: hmmhmmhm Date: Wed, 9 Sep 2026 18:39:55 +0900 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20Home=20Assistant=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EC=8A=A4=ED=82=A4=EB=A7=88=20=ED=98=B8=ED=99=98?= =?UTF-8?q?=EC=84=B1=20=EB=B3=B5=EA=B5=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feedback/tools/submitDeveloperRequest.ts | 4 +- tests/services/feedback/index.test.ts | 2 +- tests/services/feedback/schema.test.ts | 58 +++++++++++++++++++ 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 tests/services/feedback/schema.test.ts diff --git a/src/services/feedback/tools/submitDeveloperRequest.ts b/src/services/feedback/tools/submitDeveloperRequest.ts index 2b6b536a..adeb16f5 100644 --- a/src/services/feedback/tools/submitDeveloperRequest.ts +++ b/src/services/feedback/tools/submitDeveloperRequest.ts @@ -11,7 +11,8 @@ const jsonValueSchema: z.ZodType = z.lazy(() => z.boolean(), z.null(), z.array(jsonValueSchema), - z.record(z.string(), jsonValueSchema), + // JSON 객체의 키는 항상 문자열이므로 HA가 지원하지 않는 중복 제약만 생략한다. + z.record(z.string(), jsonValueSchema).meta({ propertyNames: undefined }), ]), ); @@ -47,6 +48,7 @@ export function createSubmitDeveloperRequestTool(config: DeveloperRequestConfig) .describe('요청 출처'), userContext: z .record(z.string(), jsonValueSchema) + .meta({ propertyNames: undefined }) .optional() .describe('추가 컨텍스트 JSON'), }, diff --git a/tests/services/feedback/index.test.ts b/tests/services/feedback/index.test.ts index e72ab278..cddbe952 100644 --- a/tests/services/feedback/index.test.ts +++ b/tests/services/feedback/index.test.ts @@ -21,7 +21,7 @@ describe('createFeedbackService', () => { expect(service.getTools().map((tool) => tool.name)).toEqual(['submit_developer_request']); }); - it('Home Assistant가 변환할 수 있는 userContext JSON Schema를 생성한다', () => { + it('userContext JSON Schema에 재귀 JSON 값 정의를 포함한다', () => { const service = createFeedbackService(); const tool = service.getTools()[0]; if (!tool) throw new Error('submit_developer_request 도구가 없습니다.'); diff --git a/tests/services/feedback/schema.test.ts b/tests/services/feedback/schema.test.ts new file mode 100644 index 00000000..425cc4d4 --- /dev/null +++ b/tests/services/feedback/schema.test.ts @@ -0,0 +1,58 @@ +import { Client } from '@modelcontextprotocol/sdk/client/index.js'; +import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js'; +import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; +import { describe, expect, it } from 'vitest'; +import * as z from 'zod'; +import { ServiceRegistry } from '../../../src/core/registry.js'; +import { createFeedbackService } from '../../../src/services/feedback/index.js'; + +describe('개발자 요청 JSON Schema 호환성', () => { + it('실제 tools/list에서 Home Assistant가 거부하는 propertyNames를 내보내지 않는다', async () => { + const server = new McpServer({ name: 'schema-server', version: '1.0.0' }); + const client = new Client({ name: 'schema-client', version: '1.0.0' }); + const registry = new ServiceRegistry(); + registry.register(createFeedbackService); + registry.applyToServer(server); + const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair(); + + try { + await Promise.all([server.connect(serverTransport), client.connect(clientTransport)]); + const { tools } = await client.listTools(); + const schema = tools.find((tool) => tool.name === 'submit_developer_request')?.inputSchema; + expect(schema).toBeDefined(); + // HA 2026.9.0b0의 probatio 0.11.2는 재귀 참조를 지원하지만 propertyNames는 거부한다. + expect(JSON.stringify(schema)).not.toContain('"propertyNames"'); + expect(schema?.properties?.userContext).toMatchObject({ + type: 'object', + additionalProperties: { $ref: expect.stringMatching(/^#\/definitions\//) }, + }); + } finally { + await client.close(); + await server.close(); + } + }); + + it('임의 키와 중첩 JSON 값을 그대로 보존한다', () => { + const tool = createFeedbackService().getTools()[0]; + const schema = z.object(tool.metadata.inputSchema); + const userContext = { + '': [{ nested: [null, true, false, 2, 1.5, 'text', {}, []] }], + '한글 키': { child: { value: 'preserved' } }, + }; + expect(schema.parse({ title: '제목', description: '설명', userContext }).userContext).toEqual( + userContext, + ); + }); + + it.each([undefined, () => 'value', Symbol('value'), 1n, NaN, Infinity, new Date()])( + '중첩된 비 JSON 값 %s를 거부한다', + (value) => { + const tool = createFeedbackService().getTools()[0]; + const schema = z.object(tool.metadata.inputSchema); + expect( + schema.safeParse({ title: '제목', description: '설명', userContext: { nested: { value } } }) + .success, + ).toBe(false); + }, + ); +}); From 8ad6b0ba858b509d883eeacf5975aea792d1c1cf Mon Sep 17 00:00:00 2001 From: hmmhmmhm Date: Wed, 9 Sep 2026 18:39:56 +0900 Subject: [PATCH 3/4] =?UTF-8?q?chore:=20=EC=B7=A8=EC=95=BD=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=EC=9D=84=20=EB=B3=B4=EC=95=88=20=ED=8C=A8?= =?UTF-8?q?=EC=B9=98=20=EB=B2=84=EC=A0=84=EC=9C=BC=EB=A1=9C=20=EA=B0=B1?= =?UTF-8?q?=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 915 +++++++++++------------- package.json | 11 +- tests/scripts/repository-config.test.ts | 4 +- 3 files changed, 429 insertions(+), 501 deletions(-) diff --git a/package-lock.json b/package-lock.json index 64a4b4a1..82879eda 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.29.0", - "hono": "^4.12.32", + "hono": "^4.13.7", "proj4": "^2.20.9", "workers-mcp": "^0.0.13" }, @@ -22,18 +22,18 @@ "@cloudflare/workers-types": "^5.20260724.1", "@eslint/js": "^10.0.1", "@types/node": "^26.1.0", - "@vitest/coverage-v8": "^4.1.7", + "@vitest/coverage-v8": "^4.1.11", "eslint": "^10.8.0", "eslint-config-prettier": "^10.1.8", "globals": "^17.7.0", "jiti": "^2.7.0", "playwright": "^1.62.0", "prettier": "^3.9.6", - "sharp": "^0.35.3", + "sharp": "^0.35.4", "tsx": "^4.23.1", "typescript": "6.0.3", "typescript-eslint": "^8.65.0", - "vitest": "^4.1.7", + "vitest": "^4.1.11", "wrangler": "^4.114.0" }, "engines": { @@ -165,9 +165,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -185,9 +182,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -205,9 +199,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -225,9 +216,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -408,7 +396,8 @@ "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-5.20260724.1.tgz", "integrity": "sha512-gl0brZ60JhkZU3INgr1jsxaFEiWf3AB9RsCjLTMwT5RKspWRUpsFd0wxwbys7gb8Ywkfq9tORhw0y9G+7bDUYw==", "dev": true, - "license": "MIT OR Apache-2.0" + "license": "MIT OR Apache-2.0", + "peer": true }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", @@ -423,33 +412,10 @@ "node": ">=12" } }, - "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", "dev": true, "license": "MIT", "optional": true, @@ -1014,29 +980,43 @@ } }, "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, "engines": { "node": ">=18.18.0" } }, "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.1", + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1076,9 +1056,9 @@ } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.3.tgz", - "integrity": "sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.4.tgz", + "integrity": "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==", "cpu": [ "arm64" ], @@ -1095,13 +1075,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.3.2" + "@img/sharp-libvips-darwin-arm64": "1.3.3" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.3.tgz", - "integrity": "sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.4.tgz", + "integrity": "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==", "cpu": [ "x64" ], @@ -1118,13 +1098,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.3.2" + "@img/sharp-libvips-darwin-x64": "1.3.3" } }, "node_modules/@img/sharp-freebsd-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.3.tgz", - "integrity": "sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.4.tgz", + "integrity": "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -1132,7 +1112,7 @@ "freebsd" ], "dependencies": { - "@img/sharp-wasm32": "0.35.3" + "@img/sharp-wasm32": "0.35.4" }, "engines": { "node": ">=20.9.0" @@ -1142,9 +1122,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.2.tgz", - "integrity": "sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.3.tgz", + "integrity": "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==", "cpu": [ "arm64" ], @@ -1159,9 +1139,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.2.tgz", - "integrity": "sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.3.tgz", + "integrity": "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==", "cpu": [ "x64" ], @@ -1176,9 +1156,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.2.tgz", - "integrity": "sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.3.tgz", + "integrity": "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==", "cpu": [ "arm" ], @@ -1193,9 +1173,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.2.tgz", - "integrity": "sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.3.tgz", + "integrity": "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==", "cpu": [ "arm64" ], @@ -1210,9 +1190,9 @@ } }, "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.2.tgz", - "integrity": "sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.3.tgz", + "integrity": "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==", "cpu": [ "ppc64" ], @@ -1227,9 +1207,9 @@ } }, "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.2.tgz", - "integrity": "sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.3.tgz", + "integrity": "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==", "cpu": [ "riscv64" ], @@ -1244,9 +1224,9 @@ } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.2.tgz", - "integrity": "sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.3.tgz", + "integrity": "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==", "cpu": [ "s390x" ], @@ -1261,9 +1241,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.2.tgz", - "integrity": "sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.3.tgz", + "integrity": "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==", "cpu": [ "x64" ], @@ -1278,9 +1258,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.2.tgz", - "integrity": "sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.3.tgz", + "integrity": "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==", "cpu": [ "arm64" ], @@ -1295,9 +1275,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.2.tgz", - "integrity": "sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.3.tgz", + "integrity": "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==", "cpu": [ "x64" ], @@ -1312,9 +1292,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.3.tgz", - "integrity": "sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.4.tgz", + "integrity": "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==", "cpu": [ "arm" ], @@ -1331,13 +1311,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.3.2" + "@img/sharp-libvips-linux-arm": "1.3.3" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.3.tgz", - "integrity": "sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.4.tgz", + "integrity": "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==", "cpu": [ "arm64" ], @@ -1354,13 +1334,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.3.2" + "@img/sharp-libvips-linux-arm64": "1.3.3" } }, "node_modules/@img/sharp-linux-ppc64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.3.tgz", - "integrity": "sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.4.tgz", + "integrity": "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==", "cpu": [ "ppc64" ], @@ -1377,13 +1357,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.3.2" + "@img/sharp-libvips-linux-ppc64": "1.3.3" } }, "node_modules/@img/sharp-linux-riscv64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.3.tgz", - "integrity": "sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.4.tgz", + "integrity": "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==", "cpu": [ "riscv64" ], @@ -1400,13 +1380,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.3.2" + "@img/sharp-libvips-linux-riscv64": "1.3.3" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.3.tgz", - "integrity": "sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.4.tgz", + "integrity": "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==", "cpu": [ "s390x" ], @@ -1423,13 +1403,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.3.2" + "@img/sharp-libvips-linux-s390x": "1.3.3" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.3.tgz", - "integrity": "sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.4.tgz", + "integrity": "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==", "cpu": [ "x64" ], @@ -1446,13 +1426,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.3.2" + "@img/sharp-libvips-linux-x64": "1.3.3" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.3.tgz", - "integrity": "sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.4.tgz", + "integrity": "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==", "cpu": [ "arm64" ], @@ -1469,13 +1449,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.3.2" + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.3.tgz", - "integrity": "sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.4.tgz", + "integrity": "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==", "cpu": [ "x64" ], @@ -1492,18 +1472,18 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.3.2" + "@img/sharp-libvips-linuxmusl-x64": "1.3.3" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.3.tgz", - "integrity": "sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz", + "integrity": "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==", "dev": true, "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "@emnapi/runtime": "^1.11.1" + "@emnapi/runtime": "^1.11.3" }, "engines": { "node": ">=20.9.0" @@ -1512,21 +1492,10 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@img/sharp-wasm32/node_modules/@emnapi/runtime": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz", - "integrity": "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@img/sharp-webcontainers-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.3.tgz", - "integrity": "sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.4.tgz", + "integrity": "sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==", "cpu": [ "wasm32" ], @@ -1534,7 +1503,7 @@ "license": "Apache-2.0", "optional": true, "dependencies": { - "@img/sharp-wasm32": "0.35.3" + "@img/sharp-wasm32": "0.35.4" }, "engines": { "node": ">=20.9.0" @@ -1544,9 +1513,9 @@ } }, "node_modules/@img/sharp-win32-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.3.tgz", - "integrity": "sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.4.tgz", + "integrity": "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==", "cpu": [ "arm64" ], @@ -1564,9 +1533,9 @@ } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.3.tgz", - "integrity": "sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.4.tgz", + "integrity": "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==", "cpu": [ "ia32" ], @@ -1584,9 +1553,9 @@ } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.3.tgz", - "integrity": "sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.4.tgz", + "integrity": "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==", "cpu": [ "x64" ], @@ -1683,25 +1652,6 @@ } } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1738,13 +1688,13 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.139.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz", - "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==", + "version": "0.148.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.148.0.tgz", + "integrity": "sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A==", "dev": true, "license": "MIT", "funding": { - "url": "https://github.com/sponsors/Boshen" + "url": "https://github.com/sponsors/oxc-project" } }, "node_modules/@poppinss/colors": { @@ -1789,10 +1739,27 @@ "dev": true, "license": "MIT" }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.7.tgz", + "integrity": "sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz", - "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.7.tgz", + "integrity": "sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw==", "cpu": [ "arm64" ], @@ -1807,9 +1774,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", - "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.7.tgz", + "integrity": "sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw==", "cpu": [ "arm64" ], @@ -1824,9 +1791,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", - "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.7.tgz", + "integrity": "sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ==", "cpu": [ "x64" ], @@ -1841,9 +1808,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz", - "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.7.tgz", + "integrity": "sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA==", "cpu": [ "x64" ], @@ -1858,9 +1825,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz", - "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.7.tgz", + "integrity": "sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ==", "cpu": [ "arm" ], @@ -1875,16 +1842,13 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", - "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.7.tgz", + "integrity": "sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg==", "cpu": [ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1895,16 +1859,13 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", - "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.7.tgz", + "integrity": "sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q==", "cpu": [ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1915,16 +1876,13 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz", - "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.7.tgz", + "integrity": "sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg==", "cpu": [ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1935,16 +1893,13 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz", - "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.7.tgz", + "integrity": "sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw==", "cpu": [ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1955,16 +1910,13 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", - "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.7.tgz", + "integrity": "sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA==", "cpu": [ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1975,16 +1927,13 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", - "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.7.tgz", + "integrity": "sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw==", "cpu": [ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1995,9 +1944,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz", - "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.7.tgz", + "integrity": "sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w==", "cpu": [ "arm64" ], @@ -2011,29 +1960,10 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz", - "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", - "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.7.tgz", + "integrity": "sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw==", "cpu": [ "arm64" ], @@ -2048,9 +1978,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", - "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.7.tgz", + "integrity": "sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw==", "cpu": [ "x64" ], @@ -2104,17 +2034,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -2165,6 +2084,7 @@ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", "license": "MIT", + "peer": true, "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" @@ -2182,6 +2102,7 @@ "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~8.3.0" } @@ -2231,6 +2152,7 @@ "integrity": "sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.65.0", "@typescript-eslint/types": "8.65.0", @@ -2417,14 +2339,15 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.10.tgz", - "integrity": "sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.11.tgz", + "integrity": "sha512-8MVGEFnJIcdGjcbfKmeq8z0pZHH0JlVtoVZH9Q/qwUp6wyFnEJUBMrw9DCaj+ra3vShGmhavjalMIhPNxZAUcw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.1.10", + "@vitest/utils": "4.1.11", "ast-v8-to-istanbul": "^1.0.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", @@ -2438,8 +2361,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.1.10", - "vitest": "4.1.10" + "@vitest/browser": "4.1.11", + "vitest": "4.1.11" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -2448,16 +2371,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", - "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz", + "integrity": "sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.10", - "@vitest/utils": "4.1.10", + "@vitest/spy": "4.1.11", + "@vitest/utils": "4.1.11", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -2466,13 +2389,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz", - "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.11.tgz", + "integrity": "sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.10", + "@vitest/spy": "4.1.11", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -2493,9 +2416,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz", - "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.11.tgz", + "integrity": "sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==", "dev": true, "license": "MIT", "dependencies": { @@ -2506,13 +2429,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz", - "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz", + "integrity": "sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.10", + "@vitest/utils": "4.1.11", "pathe": "^2.0.3" }, "funding": { @@ -2520,14 +2443,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz", - "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz", + "integrity": "sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.10", - "@vitest/utils": "4.1.10", + "@vitest/pretty-format": "4.1.11", + "@vitest/utils": "4.1.11", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -2536,9 +2459,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz", - "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz", + "integrity": "sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==", "dev": true, "license": "MIT", "funding": { @@ -2546,13 +2469,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz", - "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.11.tgz", + "integrity": "sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.10", + "@vitest/pretty-format": "4.1.11", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -2579,6 +2502,7 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2738,9 +2662,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz", - "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "license": "MIT", "dependencies": { @@ -3060,16 +2984,16 @@ } }, "node_modules/es-module-lexer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", - "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -3144,6 +3068,7 @@ "integrity": "sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==", "dev": true, "license": "MIT", + "peer": true, "workspaces": [ "packages/*" ], @@ -3387,9 +3312,9 @@ } }, "node_modules/expect-type": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", - "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3401,6 +3326,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -3494,9 +3420,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz", - "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz", + "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==", "funding": [ { "type": "github", @@ -3781,9 +3707,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3793,10 +3719,11 @@ } }, "node_modules/hono": { - "version": "4.12.32", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.32.tgz", - "integrity": "sha512-XcuyW9qE2kJn07PkecMOBd5Vq/hMy7mmGw+idz1yblbg9N17ijJODrvPkn7/dwL3Kulj8LcRJ69DLOWf91dRUg==", + "version": "4.13.7", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.7.tgz", + "integrity": "sha512-c8/gF9ac8Y78/agExVocyLevgR+JlpNB444Py0FSX8pJoPdYUfUzRcXtYEYGwt6l19qIlVZPN5Mfsw9jFShmQQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=16.9.0" } @@ -3871,9 +3798,9 @@ "license": "ISC" }, "node_modules/ip-address": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", - "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.0.tgz", + "integrity": "sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA==", "license": "MIT", "engines": { "node": ">= 12" @@ -3975,6 +3902,7 @@ "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -4162,9 +4090,9 @@ } }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -4178,23 +4106,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -4213,9 +4141,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -4234,9 +4162,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -4255,9 +4183,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -4276,9 +4204,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -4297,16 +4225,13 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -4321,16 +4246,13 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -4345,16 +4267,13 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -4369,16 +4288,13 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -4393,9 +4309,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -4414,9 +4330,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -4528,6 +4444,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -4707,9 +4624,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.16", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", - "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "dev": true, "funding": [ { @@ -4828,15 +4745,18 @@ } }, "node_modules/obug": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.2.1.tgz", + "integrity": "sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==", "dev": true, "funding": [ "https://github.com/sponsors/sxzz", "https://opencollective.com/debug" ], - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } }, "node_modules/on-finished": { "version": "2.4.1", @@ -5029,9 +4949,9 @@ } }, "node_modules/postcss": { - "version": "8.5.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.18.tgz", - "integrity": "sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==", + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", "dev": true, "funding": [ { @@ -5049,7 +4969,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.12", + "nanoid": "^3.3.18", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -5137,12 +5057,13 @@ } }, "node_modules/qs": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", - "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz", + "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" }, "engines": { "node": ">=0.6" @@ -5224,13 +5145,13 @@ } }, "node_modules/rolldown": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", - "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.7.tgz", + "integrity": "sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.139.0", + "@oxc-project/types": "=0.148.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -5240,21 +5161,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.5", - "@rolldown/binding-darwin-arm64": "1.1.5", - "@rolldown/binding-darwin-x64": "1.1.5", - "@rolldown/binding-freebsd-x64": "1.1.5", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", - "@rolldown/binding-linux-arm64-gnu": "1.1.5", - "@rolldown/binding-linux-arm64-musl": "1.1.5", - "@rolldown/binding-linux-ppc64-gnu": "1.1.5", - "@rolldown/binding-linux-s390x-gnu": "1.1.5", - "@rolldown/binding-linux-x64-gnu": "1.1.5", - "@rolldown/binding-linux-x64-musl": "1.1.5", - "@rolldown/binding-openharmony-arm64": "1.1.5", - "@rolldown/binding-wasm32-wasi": "1.1.5", - "@rolldown/binding-win32-arm64-msvc": "1.1.5", - "@rolldown/binding-win32-x64-msvc": "1.1.5" + "@rolldown/binding-android-arm-eabi": "1.2.7", + "@rolldown/binding-android-arm64": "1.2.7", + "@rolldown/binding-darwin-arm64": "1.2.7", + "@rolldown/binding-darwin-x64": "1.2.7", + "@rolldown/binding-freebsd-x64": "1.2.7", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.7", + "@rolldown/binding-linux-arm64-gnu": "1.2.7", + "@rolldown/binding-linux-arm64-musl": "1.2.7", + "@rolldown/binding-linux-ppc64-gnu": "1.2.7", + "@rolldown/binding-linux-s390x-gnu": "1.2.7", + "@rolldown/binding-linux-x64-gnu": "1.2.7", + "@rolldown/binding-linux-x64-musl": "1.2.7", + "@rolldown/binding-openharmony-arm64": "1.2.7", + "@rolldown/binding-win32-arm64-msvc": "1.2.7", + "@rolldown/binding-win32-x64-msvc": "1.2.7" } }, "node_modules/router": { @@ -5367,9 +5288,9 @@ "license": "ISC" }, "node_modules/sharp": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.3.tgz", - "integrity": "sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.4.tgz", + "integrity": "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5384,31 +5305,31 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.35.3", - "@img/sharp-darwin-x64": "0.35.3", - "@img/sharp-freebsd-wasm32": "0.35.3", - "@img/sharp-libvips-darwin-arm64": "1.3.2", - "@img/sharp-libvips-darwin-x64": "1.3.2", - "@img/sharp-libvips-linux-arm": "1.3.2", - "@img/sharp-libvips-linux-arm64": "1.3.2", - "@img/sharp-libvips-linux-ppc64": "1.3.2", - "@img/sharp-libvips-linux-riscv64": "1.3.2", - "@img/sharp-libvips-linux-s390x": "1.3.2", - "@img/sharp-libvips-linux-x64": "1.3.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.3.2", - "@img/sharp-libvips-linuxmusl-x64": "1.3.2", - "@img/sharp-linux-arm": "0.35.3", - "@img/sharp-linux-arm64": "0.35.3", - "@img/sharp-linux-ppc64": "0.35.3", - "@img/sharp-linux-riscv64": "0.35.3", - "@img/sharp-linux-s390x": "0.35.3", - "@img/sharp-linux-x64": "0.35.3", - "@img/sharp-linuxmusl-arm64": "0.35.3", - "@img/sharp-linuxmusl-x64": "0.35.3", - "@img/sharp-webcontainers-wasm32": "0.35.3", - "@img/sharp-win32-arm64": "0.35.3", - "@img/sharp-win32-ia32": "0.35.3", - "@img/sharp-win32-x64": "0.35.3" + "@img/sharp-darwin-arm64": "0.35.4", + "@img/sharp-darwin-x64": "0.35.4", + "@img/sharp-freebsd-wasm32": "0.35.4", + "@img/sharp-libvips-darwin-arm64": "1.3.3", + "@img/sharp-libvips-darwin-x64": "1.3.3", + "@img/sharp-libvips-linux-arm": "1.3.3", + "@img/sharp-libvips-linux-arm64": "1.3.3", + "@img/sharp-libvips-linux-ppc64": "1.3.3", + "@img/sharp-libvips-linux-riscv64": "1.3.3", + "@img/sharp-libvips-linux-s390x": "1.3.3", + "@img/sharp-libvips-linux-x64": "1.3.3", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", + "@img/sharp-libvips-linuxmusl-x64": "1.3.3", + "@img/sharp-linux-arm": "0.35.4", + "@img/sharp-linux-arm64": "0.35.4", + "@img/sharp-linux-ppc64": "0.35.4", + "@img/sharp-linux-riscv64": "0.35.4", + "@img/sharp-linux-s390x": "0.35.4", + "@img/sharp-linux-x64": "0.35.4", + "@img/sharp-linuxmusl-arm64": "0.35.4", + "@img/sharp-linuxmusl-x64": "0.35.4", + "@img/sharp-webcontainers-wasm32": "0.35.4", + "@img/sharp-win32-arm64": "0.35.4", + "@img/sharp-win32-ia32": "0.35.4", + "@img/sharp-win32-x64": "0.35.4" }, "peerDependenciesMeta": { "@types/node": { @@ -5438,14 +5359,14 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, @@ -5457,13 +5378,13 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -5549,9 +5470,9 @@ } }, "node_modules/std-env": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", - "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz", + "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==", "dev": true, "license": "MIT" }, @@ -5588,9 +5509,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.2.tgz", - "integrity": "sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz", + "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==", "dev": true, "license": "MIT", "engines": { @@ -5638,6 +5559,7 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -5646,9 +5568,9 @@ } }, "node_modules/tinyrainbow": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.1.tgz", + "integrity": "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==", "dev": true, "license": "MIT", "engines": { @@ -5808,6 +5730,7 @@ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5853,9 +5776,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", - "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.1.tgz", + "integrity": "sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==", "dev": true, "license": "MIT", "engines": { @@ -5875,6 +5798,7 @@ "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "pathe": "^2.0.3" } @@ -5917,16 +5841,16 @@ } }, "node_modules/vite": { - "version": "8.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.4.tgz", - "integrity": "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.2.tgz", + "integrity": "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==", "dev": true, "license": "MIT", "dependencies": { - "lightningcss": "^1.32.0", + "lightningcss": "^1.33.0", "picomatch": "^4.0.5", - "postcss": "^8.5.16", - "rolldown": "~1.1.4", + "postcss": "^8.5.26", + "rolldown": "~1.2.4", "tinyglobby": "^0.2.17" }, "bin": { @@ -5943,7 +5867,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", + "@vitejs/devtools": "^0.4.0 || ^0.5.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -5995,9 +5919,9 @@ } }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, "license": "MIT", "engines": { @@ -6008,19 +5932,20 @@ } }, "node_modules/vitest": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz", - "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.11.tgz", + "integrity": "sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@vitest/expect": "4.1.10", - "@vitest/mocker": "4.1.10", - "@vitest/pretty-format": "4.1.10", - "@vitest/runner": "4.1.10", - "@vitest/snapshot": "4.1.10", - "@vitest/spy": "4.1.10", - "@vitest/utils": "4.1.10", + "@vitest/expect": "4.1.11", + "@vitest/mocker": "4.1.11", + "@vitest/pretty-format": "4.1.11", + "@vitest/runner": "4.1.11", + "@vitest/snapshot": "4.1.11", + "@vitest/spy": "4.1.11", + "@vitest/utils": "4.1.11", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -6048,12 +5973,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.10", - "@vitest/browser-preview": "4.1.10", - "@vitest/browser-webdriverio": "4.1.10", - "@vitest/coverage-istanbul": "4.1.10", - "@vitest/coverage-v8": "4.1.10", - "@vitest/ui": "4.1.10", + "@vitest/browser-playwright": "4.1.11", + "@vitest/browser-preview": "4.1.11", + "@vitest/browser-webdriverio": "4.1.11", + "@vitest/coverage-istanbul": "4.1.11", + "@vitest/coverage-v8": "4.1.11", + "@vitest/ui": "4.1.11", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -6098,9 +6023,9 @@ } }, "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, "license": "MIT", "engines": { @@ -6177,6 +6102,7 @@ "dev": true, "hasInstallScript": true, "license": "Apache-2.0", + "peer": true, "bin": { "workerd": "bin/workerd" }, @@ -6351,6 +6277,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index a96a9c9a..80174b5b 100644 --- a/package.json +++ b/package.json @@ -84,18 +84,18 @@ "@cloudflare/workers-types": "^5.20260724.1", "@eslint/js": "^10.0.1", "@types/node": "^26.1.0", - "@vitest/coverage-v8": "^4.1.7", + "@vitest/coverage-v8": "^4.1.11", "eslint": "^10.8.0", "eslint-config-prettier": "^10.1.8", "globals": "^17.7.0", "jiti": "^2.7.0", "playwright": "^1.62.0", "prettier": "^3.9.6", - "sharp": "^0.35.3", + "sharp": "^0.35.4", "tsx": "^4.23.1", "typescript": "6.0.3", "typescript-eslint": "^8.65.0", - "vitest": "^4.1.7", + "vitest": "^4.1.11", "wrangler": "^4.114.0" }, "overrides": { @@ -103,12 +103,13 @@ "@hono/node-server": "2.0.11" }, "miniflare": { - "sharp": "0.35.3" + "sharp": "0.35.4", + "undici": "7.29.1" } }, "dependencies": { "@modelcontextprotocol/sdk": "^1.29.0", - "hono": "^4.12.32", + "hono": "^4.13.7", "proj4": "^2.20.9", "workers-mcp": "^0.0.13" } diff --git a/tests/scripts/repository-config.test.ts b/tests/scripts/repository-config.test.ts index 82571bd1..9e36c4f5 100644 --- a/tests/scripts/repository-config.test.ts +++ b/tests/scripts/repository-config.test.ts @@ -16,7 +16,7 @@ const setupNodeWorkflows = [ ]; function readText(path: string): string { - return readFileSync(path, 'utf8'); + return readFileSync(path, 'utf8').replaceAll('\r\n', '\n'); } describe('repository maintenance configuration', () => { @@ -62,7 +62,7 @@ describe('repository maintenance configuration', () => { overrides?: Record>; }; - expect(pkg.overrides?.miniflare).toEqual({ sharp: '0.35.3' }); + expect(pkg.overrides?.miniflare).toEqual({ sharp: '0.35.4', undici: '7.29.1' }); }); it('brace-expansion은 취약점이 수정된 5.0.8 이상을 사용한다', () => { From c18a61424d46b8bfa97f732b73a290aa75b62ae0 Mon Sep 17 00:00:00 2001 From: hmmhmmhm Date: Wed, 9 Sep 2026 18:39:56 +0900 Subject: [PATCH 4/4] =?UTF-8?q?test:=20Windows=20CLI=20=EA=B2=BD=EB=A1=9C?= =?UTF-8?q?=20=ED=8C=90=EB=B3=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/app/cli.test.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/app/cli.test.ts b/tests/app/cli.test.ts index bcb58094..a7ebd952 100644 --- a/tests/app/cli.test.ts +++ b/tests/app/cli.test.ts @@ -3,6 +3,8 @@ */ import { describe, expect, it, vi } from 'vitest'; +import { resolve } from 'node:path'; +import { pathToFileURL } from 'node:url'; import { isDirectExecution, runCli } from '../../src/cli.js'; import { COMMAND_DETAIL, @@ -1286,8 +1288,10 @@ describe('CLI', () => { }); it('직접 실행 여부를 올바르게 판별한다', () => { - expect(isDirectExecution('', 'file:///tmp/test.js')).toBe(false); - expect(isDirectExecution('/tmp/test.js', 'file:///tmp/test.js')).toBe(true); - expect(isDirectExecution('/tmp/other.js', 'file:///tmp/test.js')).toBe(false); + const scriptPath = resolve('tmp/test.js'); + const scriptUrl = pathToFileURL(scriptPath).href; + expect(isDirectExecution('', scriptUrl)).toBe(false); + expect(isDirectExecution(scriptPath, scriptUrl)).toBe(true); + expect(isDirectExecution(resolve('tmp/other.js'), scriptUrl)).toBe(false); }); });