From 7c66e351f90f324e69b1a7e0ae412218c895424a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= Date: Wed, 12 Nov 2025 16:03:57 +0700 Subject: [PATCH 1/9] Simplify conditional expressions in reading utilities Refactored multiple functions to use concise conditional expressions, improving readability and reducing code verbosity. These changes enhance maintainability without altering existing functionality. --- src/read/digits.ts | 3 +-- src/read/groups.ts | 28 +++++++++++----------------- src/read/three-digits.ts | 28 +++++++++++----------------- src/read/utils.ts | 2 ++ 4 files changed, 25 insertions(+), 36 deletions(-) diff --git a/src/read/digits.ts b/src/read/digits.ts index 9b3ba5b..c12ac96 100644 --- a/src/read/digits.ts +++ b/src/read/digits.ts @@ -18,6 +18,5 @@ const DIGIT_MAP: readonly string[] = [ * Get Vietnamese word for a digit */ export function getDigitWord(digit: string): string { - const d = Number(digit) - return DIGIT_MAP[d] || '' + return DIGIT_MAP[Number(digit)] || '' } diff --git a/src/read/groups.ts b/src/read/groups.ts index c48f5b5..f251ebb 100644 --- a/src/read/groups.ts +++ b/src/read/groups.ts @@ -11,11 +11,13 @@ import { allFollowingGroupsAreZero } from './utils.ts' */ export function calculateGroupTypes(groupCount: number): number[] { const groupTypes: number[] = [] + for (let i = groupCount - 1, type = 0; i >= 0; i--) { groupTypes[i] = type type++ if (type === 4) type = 1 // cycle back after billion } + return groupTypes } @@ -101,21 +103,13 @@ export function processGroup( const positionFromRight = groups.length - 1 - index const hasTrailingZeros = allFollowingGroupsAreZero(groups, index) - if (index === 0) { - const nextGroupType = groups.length > 1 ? groupTypes[1] : -1 - return processFirstGroup( - group, - type, - nextGroupType, - positionFromRight, - hasTrailingZeros, - ) - } - - return processSubsequentGroup( - group, - type, - positionFromRight, - hasTrailingZeros, - ) + return index === 0 + ? processFirstGroup( + group, + type, + groups.length > 1 ? groupTypes[1] : -1, // nextGroupType: the type of the next group to determine if we're before billion group + positionFromRight, + hasTrailingZeros, + ) + : processSubsequentGroup(group, type, positionFromRight, hasTrailingZeros) } diff --git a/src/read/three-digits.ts b/src/read/three-digits.ts index 69f350f..0008558 100644 --- a/src/read/three-digits.ts +++ b/src/read/three-digits.ts @@ -4,19 +4,20 @@ import { getDigitWord } from './digits.ts' * Read the "hundreds" digit */ function readHundreds(first: string, hasHundredsPosition: boolean): string { - if (!hasHundredsPosition) return '' - return `${getDigitWord(first)} trăm` + return !hasHundredsPosition ? '' : `${getDigitWord(first)} trăm` } /** * Read the "tens" digit */ function readTens(second: string, hasTensPosition: boolean): string { - if (!hasTensPosition) return '' - - if (second === '0') return ' lẻ' - if (second === '1') return ' mười' - return ` ${getDigitWord(second)} mươi` + return !hasTensPosition + ? '' + : second === '0' + ? ' lẻ' + : second === '1' + ? ' mười' + : ` ${getDigitWord(second)} mươi` } /** @@ -41,6 +42,7 @@ function readOnes( if (last !== '0') { return ` ${getDigitWord(last)}` } + return '' } @@ -94,20 +96,12 @@ export function readFirstGroupBeforeBillion(group: string): string { * Read the first group in the number sequence (normal case) */ export function readFirstGroup(group: string): string { - if (isAllZeros(group)) { - return 'không' - } - - return readThreeDigitsCore(group) + return isAllZeros(group) ? 'không' : readThreeDigitsCore(group) } /** * Read the later (non-first) group in the number sequence */ export function readSubsequentGroup(group: string): string { - if (isAllZeros(group)) { - return '' - } - - return readThreeDigitsCore(group) + return isAllZeros(group) ? '' : readThreeDigitsCore(group) } diff --git a/src/read/utils.ts b/src/read/utils.ts index 3c2e594..c9a4eec 100644 --- a/src/read/utils.ts +++ b/src/read/utils.ts @@ -23,9 +23,11 @@ export function allFollowingGroupsAreZero( ): boolean { for (let j = index + 1; j < groups.length; j++) { const g = groups[j] + if (g !== '000' && g !== '00' && g !== '0') { return false } } + return true } From a6581dafd57c1b9260ba7e8edcd5c67f0e7dab7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= Date: Wed, 12 Nov 2025 16:08:16 +0700 Subject: [PATCH 2/9] Refactor `readTens` function for conciseness Simplified the `readTens` function by replacing nested ternary operators with straightforward conditional statements. This improves readability and maintains the same functionality. --- src/read/three-digits.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/read/three-digits.ts b/src/read/three-digits.ts index 0008558..5573598 100644 --- a/src/read/three-digits.ts +++ b/src/read/three-digits.ts @@ -11,13 +11,11 @@ function readHundreds(first: string, hasHundredsPosition: boolean): string { * Read the "tens" digit */ function readTens(second: string, hasTensPosition: boolean): string { - return !hasTensPosition - ? '' - : second === '0' - ? ' lẻ' - : second === '1' - ? ' mười' - : ` ${getDigitWord(second)} mươi` + if (!hasTensPosition) return '' + + if (second === '0') return ' lẻ' + if (second === '1') return ' mười' + return ` ${getDigitWord(second)} mươi` } /** From 7a3e38164d57173846863bd5e69261eed7ad2fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= Date: Wed, 12 Nov 2025 16:11:26 +0700 Subject: [PATCH 3/9] Simplify conditional in `readHundreds` function Reversed the ternary operator condition to improve code clarity and consistency with other similar functions. This adjustment maintains the original functionality while enhancing readability. --- src/read/three-digits.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/read/three-digits.ts b/src/read/three-digits.ts index 5573598..760d023 100644 --- a/src/read/three-digits.ts +++ b/src/read/three-digits.ts @@ -4,7 +4,7 @@ import { getDigitWord } from './digits.ts' * Read the "hundreds" digit */ function readHundreds(first: string, hasHundredsPosition: boolean): string { - return !hasHundredsPosition ? '' : `${getDigitWord(first)} trăm` + return hasHundredsPosition ? `${getDigitWord(first)} trăm` : '' } /** From 55f2b90fcd103f821db5490aebdf3085c4400c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= Date: Wed, 12 Nov 2025 16:13:47 +0700 Subject: [PATCH 4/9] Refactor `readHundreds` function for clarity and flexibility Replaced the `hasHundredsPosition` parameter with `groupLength` to improve clarity and make the function more versatile. Updated dependent code to reflect this change and maintain consistent behavior. --- src/read/three-digits.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/read/three-digits.ts b/src/read/three-digits.ts index 760d023..6a4f69d 100644 --- a/src/read/three-digits.ts +++ b/src/read/three-digits.ts @@ -3,8 +3,8 @@ import { getDigitWord } from './digits.ts' /** * Read the "hundreds" digit */ -function readHundreds(first: string, hasHundredsPosition: boolean): string { - return hasHundredsPosition ? `${getDigitWord(first)} trăm` : '' +function readHundreds(first: string, groupLength: number): string { + return groupLength > 2 ? `${getDigitWord(first)} trăm` : '' } /** @@ -53,7 +53,7 @@ function readThreeDigitsCore(group: string): string { const second = len > 1 ? group[len - 2] : '0' const last = group[len - 1] || '0' - let result = readHundreds(first, len > 2) + let result = readHundreds(first, len) // If the last two digits are zero, return early if (second === '0' && last === '0') { From 190a8488c496668b7322fcc1220b06924efb5230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= Date: Wed, 12 Nov 2025 16:17:58 +0700 Subject: [PATCH 5/9] Clarify `hasTensPosition` variable usage in `read` function Renamed and refactored the variable `len > 1` to `hasTensPosition` for improved readability and intent clarity. Updated its usage across the function to enhance maintainability without changing the existing behavior. --- src/read/three-digits.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/read/three-digits.ts b/src/read/three-digits.ts index 6a4f69d..c349ed3 100644 --- a/src/read/three-digits.ts +++ b/src/read/three-digits.ts @@ -60,8 +60,9 @@ function readThreeDigitsCore(group: string): string { return result.trim() } - result += readTens(second, len > 1) - result += readOnes(last, second, len > 1) + const hasTensPosition = len > 1 + result += readTens(second, hasTensPosition) + result += readOnes(last, second, hasTensPosition) return result.trim() } From b8bf24e151b70909b815138c209e075c4e6a7dc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= Date: Wed, 12 Nov 2025 16:23:10 +0700 Subject: [PATCH 6/9] Refactor digit group processing for readability Improved code readability and consistency in functions handling Vietnamese number words. Simplified conditionals, standardized parameter usage, and enhanced formatting to ensure maintainability without altering functionality. --- .changeset/gold-guests-attack.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .changeset/gold-guests-attack.md diff --git a/.changeset/gold-guests-attack.md b/.changeset/gold-guests-attack.md new file mode 100644 index 0000000..56586c9 --- /dev/null +++ b/.changeset/gold-guests-attack.md @@ -0,0 +1,19 @@ +--- +"vn-number": patch +--- + +Refactor several functions related to reading and processing digit groups in Vietnamese number words. The changes focus on improving code readability, simplifying logic, and making parameter handling more consistent across functions. + +### Refactoring and Code Simplification + +* Refactored conditional logic in `readFirstGroup` and `readSubsequentGroup` to use concise ternary expressions instead of multi-line if statements, improving readability in `src/read/three-digits.ts`. +* Simplified the implementation of `getDigitWord` by removing the intermediate variable and directly returning the mapped value in `src/read/digits.ts`. + +### Consistent Parameter Handling + +* Updated `readHundreds` to use `groupLength` instead of a boolean flag, and adjusted calls to `readHundreds`, `readTens`, and `readOnes` to consistently use `groupLength` or derived flags, ensuring more predictable behavior in `src/read/three-digits.ts`. [[1]](diffhunk://#diff-3fec7bfdd409e9017a9411ada902007e8e4e09dfe468f1566e38e002a7b0a521L6-R7) [[2]](diffhunk://#diff-3fec7bfdd409e9017a9411ada902007e8e4e09dfe468f1566e38e002a7b0a521L56-R65) + +### Minor Code Quality Improvements + +* Added spacing and minor formatting improvements for readability in utility functions such as `allFollowingGroupsAreZero` in `src/read/utils.ts` and `calculateGroupTypes` in `src/read/groups.ts`. [[1]](diffhunk://#diff-3f1a9cf533aed941787f7a40ca3900d359c1da32f1bc1536d2380c3b4968dbb4R26-R31) [[2]](diffhunk://#diff-8c09ad2ec1c3b0524c8cdbfe07826bfc856285b756983a817f609404a880821aR14-R20) +* Refactored the logic in `processGroup` to use a concise conditional expression when choosing between processing the first group or subsequent groups in `src/read/groups.ts`. From f1674255ebed77ceeff77d29d0a53100d5b4a5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= Date: Wed, 12 Nov 2025 16:27:26 +0700 Subject: [PATCH 7/9] Update devDependencies in `package.json` and lockfile Upgraded several devDependencies including `@biomejs/biome`, `syncpack`, and `tsdown` to the latest versions. This ensures compatibility with the latest features and improvements while maintaining stability. Updated the `pnpm-lock.yaml` to reflect these changes. --- package.json | 6 +- pnpm-lock.yaml | 444 ++++++++++++++++++++++++++++++++++--------------- 2 files changed, 309 insertions(+), 141 deletions(-) diff --git a/package.json b/package.json index ecb5655..d08aeae 100644 --- a/package.json +++ b/package.json @@ -36,12 +36,12 @@ "test": "vitest" }, "devDependencies": { - "@biomejs/biome": "2.3.4", + "@biomejs/biome": "2.3.5", "@changesets/cli": "2.29.7", "@codspeed/vitest-plugin": "5.0.1", "@vitest/coverage-v8": "3.2.4", - "syncpack": "14.0.0-alpha.25", - "tsdown": "0.16.0", + "syncpack": "14.0.0-alpha.26", + "tsdown": "0.16.3", "typescript": "5.9.3", "vitest": "3.2.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 91d417f..2848b7c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@biomejs/biome': - specifier: 2.3.4 - version: 2.3.4 + specifier: 2.3.5 + version: 2.3.5 '@changesets/cli': specifier: 2.29.7 version: 2.29.7(@types/node@24.10.0) @@ -21,11 +21,11 @@ importers: specifier: 3.2.4 version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)) syncpack: - specifier: 14.0.0-alpha.25 - version: 14.0.0-alpha.25 + specifier: 14.0.0-alpha.26 + version: 14.0.0-alpha.26 tsdown: - specifier: 0.16.0 - version: 0.16.0(typescript@5.9.3) + specifier: 0.16.3 + version: 0.16.3(ms@2.1.3)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -138,41 +138,90 @@ packages: engines: {node: '>=14.21.3'} hasBin: true + '@biomejs/biome@2.3.5': + resolution: {integrity: sha512-HvLhNlIlBIbAV77VysRIBEwp55oM/QAjQEin74QQX9Xb259/XP/D5AGGnZMOyF1el4zcvlNYYR3AyTMUV3ILhg==} + engines: {node: '>=14.21.3'} + hasBin: true + '@biomejs/cli-darwin-arm64@2.3.4': resolution: {integrity: sha512-w40GvlNzLaqmuWYiDU6Ys9FNhJiclngKqcGld3iJIiy2bpJ0Q+8n3haiaC81uTPY/NA0d8Q/I3Z9+ajc14102Q==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] + '@biomejs/cli-darwin-arm64@2.3.5': + resolution: {integrity: sha512-fLdTur8cJU33HxHUUsii3GLx/TR0BsfQx8FkeqIiW33cGMtUD56fAtrh+2Fx1uhiCsVZlFh6iLKUU3pniZREQw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + '@biomejs/cli-darwin-x64@2.3.4': resolution: {integrity: sha512-3s7TLVtjJ7ni1xADXsS7x7GMUrLBZXg8SemXc3T0XLslzvqKj/dq1xGeBQ+pOWQzng9MaozfacIHdK2UlJ3jGA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] + '@biomejs/cli-darwin-x64@2.3.5': + resolution: {integrity: sha512-qpT8XDqeUlzrOW8zb4k3tjhT7rmvVRumhi2657I2aGcY4B+Ft5fNwDdZGACzn8zj7/K1fdWjgwYE3i2mSZ+vOA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + '@biomejs/cli-linux-arm64-musl@2.3.4': resolution: {integrity: sha512-IruVGQRwMURivWazchiq7gKAqZSFs5so6gi0hJyxk7x6HR+iwZbO2IxNOqyLURBvL06qkIHs7Wffl6Bw30vCbQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [musl] + + '@biomejs/cli-linux-arm64-musl@2.3.5': + resolution: {integrity: sha512-eGUG7+hcLgGnMNl1KHVZUYxahYAhC462jF/wQolqu4qso2MSk32Q+QrpN7eN4jAHAg7FUMIo897muIhK4hXhqg==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + libc: [musl] '@biomejs/cli-linux-arm64@2.3.4': resolution: {integrity: sha512-y7efHyyM2gYmHy/AdWEip+VgTMe9973aP7XYKPzu/j8JxnPHuSUXftzmPhkVw0lfm4ECGbdBdGD6+rLmTgNZaA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [glibc] + + '@biomejs/cli-linux-arm64@2.3.5': + resolution: {integrity: sha512-u/pybjTBPGBHB66ku4pK1gj+Dxgx7/+Z0jAriZISPX1ocTO8aHh8x8e7Kb1rB4Ms0nA/SzjtNOVJ4exVavQBCw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + libc: [glibc] '@biomejs/cli-linux-x64-musl@2.3.4': resolution: {integrity: sha512-mzKFFv/w66e4/jCobFmD3kymCqG+FuWE7sVa4Yjqd9v7qt2UhXo67MSZKY9Ih18V2IwPzRKQPCw6KwdZs6AXSA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [musl] + + '@biomejs/cli-linux-x64-musl@2.3.5': + resolution: {integrity: sha512-awVuycTPpVTH/+WDVnEEYSf6nbCBHf/4wB3lquwT7puhNg8R4XvonWNZzUsfHZrCkjkLhFH/vCZK5jHatD9FEg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + libc: [musl] '@biomejs/cli-linux-x64@2.3.4': resolution: {integrity: sha512-gKfjWR/6/dfIxPJCw8REdEowiXCkIpl9jycpNVHux8aX2yhWPLjydOshkDL6Y/82PcQJHn95VCj7J+BRcE5o1Q==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [glibc] + + '@biomejs/cli-linux-x64@2.3.5': + resolution: {integrity: sha512-XrIVi9YAW6ye0CGQ+yax0gLfx+BFOtKaNX74n+xHWla6Cl6huUmcKNO7HPx7BiKnJUzrxXY1qYlm7xMvi08X4g==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + libc: [glibc] '@biomejs/cli-win32-arm64@2.3.4': resolution: {integrity: sha512-5TJ6JfVez+yyupJ/iGUici2wzKf0RrSAxJhghQXtAEsc67OIpdwSKAQboemILrwKfHDi5s6mu7mX+VTCTUydkw==} @@ -180,12 +229,24 @@ packages: cpu: [arm64] os: [win32] + '@biomejs/cli-win32-arm64@2.3.5': + resolution: {integrity: sha512-DlBiMlBZZ9eIq4H7RimDSGsYcOtfOIfZOaI5CqsWiSlbTfqbPVfWtCf92wNzx8GNMbu1s7/g3ZZESr6+GwM/SA==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + '@biomejs/cli-win32-x64@2.3.4': resolution: {integrity: sha512-FGCijXecmC4IedQ0esdYNlMpx0Jxgf4zceCaMu6fkjWyjgn50ZQtMiqZZQ0Q/77yqPxvtkgZAvt5uGw0gAAjig==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] + '@biomejs/cli-win32-x64@2.3.5': + resolution: {integrity: sha512-nUmR8gb6yvrKhtRgzwo/gDimPwnO5a4sCydf8ZS2kHIJhEmSmk+STsusr1LHTuM//wXppBawvSQi2xFXJCdgKQ==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + '@changesets/apply-release-plan@7.0.13': resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} @@ -464,78 +525,92 @@ packages: resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.2.3': resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-ppc64@1.2.3': resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} cpu: [ppc64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.2.3': resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.2.3': resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.2.3': resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.2.3': resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linux-arm64@0.34.4': resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.34.4': resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-ppc64@0.34.4': resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.34.4': resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.34.4': resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linuxmusl-arm64@0.34.4': resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.34.4': resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-wasm32@0.34.4': resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} @@ -625,24 +700,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@next/swc-linux-arm64-musl@16.0.1': resolution: {integrity: sha512-UPnOvYg+fjAhP3b1iQStcYPWeBFRLrugEyK/lDKGk7kLNua8t5/DvDbAEFotfV1YfcOY6bru76qN9qnjLoyHCQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@next/swc-linux-x64-gnu@16.0.1': resolution: {integrity: sha512-Et81SdWkcRqAJziIgFtsFyJizHoWne4fzJkvjd6V4wEkWTB4MX6J0uByUb0peiJQ4WeAt6GGmMszE5KrXK6WKg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@next/swc-linux-x64-musl@16.0.1': resolution: {integrity: sha512-qBbgYEBRrC1egcG03FZaVfVxrJm8wBl7vr8UFKplnxNRprctdP26xEv9nJ07Ggq4y1adwa0nz2mz83CELY7N6Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@next/swc-win32-arm64-msvc@16.0.1': resolution: {integrity: sha512-cPuBjYP6I699/RdbHJonb3BiRNEDm5CKEBuJ6SD8k3oLam2fDRMKAvmrli4QMDgT2ixyRJ0+DTkiODbIQhRkeQ==} @@ -672,6 +751,10 @@ packages: resolution: {integrity: sha512-scSmQBD8eANlMUOglxHrN1JdSW8tDghsPuS83otqealBiIeMukCQMOf/wc0JJjDXomqwNdEQFLXLGHrU6PGxuA==} engines: {node: '>= 20.0.0'} + '@oxc-project/runtime@0.96.0': + resolution: {integrity: sha512-34lh4o9CcSw09Hx6fKihPu85+m+4pmDlkXwJrLvN5nMq5JrcGhhihVM415zDqT8j8IixO1PYYdQZRN4SwQCncg==} + engines: {node: ^20.19.0 || >=22.12.0} + '@oxc-project/types@0.96.0': resolution: {integrity: sha512-r/xkmoXA0xEpU6UGtn18CNVjXH6erU3KCpCDbpLmbVxBFor1U9MqN5Z2uMmCHJuXjJzlnDR+hWY+yPoLo8oHDw==} @@ -1038,91 +1121,95 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - '@rolldown/binding-android-arm64@1.0.0-beta.46': - resolution: {integrity: sha512-1nfXUqZ227uKuLw9S12OQZU5z+h+cUOXLW5orntWVxHWvt20pt1PGUcVoIU8ssngKABu0vzHY268kAxuYX24BQ==} + '@rolldown/binding-android-arm64@1.0.0-beta.49': + resolution: {integrity: sha512-xKQEOmqOet0vFHt/aqcoQGWvoDJhfSO8EBhuST0CDnxQRmnVzbI8keeeX62vi53ZyICKZxczyfx4A8dUY3dqKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.46': - resolution: {integrity: sha512-w4IyumCQkpA3ezZ37COG3mMusFYxjEE8zqCfXZU/qb5k1JMD2kVl0fgJafIbGli27tgelYMweXkJGnlrxSGT9Q==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.49': + resolution: {integrity: sha512-kN0N/8m8HUYO13PqlIwxcXD7fu2E6GKu0J4iH7wUJw3T3QK+nvrc20rxtTZ0J6sA1sGCE8UYvvvnurDwMUp0dg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.46': - resolution: {integrity: sha512-9QqaRHPbdAnv306+7nzltq4CktJ49Z4W9ybHLWYxSeDSoOGL4l1QmxjDWoRHrqYEkNr+DWHqqoD4NNHgOk7lKw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.49': + resolution: {integrity: sha512-29qmvsgY2A4ymfy8sQkFFOFc13m04SLUcYn1iil41gpkYrAspBLkvsOQMHPCs3rQCOImgweT4tFotqTAonwphQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.46': - resolution: {integrity: sha512-Cuk5opdEMb+Evi7QcGArc4hWVoHSGz/qyUUWLTpFJWjylb8wH1u4f+HZE6gVGACuf4w/5P/VhAIamHyweAbBVQ==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.49': + resolution: {integrity: sha512-fY+esrHjgt6+RAnDPuUk39RvFNmYhJekGyC6wr0HWXGTBed07Feap9BrYINSh6x5xFlNpOPs6tImKnV0zVDuWQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.46': - resolution: {integrity: sha512-BPWDxEnxb4JNMXrSmPuc5ywI6cHOELofmT0e/WGkbL1MwKYRVvqTf+gMcGLF6zAV+OF5hLYMAEk8XKfao6xmDQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.49': + resolution: {integrity: sha512-oQNAqB+XrRM2AZaSPyudQETsPhzCZqgPICQu80fJuNyBFYoz6nonNNZtm3BJ9uP+HZfUk9NfOn9vPoCNuk6gAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.46': - resolution: {integrity: sha512-CDQSVlryuRC955EwgbBK1h/6xQyttSxQG8+6/PeOfvUlfKGPMbBdcsOEHzGve5ED1Y7Ovh2UFjY/eT106aQqig==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.49': + resolution: {integrity: sha512-bJinAiuWUJvlBxPa8ZmRnWkmmAoUlSWtZT4pRkWi/QX3HlgHfUUbhF+d7aZLciai+iFfbiPqOwCL2tqNXXrUsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.46': - resolution: {integrity: sha512-6IZHycZetmVaC9zwcl1aA9fPYPuxLa5apALjJRoJu/2BZdER3zBWxDnCzlEh4SUlo++cwdfV9ZQRK9JS8cLNuA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.49': + resolution: {integrity: sha512-gwueY8EJU7afq5tNwKSjYy5JqTR/0MNzZfv6s5dX+rMgeUpTNhwIToLO1F41TPYEa+6LRTXUWG23DO/ONPzUJA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.46': - resolution: {integrity: sha512-R/kI8fMnsxXvWzcMv5A408hfvrwtAwD/HdQKIE1HKWmfxdSHB11Y3PVwlnt7RVo7I++6mWCIxxj5o3gut4ibEw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.49': + resolution: {integrity: sha512-VXYkjzzEZh5N5Ue1IEcBgL8RuJu5jWrIKmg8WY6hhCbnNJ1IOsObT4HFW+rE8ZaKNjoIXzImoiYi1UAkKiQRYA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.46': - resolution: {integrity: sha512-vGUXKuHGUlG2XBwvN4A8KIegeaVVxN2ZxdGG9thycwRkzUvZ9ccKvqUVZM8cVRyNRWgVgsGCS18qLUefVplwKw==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.49': + resolution: {integrity: sha512-S5Yw6g/ftiW7MpNpnOM5vSIlDzGuohDY8y7VOI47+92HhO6WqsNfcMkDZXm3G5l6YIfUNStGBV86NWrzasp+sw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.46': - resolution: {integrity: sha512-6SpDGH+0Dud3/RFDoC6fva6+Cm/0COnMRKR8kI4ssHWlCXPymlM59kYFCIBLZZqwURpNVVMPln4rWjxXuwD23w==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.49': + resolution: {integrity: sha512-bhRoMO2oP46W1UDd/PTrSdoIYfvLS2jiFAned0SOzOO0tcait9u+b9i8h4ZugbT2IK4qUXNezovbHJs7hKJOEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.46': - resolution: {integrity: sha512-peWDGp8YUAbTw5RJzr9AuPlTuf2adr+TBNIGF6ysMbobBKuQL41wYfGQlcerXJfLmjnQLf6DU2zTPBTfrS2Y8A==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.49': + resolution: {integrity: sha512-Owp6Y1RQ84UMOV8hrg5e1Fmu8Po1IUXWytAHUtPcc00+ty6Gr9g5GgLLw0oblu7QovBr4848ozvkMcEj3vDKgA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.46': - resolution: {integrity: sha512-Ydbwg1JCnVbTAuDyKtu3dOuBLgZ6iZsy8p1jMPX/r7LMPnpXnS15GNcmMwa11nyl/M2VjGE1i/MORUTMt8mnRQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.49': + resolution: {integrity: sha512-dnheX8aXsN9P12uwPOW3TVvqSnQ1cfjKQlYgU2dTkrRpnco0kTGvqE1nEWybGukTyuPdzVvrGElgSGEJ7crcSQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.46': - resolution: {integrity: sha512-XcPZG2uDxEn6G3takXQvi7xWgDiJqdC0N6mubL/giKD4I65zgQtbadwlIR8oDB/erOahZr5IX8cRBVcK3xcvpg==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.49': + resolution: {integrity: sha512-Blt1aODXiAuEdZBqHYXGJwVFlonXKkVEJy5hhxOgnAVi/0mzFNWDxc8qVlxl7dpQjQdboW/wXdgMHpTDfomicg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.46': - resolution: {integrity: sha512-VPC+F9S6nllv02aGG+gxHRgpOaOlYBPn94kDe9DCFSLOztf4uYIAkN+tLDlg5OcsOC8XNR5rP49zOfI0PfnHYw==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.49': + resolution: {integrity: sha512-sSu4qUlL/62QJrR3P+Bd+EblD8tUpnovUz65qow3PA7YxH+f5NFDbCJMR1m5b8zBuVZwZIHfzbuawz+Vl34/xg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.46': - resolution: {integrity: sha512-xMNwJo/pHkEP/mhNVnW+zUiJDle6/hxrwO0mfSJuEVRbBfgrJFuUSRoZx/nYUw5pCjrysl9OkNXCkAdih8GCnA==} + '@rolldown/pluginutils@1.0.0-beta.49': + resolution: {integrity: sha512-HLlu3Qn3ePmNCbfehwKWXQMzX/2rzcL6Jmpo+Dl3xnq46TGMyJAgO+IsS8ka7IDLeD3wcoOhjJwxTdIdbrFhGw==} '@rollup/rollup-android-arm-eabi@4.52.5': resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} @@ -1158,56 +1245,67 @@ packages: resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.52.5': resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.52.5': resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.52.5': resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.52.5': resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.52.5': resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.52.5': resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.52.5': resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.52.5': resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.52.5': resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.52.5': resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openharmony-arm64@4.52.5': resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} @@ -1323,24 +1421,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.1.17': resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.1.17': resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.1.17': resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.1.17': resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==} @@ -1516,8 +1618,8 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-kit@2.1.3: - resolution: {integrity: sha512-TH+b3Lv6pUjy/Nu0m6A2JULtdzLpmqF9x1Dhj00ZoEiML8qvVA9j1flkzTKNYgdEhWrjDwtWNpyyCUbfQe514g==} + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} engines: {node: '>=20.19.0'} ast-v8-to-istanbul@0.3.8: @@ -1546,8 +1648,8 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} - birpc@2.6.1: - resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==} + birpc@2.8.0: + resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} @@ -1659,9 +1761,6 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -1692,9 +1791,9 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dts-resolver@2.1.2: - resolution: {integrity: sha512-xeXHBQkn2ISSXxbJWD828PFjtyg+/UrMDo7W4Ffcs7+YWCquxU8YjV1KoxuiL+eJ5pg3ll+bC6flVv61L3LKZg==} - engines: {node: '>=20.18.0'} + dts-resolver@2.1.3: + resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} + engines: {node: '>=20.19.0'} peerDependencies: oxc-resolver: '>=11.0.0' peerDependenciesMeta: @@ -2150,24 +2249,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.30.2: resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.30.2: resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.30.2: resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.30.2: resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} @@ -2466,6 +2569,14 @@ packages: resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + obug@0.1.1: + resolution: {integrity: sha512-idmtuvNcQDncavr1pJDd9oCsU+2HWDlg+M/LquTUoi8HTEvm5PtY/dws7whAP1iu3vbrigdTVE/iUvMeKILBDg==} + peerDependencies: + ms: ^2.0.0 + peerDependenciesMeta: + ms: + optional: true + oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} @@ -2694,8 +2805,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rolldown-plugin-dts@0.17.3: - resolution: {integrity: sha512-8mGnNUVNrqEdTnrlcaDxs4sAZg0No6njO+FuhQd4L56nUbJO1tHxOoKDH3mmMJg7f/BhEj/1KjU5W9kZ9zM/kQ==} + rolldown-plugin-dts@0.17.6: + resolution: {integrity: sha512-yX7kDS7Pm9HyVdKKtgfLiRS4wwu+dA4c7KUmOTWKgheu3he4pcT6Wk0Ht59Xm+1pHuoWYv3DvFPqxeF1AyW82A==} engines: {node: '>=20.18.0'} peerDependencies: '@ts-macro/tsc': ^0.3.6 @@ -2713,8 +2824,8 @@ packages: vue-tsc: optional: true - rolldown@1.0.0-beta.46: - resolution: {integrity: sha512-FYUbq0StVHOjkR/hEJ667Pup3ugeB9odBcbmxU5il9QfT9X2t/FPhkqFYQthbYxD2bKnQyO+2vHTgnmOHwZdeA==} + rolldown@1.0.0-beta.49: + resolution: {integrity: sha512-Bfmdn3ZqyCwi1LxG39KBrSlil9a/xnrOrAj+jqqN2YTR/WJIEOOfwNKgDALQvr0xlO9bG/i1C883KGd4nd7SrA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -2841,38 +2952,38 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - syncpack-darwin-arm64@14.0.0-alpha.25: - resolution: {integrity: sha512-Vc8M3XcEd3a4S5AY8hEJ/JPU5cm/rpqmdF9DKjfpogCHuaI7vjBbDouAATI6y6xUdIcjoICriE2vCkXLcgpAEg==} + syncpack-darwin-arm64@14.0.0-alpha.26: + resolution: {integrity: sha512-HRsct1Uqmi+aq4v5061OAPY+zm5Hu5gcKFrppolHffgnDJdrLsHAyxKiC/KOppORgV1v57yBDhMh5pjM0XzWTQ==} cpu: [arm64] os: [darwin] - syncpack-darwin-x64@14.0.0-alpha.25: - resolution: {integrity: sha512-8csi8yeVh7hE38mIu24MlXCDINY60FPUAlswX3XekSG1Mbn1nl6uKow/VIPD6/qH7RWUICzSs8gV2YlHhSKbAA==} + syncpack-darwin-x64@14.0.0-alpha.26: + resolution: {integrity: sha512-IBjupX94//RkMItow1cBg+qSC/vJ+drPJob3i7RddyPgQtNsPrLbEjHXFTZGJ/X6Ku6677G4vB3iAKAgiHwrPA==} cpu: [x64] os: [darwin] - syncpack-linux-arm64@14.0.0-alpha.25: - resolution: {integrity: sha512-5P+oFlQrLPd0iRCLVk9TwjDlm4kr8+GRvYsZC3qVmlBTd+oAt4GMs8+Lv+G09P9bxkiQBcZC9IAPddCtpBMTew==} + syncpack-linux-arm64@14.0.0-alpha.26: + resolution: {integrity: sha512-dTBNmRXKr0sA0HsFKW12gyUTM41llnov3f59BzQCuV8i4UlrK7pe1oWdgiI/WxDC6HBjhgwhKev73ZY964Cnig==} cpu: [arm64] os: [linux] - syncpack-linux-x64@14.0.0-alpha.25: - resolution: {integrity: sha512-yxWFZ8fzJks6oPBxostgNjhY6oUi2Dy5pDSwchp8ZhkjmbWR1jJ3v468V2IP9V7Q4VnGZea4pTiReFY9lIM2Sg==} + syncpack-linux-x64@14.0.0-alpha.26: + resolution: {integrity: sha512-98tXt2bLQfnzqhsLwhC/ok3Vv9zNg2oiCJ0XAnPTUgHhLJzASUeEL9f6RzZ2zipZvpkdMNS/PMhTmtlP5QSoOg==} cpu: [x64] os: [linux] - syncpack-windows-arm64@14.0.0-alpha.25: - resolution: {integrity: sha512-Tz98RZJl3gUsXqJwE1a0STlm3UVZJGkc9uHbRZQpE4YDOQvufjkdvwundSYVyB9J2U8vVzT7Cru7m77rT9T9ww==} + syncpack-windows-arm64@14.0.0-alpha.26: + resolution: {integrity: sha512-el13JJ3VovZ3XICP3KhULyB+nR96hwyGH+H94Uoy8yJoGjoopEopcsdVHEPyoPGuvP4XX2Jpg+GPhc7L4vzRWQ==} cpu: [arm64] os: [win32] - syncpack-windows-x64@14.0.0-alpha.25: - resolution: {integrity: sha512-LrF8A9OlcqkEZY5NKVdlTefpSWU1vruMQVAjPTJ0WIyeEYDaLpU2pJJ+47FUoJei7u+PCVPCVrlg5a95TsngNQ==} + syncpack-windows-x64@14.0.0-alpha.26: + resolution: {integrity: sha512-Ip/OZJxPzQsHDfd3w4TreOvqE5Mf3RquLz5L54yMHfUyxlIqyOQhukaar2UmwJQc9gVDsMxq/91EvaO3nad2bg==} cpu: [x64] os: [win32] - syncpack@14.0.0-alpha.25: - resolution: {integrity: sha512-9+XklduqLpIZqOrXObTwqU09ZqpurSz3LXesyTVyv7DnxwGMlMJo9kIL3ilE2SEDevNS3HlMvcWmFeVM/84wRg==} + syncpack@14.0.0-alpha.26: + resolution: {integrity: sha512-DqVp9lDs1Jl44g7m7YdcgZdPVsZuJvfQi4U4CpQrVSv/9FLDlOZbjxrIKkRNo35U6HDZiBWwR3hzMM0Svj7iMA==} engines: {node: '>=14.17.0'} hasBin: true @@ -2903,6 +3014,10 @@ packages: tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -2933,18 +3048,17 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - tsdown@0.16.0: - resolution: {integrity: sha512-VCqqxT5FbjCmxmLNlOLHiNhu1MBtdvCsk43murvUFloQzQzr/C0FRauWtAw7lAPmS40rZlgocCoTNFqX72WSTg==} + tsdown@0.16.3: + resolution: {integrity: sha512-uciWbZs71/Yj5Mr++gk+Ry3cp4c4PGluLscJ8dbGLHyKFjo1Hrtn+Ix/BIulIKsrnECwwvDge24WKHzdJmCCQg==} engines: {node: '>=20.19.0'} hasBin: true peerDependencies: '@arethetypeswrong/core': ^0.18.1 - '@vitejs/devtools': ^0.0.0-alpha.10 + '@vitejs/devtools': ^0.0.0-alpha.17 publint: ^0.3.0 typescript: ^5.0.0 unplugin-lightningcss: ^0.4.0 unplugin-unused: ^0.5.0 - unrun: ^0.2.1 peerDependenciesMeta: '@arethetypeswrong/core': optional: true @@ -2958,8 +3072,6 @@ packages: optional: true unplugin-unused: optional: true - unrun: - optional: true tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -2974,8 +3086,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - unconfig@7.3.3: - resolution: {integrity: sha512-QCkQoOnJF8L107gxfHL0uavn7WD9b3dpBcFX6HtfQYmjw2YzWxGuFQ0N0J6tE9oguCBJn9KOvfqYDCMPHIZrBA==} + unconfig-core@7.4.1: + resolution: {integrity: sha512-Bp/bPZjV2Vl/fofoA2OYLSnw1Z0MOhCX7zHnVCYrazpfZvseBbGhwcNQMxsg185Mqh7VZQqK3C8hFG/Dyng+yA==} undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -3008,6 +3120,16 @@ packages: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + unrun@0.2.8: + resolution: {integrity: sha512-2HnCvemvMN7qQm0/1uhhi8JoVHQxfkAhZTCdFNWAK35dXKJlOHpcJ6ayN23JKJZyAXjAwpVZZr878flfRiaiFQ==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + synckit: ^0.11.11 + peerDependenciesMeta: + synckit: + optional: true + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -3186,30 +3308,65 @@ snapshots: '@biomejs/cli-win32-arm64': 2.3.4 '@biomejs/cli-win32-x64': 2.3.4 + '@biomejs/biome@2.3.5': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.3.5 + '@biomejs/cli-darwin-x64': 2.3.5 + '@biomejs/cli-linux-arm64': 2.3.5 + '@biomejs/cli-linux-arm64-musl': 2.3.5 + '@biomejs/cli-linux-x64': 2.3.5 + '@biomejs/cli-linux-x64-musl': 2.3.5 + '@biomejs/cli-win32-arm64': 2.3.5 + '@biomejs/cli-win32-x64': 2.3.5 + '@biomejs/cli-darwin-arm64@2.3.4': optional: true + '@biomejs/cli-darwin-arm64@2.3.5': + optional: true + '@biomejs/cli-darwin-x64@2.3.4': optional: true + '@biomejs/cli-darwin-x64@2.3.5': + optional: true + '@biomejs/cli-linux-arm64-musl@2.3.4': optional: true + '@biomejs/cli-linux-arm64-musl@2.3.5': + optional: true + '@biomejs/cli-linux-arm64@2.3.4': optional: true + '@biomejs/cli-linux-arm64@2.3.5': + optional: true + '@biomejs/cli-linux-x64-musl@2.3.4': optional: true + '@biomejs/cli-linux-x64-musl@2.3.5': + optional: true + '@biomejs/cli-linux-x64@2.3.4': optional: true + '@biomejs/cli-linux-x64@2.3.5': + optional: true + '@biomejs/cli-win32-arm64@2.3.4': optional: true + '@biomejs/cli-win32-arm64@2.3.5': + optional: true + '@biomejs/cli-win32-x64@2.3.4': optional: true + '@biomejs/cli-win32-x64@2.3.5': + optional: true + '@changesets/apply-release-plan@7.0.13': dependencies: '@changesets/config': 3.1.1 @@ -3706,6 +3863,8 @@ snapshots: '@orama/orama@3.1.16': {} + '@oxc-project/runtime@0.96.0': {} + '@oxc-project/types@0.96.0': {} '@pkgjs/parseargs@0.11.0': @@ -4064,51 +4223,51 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@rolldown/binding-android-arm64@1.0.0-beta.46': + '@rolldown/binding-android-arm64@1.0.0-beta.49': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.46': + '@rolldown/binding-darwin-arm64@1.0.0-beta.49': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.46': + '@rolldown/binding-darwin-x64@1.0.0-beta.49': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.46': + '@rolldown/binding-freebsd-x64@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.46': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.46': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.46': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.46': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.46': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.49': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.46': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.49': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.46': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.49': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.46': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.49': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.46': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.49': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.46': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.49': optional: true - '@rolldown/pluginutils@1.0.0-beta.46': {} + '@rolldown/pluginutils@1.0.0-beta.49': {} '@rollup/rollup-android-arm-eabi@4.52.5': optional: true @@ -4478,7 +4637,7 @@ snapshots: assertion-error@2.0.1: {} - ast-kit@2.1.3: + ast-kit@2.2.0: dependencies: '@babel/parser': 7.28.5 pathe: 2.0.3 @@ -4513,7 +4672,7 @@ snapshots: dependencies: is-windows: 1.0.2 - birpc@2.6.1: {} + birpc@2.8.0: {} brace-expansion@2.0.2: dependencies: @@ -4604,8 +4763,6 @@ snapshots: deep-eql@5.0.2: {} - defu@6.1.4: {} - delayed-stream@1.0.0: {} dequal@2.0.3: {} @@ -4626,7 +4783,7 @@ snapshots: dependencies: path-type: 4.0.0 - dts-resolver@2.1.2: {} + dts-resolver@2.1.3: {} dunder-proto@1.0.1: dependencies: @@ -5716,6 +5873,10 @@ snapshots: npm-to-yarn@3.0.1: {} + obug@0.1.1(ms@2.1.3): + optionalDependencies: + ms: 2.1.3 + oniguruma-parser@0.12.1: {} oniguruma-to-es@4.3.3: @@ -5971,43 +6132,43 @@ snapshots: reusify@1.1.0: {} - rolldown-plugin-dts@0.17.3(rolldown@1.0.0-beta.46)(typescript@5.9.3): + rolldown-plugin-dts@0.17.6(ms@2.1.3)(rolldown@1.0.0-beta.49)(typescript@5.9.3): dependencies: '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 '@babel/types': 7.28.5 - ast-kit: 2.1.3 - birpc: 2.6.1 - debug: 4.4.3 - dts-resolver: 2.1.2 + ast-kit: 2.2.0 + birpc: 2.8.0 + dts-resolver: 2.1.3 get-tsconfig: 4.13.0 magic-string: 0.30.21 - rolldown: 1.0.0-beta.46 + obug: 0.1.1(ms@2.1.3) + rolldown: 1.0.0-beta.49 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: + - ms - oxc-resolver - - supports-color - rolldown@1.0.0-beta.46: + rolldown@1.0.0-beta.49: dependencies: '@oxc-project/types': 0.96.0 - '@rolldown/pluginutils': 1.0.0-beta.46 + '@rolldown/pluginutils': 1.0.0-beta.49 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.46 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.46 - '@rolldown/binding-darwin-x64': 1.0.0-beta.46 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.46 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.46 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.46 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.46 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.46 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.46 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.46 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.46 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.46 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.46 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.46 + '@rolldown/binding-android-arm64': 1.0.0-beta.49 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.49 + '@rolldown/binding-darwin-x64': 1.0.0-beta.49 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.49 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.49 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.49 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.49 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.49 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.49 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.49 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.49 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.49 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.49 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.49 rollup@4.52.5: dependencies: @@ -6180,34 +6341,34 @@ snapshots: dependencies: has-flag: 4.0.0 - syncpack-darwin-arm64@14.0.0-alpha.25: + syncpack-darwin-arm64@14.0.0-alpha.26: optional: true - syncpack-darwin-x64@14.0.0-alpha.25: + syncpack-darwin-x64@14.0.0-alpha.26: optional: true - syncpack-linux-arm64@14.0.0-alpha.25: + syncpack-linux-arm64@14.0.0-alpha.26: optional: true - syncpack-linux-x64@14.0.0-alpha.25: + syncpack-linux-x64@14.0.0-alpha.26: optional: true - syncpack-windows-arm64@14.0.0-alpha.25: + syncpack-windows-arm64@14.0.0-alpha.26: optional: true - syncpack-windows-x64@14.0.0-alpha.25: + syncpack-windows-x64@14.0.0-alpha.26: optional: true - syncpack@14.0.0-alpha.25: + syncpack@14.0.0-alpha.26: dependencies: tsx: 4.20.6 optionalDependencies: - syncpack-darwin-arm64: 14.0.0-alpha.25 - syncpack-darwin-x64: 14.0.0-alpha.25 - syncpack-linux-arm64: 14.0.0-alpha.25 - syncpack-linux-x64: 14.0.0-alpha.25 - syncpack-windows-arm64: 14.0.0-alpha.25 - syncpack-windows-x64: 14.0.0-alpha.25 + syncpack-darwin-arm64: 14.0.0-alpha.26 + syncpack-darwin-x64: 14.0.0-alpha.26 + syncpack-linux-arm64: 14.0.0-alpha.26 + syncpack-linux-x64: 14.0.0-alpha.26 + syncpack-windows-arm64: 14.0.0-alpha.26 + syncpack-windows-x64: 14.0.0-alpha.26 tailwind-merge@3.3.1: {} @@ -6229,6 +6390,8 @@ snapshots: tinyexec@1.0.1: {} + tinyexec@1.0.2: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -6250,29 +6413,31 @@ snapshots: trough@2.2.0: {} - tsdown@0.16.0(typescript@5.9.3): + tsdown@0.16.3(ms@2.1.3)(typescript@5.9.3): dependencies: ansis: 4.2.0 cac: 6.7.14 chokidar: 4.0.3 - debug: 4.4.3 diff: 8.0.2 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.0-beta.46 - rolldown-plugin-dts: 0.17.3(rolldown@1.0.0-beta.46)(typescript@5.9.3) + obug: 0.1.1(ms@2.1.3) + rolldown: 1.0.0-beta.49 + rolldown-plugin-dts: 0.17.6(ms@2.1.3)(rolldown@1.0.0-beta.49)(typescript@5.9.3) semver: 7.7.3 - tinyexec: 1.0.1 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tree-kill: 1.2.2 - unconfig: 7.3.3 + unconfig-core: 7.4.1 + unrun: 0.2.8 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - '@ts-macro/tsc' - '@typescript/native-preview' + - ms - oxc-resolver - - supports-color + - synckit - vue-tsc tslib@2.8.1: {} @@ -6286,11 +6451,9 @@ snapshots: typescript@5.9.3: {} - unconfig@7.3.3: + unconfig-core@7.4.1: dependencies: '@quansync/fs': 0.1.5 - defu: 6.1.4 - jiti: 2.6.1 quansync: 0.2.11 undici-types@7.16.0: {} @@ -6339,6 +6502,11 @@ snapshots: universalify@0.1.2: {} + unrun@0.2.8: + dependencies: + '@oxc-project/runtime': 0.96.0 + rolldown: 1.0.0-beta.49 + use-callback-ref@1.3.3(@types/react@19.2.2)(react@19.2.0): dependencies: react: 19.2.0 From a22a9d724b193614e80213d0144c352aa649afa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= Date: Wed, 12 Nov 2025 16:29:32 +0700 Subject: [PATCH 8/9] Refactor group processing conditionals for readability Replaced a nested ternary operator with explicit conditional statements in `groups.ts`. This enhances code readability and aligns with the consistent structure of similar functions. No functionality was altered. --- src/read/groups.ts | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/read/groups.ts b/src/read/groups.ts index f251ebb..e17d1db 100644 --- a/src/read/groups.ts +++ b/src/read/groups.ts @@ -103,13 +103,21 @@ export function processGroup( const positionFromRight = groups.length - 1 - index const hasTrailingZeros = allFollowingGroupsAreZero(groups, index) - return index === 0 - ? processFirstGroup( - group, - type, - groups.length > 1 ? groupTypes[1] : -1, // nextGroupType: the type of the next group to determine if we're before billion group - positionFromRight, - hasTrailingZeros, - ) - : processSubsequentGroup(group, type, positionFromRight, hasTrailingZeros) + if (index === 0) { + const nextGroupType = groups.length > 1 ? groupTypes[1] : -1 + return processFirstGroup( + group, + type, + nextGroupType, + positionFromRight, + hasTrailingZeros, + ) + } + + return processSubsequentGroup( + group, + type, + positionFromRight, + hasTrailingZeros, + ) } From fe2cfa9947f771958c75a241b5c0f5d7f3da6d7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= Date: Wed, 12 Nov 2025 16:33:54 +0700 Subject: [PATCH 9/9] Refactor digit group processing and update dependencies Improved readability, simplified logic, and standardized parameter handling in functions processing Vietnamese number words. Made minor formatting updates, enhanced code quality, and updated development dependencies in `package.json`. --- .changeset/gold-guests-attack.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.changeset/gold-guests-attack.md b/.changeset/gold-guests-attack.md index 56586c9..23fd509 100644 --- a/.changeset/gold-guests-attack.md +++ b/.changeset/gold-guests-attack.md @@ -2,18 +2,21 @@ "vn-number": patch --- -Refactor several functions related to reading and processing digit groups in Vietnamese number words. The changes focus on improving code readability, simplifying logic, and making parameter handling more consistent across functions. +Refactors several functions related to reading and processing digit groups in Vietnamese number words, focusing on code readability, logic simplification, and consistent parameter handling. Minor formatting and code quality improvements are also included, along with updates to development dependencies. ### Refactoring and Code Simplification -* Refactored conditional logic in `readFirstGroup` and `readSubsequentGroup` to use concise ternary expressions instead of multi-line if statements, improving readability in `src/read/three-digits.ts`. -* Simplified the implementation of `getDigitWord` by removing the intermediate variable and directly returning the mapped value in `src/read/digits.ts`. +* Replaced multi-line if statements with concise ternary expressions in `readFirstGroup` and `readSubsequentGroup` to improve readability in `src/read/three-digits.ts`. +* Simplified the `getDigitWord` function by removing the intermediate variable and returning the mapped value directly in `src/read/digits.ts`. ### Consistent Parameter Handling -* Updated `readHundreds` to use `groupLength` instead of a boolean flag, and adjusted calls to `readHundreds`, `readTens`, and `readOnes` to consistently use `groupLength` or derived flags, ensuring more predictable behavior in `src/read/three-digits.ts`. [[1]](diffhunk://#diff-3fec7bfdd409e9017a9411ada902007e8e4e09dfe468f1566e38e002a7b0a521L6-R7) [[2]](diffhunk://#diff-3fec7bfdd409e9017a9411ada902007e8e4e09dfe468f1566e38e002a7b0a521L56-R65) +* Updated `readHundreds` to use `groupLength` instead of a boolean flag, and made related changes in calls to `readHundreds`, `readTens`, and `readOnes` for more predictable behavior in `src/read/three-digits.ts`. [[1]](diffhunk://#diff-3fec7bfdd409e9017a9411ada902007e8e4e09dfe468f1566e38e002a7b0a521L6-R7) [[2]](diffhunk://#diff-3fec7bfdd409e9017a9411ada902007e8e4e09dfe468f1566e38e002a7b0a521L56-R65) ### Minor Code Quality Improvements -* Added spacing and minor formatting improvements for readability in utility functions such as `allFollowingGroupsAreZero` in `src/read/utils.ts` and `calculateGroupTypes` in `src/read/groups.ts`. [[1]](diffhunk://#diff-3f1a9cf533aed941787f7a40ca3900d359c1da32f1bc1536d2380c3b4968dbb4R26-R31) [[2]](diffhunk://#diff-8c09ad2ec1c3b0524c8cdbfe07826bfc856285b756983a817f609404a880821aR14-R20) -* Refactored the logic in `processGroup` to use a concise conditional expression when choosing between processing the first group or subsequent groups in `src/read/groups.ts`. +* Added spacing and minor formatting for readability in utility functions such as `allFollowingGroupsAreZero` in `src/read/utils.ts` and `calculateGroupTypes` in `src/read/groups.ts`. [[1]](diffhunk://#diff-3f1a9cf533aed941787f7a40ca3900d359c1da32f1bc1536d2380c3b4968dbb4R26-R31) [[2]](diffhunk://#diff-8c09ad2ec1c3b0524c8cdbfe07826bfc856285b756983a817f609404a880821aR14-R20) + +### Dependency Updates + +* Updated development dependencies in `package.json`, including `@biomejs/biome`, `syncpack`, and `tsdown` to their latest versions.