From c28f601bd517d54cad19e1107a246ed9f9a34c8b Mon Sep 17 00:00:00 2001 From: Gili Tzabari Date: Tue, 5 Nov 2024 13:15:10 -0500 Subject: [PATCH] Updated dependencies --- README.md | 16 +- docs/Changelog.md | 7 + docs/Features.md | 2 +- docs/String_Diff.md | 2 +- package.json | 23 +- pnpm-lock.yaml | 422 ++++++++++---------- src/internal/message/CollectionMessages.mts | 22 +- src/internal/validator/Pluralizer.mts | 38 +- 8 files changed, 267 insertions(+), 265 deletions(-) diff --git a/README.md b/README.md index a74f592..d493b0c 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ [![npm version](https://badge.fury.io/js/%40cowwoc%2Frequirements.svg)](https://badge.fury.io/js/%40cowwoc%2Frequirements) [![build-status](https://github.com/cowwoc/requirements.js/workflows/Build/badge.svg)](https://github.com/cowwoc/requirements.js/actions?query=workflow%3ABuild) -# checklist Requirements API +# checklist Requirements API -[![API](https://img.shields.io/badge/api_docs-5B45D5.svg)](https://cowwoc.github.io/requirements.js/4.0.5/docs/api/) +[![API](https://img.shields.io/badge/api_docs-5B45D5.svg)](https://cowwoc.github.io/requirements.js/4.0.7/docs/api/) [![Changelog](https://img.shields.io/badge/changelog-A345D5.svg)](docs/Changelog.md) [![java](https://img.shields.io/badge/other%20languages-java-457FD5.svg)](../../../requirements.java) @@ -18,13 +18,13 @@ A [fluent API](https://en.m.wikipedia.org/docs/Fluent_interface) for enforcing To get started, add this dependency: ```shell -npm install --save @cowwoc/requirements@4.0.5 +npm install --save @cowwoc/requirements@4.0.7 ``` or [pnpm](https://pnpm.io/): ```shell -pnpm add @cowwoc/requirements@4.0.5 +pnpm add @cowwoc/requirements@4.0.7 ``` ## Usage Example @@ -146,14 +146,14 @@ This library offers the following features: Designed for discovery using your favorite IDE's auto-complete feature. The main entry points are: -* [requireThat(value, name)](https://cowwoc.github.io/requirements.js/4.0.5/docs/api/module-DefaultRequirements.html#~requireThat) +* [requireThat(value, name)](https://cowwoc.github.io/requirements.js/4.0.7/docs/api/module-DefaultRequirements.html#~requireThat) for method preconditions. -* [assertThat(value, name)](https://cowwoc.github.io/requirements.js/4.0.5/docs/api/module-DefaultRequirements.html#~assertThat) +* [assertThat(value, name)](https://cowwoc.github.io/requirements.js/4.0.7/docs/api/module-DefaultRequirements.html#~assertThat) for [class invariants, method postconditions and private methods](docs/Features.md#assertion-support). -* [checkIf(value, name)](https://cowwoc.github.io/requirements.js/4.0.5/docs/api/module-DefaultRequirements.html#~checkIf) +* [checkIf(value, name)](https://cowwoc.github.io/requirements.js/4.0.7/docs/api/module-DefaultRequirements.html#~checkIf) for multiple failures and customized error handling. -See the [API documentation](https://cowwoc.github.io/requirements.js/4.0.5/docs/api/) for more details. +See the [API documentation](https://cowwoc.github.io/requirements.js/4.0.7/docs/api/) for more details. ## Best practices diff --git a/docs/Changelog.md b/docs/Changelog.md index 95d9476..45e01d6 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -1,10 +1,17 @@ Minor updates involving cosmetic changes have been omitted from this list. See https://github.com/cowwoc/requirements.java/commits/master for a full list. +## Version 4.0.7 - 2024/11/05 + +* Improvements + * Updated dependencies + ## Version 4.0.6 - 2024/11/04 * Improvements * `size().isEqualTo()` and `isNotEqualTo()` now include the array value in the exception context. + * When referencing to a variable number of elements, always use the plural form of a type (e.g. + `actual must contain X entries` even if `X` is one). ## Version 4.0.5 - 2024/10/31 diff --git a/docs/Features.md b/docs/Features.md index 9930cb7..fca89a9 100644 --- a/docs/Features.md +++ b/docs/Features.md @@ -99,7 +99,7 @@ requireThat(nameToAge, "nameToAge"). ## String diff When -a [String comparison](https://cowwoc.github.io/requirements.js/4.0.5/docs/api/ObjectVerifier.html#isEqualTo) +a [String comparison](https://cowwoc.github.io/requirements.js/4.0.7/docs/api/ObjectVerifier.html#isEqualTo) fails, the library outputs a diff of the values being compared. Depending on the terminal capability, you will see a [textual](Textual_Diff.md) or a colored diff. diff --git a/docs/String_Diff.md b/docs/String_Diff.md index b305fab..1f5a684 100644 --- a/docs/String_Diff.md +++ b/docs/String_Diff.md @@ -1,5 +1,5 @@ When -a [String comparison](https://cowwoc.github.io/requirements.js/4.0.5/docs/api/ObjectVerifier.html#isEqualTo) +a [String comparison](https://cowwoc.github.io/requirements.js/4.0.7/docs/api/ObjectVerifier.html#isEqualTo) fails, the library outputs a [diff](https://en.wikipedia.org/wiki/Diff) of the values being compared. Depending on the terminal capability, you will see a [Textual](Textual_Diff.md) or [Colored](Colored_Diff.md) diff --git a/package.json b/package.json index cf77d25..49e6659 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cowwoc/requirements", - "version": "4.0.6", + "version": "4.0.7", "keywords": [ "preconditions", "postconditions", @@ -39,7 +39,7 @@ "packageManager": "pnpm@9.10.0", "devDependencies": { "@eslint/core": "^0.8.0", - "@eslint/js": "^9.13.0", + "@eslint/js": "^9.14.0", "@rollup/plugin-commonjs": "^28.0.1", "@rollup/plugin-node-resolve": "^15.3.0", "@rollup/plugin-typescript": "^12.1.1", @@ -51,17 +51,17 @@ "@types/lodash.padstart": "^4.6.9", "@types/minimist": "^1.2.5", "@types/mocha": "^10.0.9", - "@types/node": "^22.8.5", + "@types/node": "^22.9.0", "@types/rollup-plugin-node-globals": "^1.4.5", "@types/tmp": "^0.2.6", - "@typescript-eslint/eslint-plugin": "^8.12.2", - "@typescript-eslint/parser": "^8.12.2", + "@typescript-eslint/eslint-plugin": "^8.13.0", + "@typescript-eslint/parser": "^8.13.0", "browser-sync": "^3.0.3", "c8": "^10.1.2", "chai": "^5.1.2", "chokidar": "^4.0.1", "diary": "^0.4.5", - "eslint": "^9.13.0", + "eslint": "^9.14.0", "eslint-plugin-tsdoc": "^0.3.0", "fancy-log": "^2.0.0", "glob": "^11.0.0", @@ -73,20 +73,19 @@ "pnpm": "^9.12.3", "react": "^18.3.1", "react-dom": "^18.3.1", - "rollup": "^4.24.3", + "rollup": "^4.24.4", "rollup-plugin-node-globals": "^1.4.0", "source-map-support": "^0.5.21", "strip-ansi": "^7.1.0", - "taffydb": "^2.7.3", "terser": "^5.36.0", "tmp": "^0.2.3", "ts-node": "^10.9.2", - "tslib": "^2.8.0", + "tslib": "^2.8.1", "tsx": "^4.19.2", - "typedoc": "^0.26.10", - "typedoc-plugin-mdn-links": "^3.3.5", + "typedoc": "^0.26.11", + "typedoc-plugin-mdn-links": "^3.3.6", "typedoc-plugin-missing-exports": "^3.0.0", "typescript": "^5.6.3", - "typescript-eslint": "^8.12.2" + "typescript-eslint": "^8.13.0" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5bd43ea..ff74727 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,17 +22,17 @@ importers: specifier: ^0.8.0 version: 0.8.0 '@eslint/js': - specifier: ^9.13.0 - version: 9.13.0 + specifier: ^9.14.0 + version: 9.14.0 '@rollup/plugin-commonjs': specifier: ^28.0.1 - version: 28.0.1(rollup@4.24.3) + version: 28.0.1(rollup@4.24.4) '@rollup/plugin-node-resolve': specifier: ^15.3.0 - version: 15.3.0(rollup@4.24.3) + version: 15.3.0(rollup@4.24.4) '@rollup/plugin-typescript': specifier: ^12.1.1 - version: 12.1.1(rollup@4.24.3)(tslib@2.8.0)(typescript@5.6.3) + version: 12.1.1(rollup@4.24.4)(tslib@2.8.1)(typescript@5.6.3) '@types/chai': specifier: ^5.0.1 version: 5.0.1 @@ -58,8 +58,8 @@ importers: specifier: ^10.0.9 version: 10.0.9 '@types/node': - specifier: ^22.8.5 - version: 22.8.5 + specifier: ^22.9.0 + version: 22.9.0 '@types/rollup-plugin-node-globals': specifier: ^1.4.5 version: 1.4.5 @@ -67,11 +67,11 @@ importers: specifier: ^0.2.6 version: 0.2.6 '@typescript-eslint/eslint-plugin': - specifier: ^8.12.2 - version: 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) + specifier: ^8.13.0 + version: 8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3) '@typescript-eslint/parser': - specifier: ^8.12.2 - version: 8.12.2(eslint@9.13.0)(typescript@5.6.3) + specifier: ^8.13.0 + version: 8.13.0(eslint@9.14.0)(typescript@5.6.3) browser-sync: specifier: ^3.0.3 version: 3.0.3 @@ -88,8 +88,8 @@ importers: specifier: ^0.4.5 version: 0.4.5 eslint: - specifier: ^9.13.0 - version: 9.13.0 + specifier: ^9.14.0 + version: 9.14.0 eslint-plugin-tsdoc: specifier: ^0.3.0 version: 0.3.0 @@ -124,8 +124,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) rollup: - specifier: ^4.24.3 - version: 4.24.3 + specifier: ^4.24.4 + version: 4.24.4 rollup-plugin-node-globals: specifier: ^1.4.0 version: 1.4.0 @@ -135,9 +135,6 @@ importers: strip-ansi: specifier: ^7.1.0 version: 7.1.0 - taffydb: - specifier: ^2.7.3 - version: 2.7.3 terser: specifier: ^5.36.0 version: 5.36.0 @@ -146,28 +143,28 @@ importers: version: 0.2.3 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.8.5)(typescript@5.6.3) + version: 10.9.2(@types/node@22.9.0)(typescript@5.6.3) tslib: - specifier: ^2.8.0 - version: 2.8.0 + specifier: ^2.8.1 + version: 2.8.1 tsx: specifier: ^4.19.2 version: 4.19.2 typedoc: - specifier: ^0.26.10 - version: 0.26.10(typescript@5.6.3) + specifier: ^0.26.11 + version: 0.26.11(typescript@5.6.3) typedoc-plugin-mdn-links: - specifier: ^3.3.5 - version: 3.3.5(typedoc@0.26.10(typescript@5.6.3)) + specifier: ^3.3.6 + version: 3.3.6(typedoc@0.26.11(typescript@5.6.3)) typedoc-plugin-missing-exports: specifier: ^3.0.0 - version: 3.0.0(typedoc@0.26.10(typescript@5.6.3)) + version: 3.0.0(typedoc@0.26.11(typescript@5.6.3)) typescript: specifier: ^5.6.3 version: 5.6.3 typescript-eslint: - specifier: ^8.12.2 - version: 8.12.2(eslint@9.13.0)(typescript@5.6.3) + specifier: ^8.13.0 + version: 8.13.0(eslint@9.14.0)(typescript@5.6.3) packages: @@ -348,8 +345,8 @@ packages: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.13.0': - resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} + '@eslint/js@9.14.0': + resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -376,6 +373,10 @@ packages: resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -470,93 +471,93 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.3': - resolution: {integrity: sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==} + '@rollup/rollup-android-arm-eabi@4.24.4': + resolution: {integrity: sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.3': - resolution: {integrity: sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==} + '@rollup/rollup-android-arm64@4.24.4': + resolution: {integrity: sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.3': - resolution: {integrity: sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==} + '@rollup/rollup-darwin-arm64@4.24.4': + resolution: {integrity: sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.3': - resolution: {integrity: sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==} + '@rollup/rollup-darwin-x64@4.24.4': + resolution: {integrity: sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.24.3': - resolution: {integrity: sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==} + '@rollup/rollup-freebsd-arm64@4.24.4': + resolution: {integrity: sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.24.3': - resolution: {integrity: sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==} + '@rollup/rollup-freebsd-x64@4.24.4': + resolution: {integrity: sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.24.3': - resolution: {integrity: sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==} + '@rollup/rollup-linux-arm-gnueabihf@4.24.4': + resolution: {integrity: sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.3': - resolution: {integrity: sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==} + '@rollup/rollup-linux-arm-musleabihf@4.24.4': + resolution: {integrity: sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.3': - resolution: {integrity: sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==} + '@rollup/rollup-linux-arm64-gnu@4.24.4': + resolution: {integrity: sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.3': - resolution: {integrity: sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==} + '@rollup/rollup-linux-arm64-musl@4.24.4': + resolution: {integrity: sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': - resolution: {integrity: sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==} + '@rollup/rollup-linux-powerpc64le-gnu@4.24.4': + resolution: {integrity: sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.3': - resolution: {integrity: sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==} + '@rollup/rollup-linux-riscv64-gnu@4.24.4': + resolution: {integrity: sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.3': - resolution: {integrity: sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==} + '@rollup/rollup-linux-s390x-gnu@4.24.4': + resolution: {integrity: sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.3': - resolution: {integrity: sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==} + '@rollup/rollup-linux-x64-gnu@4.24.4': + resolution: {integrity: sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.3': - resolution: {integrity: sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==} + '@rollup/rollup-linux-x64-musl@4.24.4': + resolution: {integrity: sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.3': - resolution: {integrity: sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==} + '@rollup/rollup-win32-arm64-msvc@4.24.4': + resolution: {integrity: sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.3': - resolution: {integrity: sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==} + '@rollup/rollup-win32-ia32-msvc@4.24.4': + resolution: {integrity: sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.3': - resolution: {integrity: sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==} + '@rollup/rollup-win32-x64-msvc@4.24.4': + resolution: {integrity: sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==} cpu: [x64] os: [win32] @@ -644,8 +645,8 @@ packages: '@types/mocha@10.0.9': resolution: {integrity: sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==} - '@types/node@22.8.5': - resolution: {integrity: sha512-5iYk6AMPtsMbkZqCO1UGF9W5L38twq11S2pYWkybGHH2ogPUvXWNlQqJBzuEZWKj/WRH+QTeiv6ySWqJtvIEgA==} + '@types/node@22.9.0': + resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -659,8 +660,8 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.12.2': - resolution: {integrity: sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==} + '@typescript-eslint/eslint-plugin@8.13.0': + resolution: {integrity: sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -670,8 +671,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.12.2': - resolution: {integrity: sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==} + '@typescript-eslint/parser@8.13.0': + resolution: {integrity: sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -680,12 +681,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.12.2': - resolution: {integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==} + '@typescript-eslint/scope-manager@8.13.0': + resolution: {integrity: sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.12.2': - resolution: {integrity: sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==} + '@typescript-eslint/type-utils@8.13.0': + resolution: {integrity: sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -693,12 +694,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@8.12.2': - resolution: {integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==} + '@typescript-eslint/types@8.13.0': + resolution: {integrity: sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.12.2': - resolution: {integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==} + '@typescript-eslint/typescript-estree@8.13.0': + resolution: {integrity: sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -706,14 +707,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.12.2': - resolution: {integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==} + '@typescript-eslint/utils@8.13.0': + resolution: {integrity: sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@8.12.2': - resolution: {integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==} + '@typescript-eslint/visitor-keys@8.13.0': + resolution: {integrity: sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.0': @@ -1093,8 +1094,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.13.0: - resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} + eslint@9.14.0: + resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1475,8 +1476,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.1: - resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} + lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} engines: {node: 20 || >=22} lunr@2.3.9: @@ -1722,8 +1723,8 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} - regex@4.3.3: - resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} + regex@4.4.0: + resolution: {integrity: sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==} require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -1765,8 +1766,8 @@ packages: resolution: {integrity: sha512-dFf8LpUNzIj3oE0vCvobX6rqOzHzLBoblyFp+3znPbjiSmSvOoK2kMKx+Fv9jYduG1rvcCfCveSgEaQHjWRF6g==} hasBin: true - rollup@4.24.3: - resolution: {integrity: sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==} + rollup@4.24.4: + resolution: {integrity: sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1910,9 +1911,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - taffydb@2.7.3: - resolution: {integrity: sha512-GQ3gtYFSOAxSMN/apGtDKKkbJf+8izz5YfbGqIsUc7AMiQOapARZ76dhilRY2h39cynYxBFdafQo5HUL5vgkrg==} - terser@5.36.0: resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} engines: {node: '>=10'} @@ -1960,8 +1958,8 @@ packages: '@swc/wasm': optional: true - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tsx@4.19.2: resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} @@ -1972,8 +1970,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typedoc-plugin-mdn-links@3.3.5: - resolution: {integrity: sha512-EsOmQ23eBYqFFEkjo/prud/h2O2QIPQwdVvpyocwn3SWWFCP1YfuTCs94/dDQG6Ikte7gik88ic7Md8fDvEmtw==} + typedoc-plugin-mdn-links@3.3.6: + resolution: {integrity: sha512-iz/+UBDEDqtymjgO6AQA7P4A/kiGmHVKSStGFz7rueZClfbpYaJB5T+xePMF4i0N7PxWMPrWzQd1+B6pn40w1w==} peerDependencies: typedoc: '>= 0.23.14 || 0.24.x || 0.25.x || 0.26.x' @@ -1982,15 +1980,15 @@ packages: peerDependencies: typedoc: 0.26.x - typedoc@0.26.10: - resolution: {integrity: sha512-xLmVKJ8S21t+JeuQLNueebEuTVphx6IrP06CdV7+0WVflUSW3SPmR+h1fnWVdAR/FQePEgsSWCUHXqKKjzuUAw==} + typedoc@0.26.11: + resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} engines: {node: '>= 18'} hasBin: true peerDependencies: typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x - typescript-eslint@8.12.2: - resolution: {integrity: sha512-UbuVUWSrHVR03q9CWx+JDHeO6B/Hr9p4U5lRH++5tq/EbFq1faYZe50ZSBePptgfIKLEti0aPQ3hFgnPVcd8ZQ==} + typescript-eslint@8.13.0: + resolution: {integrity: sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -2222,9 +2220,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.13.0)': + '@eslint-community/eslint-utils@4.4.1(eslint@9.14.0)': dependencies: - eslint: 9.13.0 + eslint: 9.14.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -2255,7 +2253,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.13.0': {} + '@eslint/js@9.14.0': {} '@eslint/object-schema@2.1.4': {} @@ -2274,6 +2272,8 @@ snapshots: '@humanwhocodes/retry@0.3.1': {} + '@humanwhocodes/retry@0.4.1': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -2336,9 +2336,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/plugin-commonjs@28.0.1(rollup@4.24.3)': + '@rollup/plugin-commonjs@28.0.1(rollup@4.24.4)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.24.3) + '@rollup/pluginutils': 5.1.3(rollup@4.24.4) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.2(picomatch@4.0.2) @@ -2346,87 +2346,87 @@ snapshots: magic-string: 0.30.12 picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.3 + rollup: 4.24.4 - '@rollup/plugin-node-resolve@15.3.0(rollup@4.24.3)': + '@rollup/plugin-node-resolve@15.3.0(rollup@4.24.4)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.24.3) + '@rollup/pluginutils': 5.1.3(rollup@4.24.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.24.3 + rollup: 4.24.4 - '@rollup/plugin-typescript@12.1.1(rollup@4.24.3)(tslib@2.8.0)(typescript@5.6.3)': + '@rollup/plugin-typescript@12.1.1(rollup@4.24.4)(tslib@2.8.1)(typescript@5.6.3)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.24.3) + '@rollup/pluginutils': 5.1.3(rollup@4.24.4) resolve: 1.22.8 typescript: 5.6.3 optionalDependencies: - rollup: 4.24.3 - tslib: 2.8.0 + rollup: 4.24.4 + tslib: 2.8.1 - '@rollup/pluginutils@5.1.3(rollup@4.24.3)': + '@rollup/pluginutils@5.1.3(rollup@4.24.4)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.3 + rollup: 4.24.4 - '@rollup/rollup-android-arm-eabi@4.24.3': + '@rollup/rollup-android-arm-eabi@4.24.4': optional: true - '@rollup/rollup-android-arm64@4.24.3': + '@rollup/rollup-android-arm64@4.24.4': optional: true - '@rollup/rollup-darwin-arm64@4.24.3': + '@rollup/rollup-darwin-arm64@4.24.4': optional: true - '@rollup/rollup-darwin-x64@4.24.3': + '@rollup/rollup-darwin-x64@4.24.4': optional: true - '@rollup/rollup-freebsd-arm64@4.24.3': + '@rollup/rollup-freebsd-arm64@4.24.4': optional: true - '@rollup/rollup-freebsd-x64@4.24.3': + '@rollup/rollup-freebsd-x64@4.24.4': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.3': + '@rollup/rollup-linux-arm-gnueabihf@4.24.4': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.3': + '@rollup/rollup-linux-arm-musleabihf@4.24.4': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.3': + '@rollup/rollup-linux-arm64-gnu@4.24.4': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.3': + '@rollup/rollup-linux-arm64-musl@4.24.4': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.4': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.3': + '@rollup/rollup-linux-riscv64-gnu@4.24.4': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.3': + '@rollup/rollup-linux-s390x-gnu@4.24.4': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.3': + '@rollup/rollup-linux-x64-gnu@4.24.4': optional: true - '@rollup/rollup-linux-x64-musl@4.24.3': + '@rollup/rollup-linux-x64-musl@4.24.4': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.3': + '@rollup/rollup-win32-arm64-msvc@4.24.4': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.3': + '@rollup/rollup-win32-ia32-msvc@4.24.4': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.3': + '@rollup/rollup-win32-x64-msvc@4.24.4': optional: true '@shikijs/core@1.22.2': @@ -2474,7 +2474,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 22.8.5 + '@types/node': 22.9.0 '@types/deep-eql@4.0.2': {} @@ -2519,7 +2519,7 @@ snapshots: '@types/mocha@10.0.9': {} - '@types/node@22.8.5': + '@types/node@22.9.0': dependencies: undici-types: 6.19.8 @@ -2533,15 +2533,15 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.12.2(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/type-utils': 8.12.2(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.12.2 - eslint: 9.13.0 + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/type-utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.13.0 + eslint: 9.14.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -2551,28 +2551,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.6.3)': + '@typescript-eslint/parser@8.13.0(eslint@9.14.0)(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.12.2 + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.13.0 debug: 4.3.7(supports-color@8.1.1) - eslint: 9.13.0 + eslint: 9.14.0 optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.12.2': + '@typescript-eslint/scope-manager@8.13.0': dependencies: - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/visitor-keys': 8.12.2 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/visitor-keys': 8.13.0 - '@typescript-eslint/type-utils@8.12.2(eslint@9.13.0)(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.13.0(eslint@9.14.0)(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) debug: 4.3.7(supports-color@8.1.1) ts-api-utils: 1.4.0(typescript@5.6.3) optionalDependencies: @@ -2581,12 +2581,12 @@ snapshots: - eslint - supports-color - '@typescript-eslint/types@8.12.2': {} + '@typescript-eslint/types@8.13.0': {} - '@typescript-eslint/typescript-estree@8.12.2(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.13.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/visitor-keys': 8.12.2 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/visitor-keys': 8.13.0 debug: 4.3.7(supports-color@8.1.1) fast-glob: 3.3.2 is-glob: 4.0.3 @@ -2598,20 +2598,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.12.2(eslint@9.13.0)(typescript@5.6.3)': + '@typescript-eslint/utils@8.13.0(eslint@9.14.0)(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) - eslint: 9.13.0 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + eslint: 9.14.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@8.12.2': + '@typescript-eslint/visitor-keys@8.13.0': dependencies: - '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/types': 8.13.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} @@ -2954,7 +2954,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.8.5 + '@types/node': 22.9.0 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -3016,18 +3016,18 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.13.0: + eslint@9.14.0: dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.18.0 '@eslint/core': 0.7.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.13.0 + '@eslint/js': 9.14.0 '@eslint/plugin-kit': 0.2.2 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.1 '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -3414,7 +3414,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.0.1: {} + lru-cache@11.0.2: {} lunr@2.3.9: {} @@ -3558,7 +3558,7 @@ snapshots: oniguruma-to-js@0.4.3: dependencies: - regex: 4.3.3 + regex: 4.4.0 opn@5.3.0: dependencies: @@ -3602,7 +3602,7 @@ snapshots: path-scurry@2.0.0: dependencies: - lru-cache: 11.0.1 + lru-cache: 11.0.2 minipass: 7.1.2 pathval@2.0.0: {} @@ -3659,7 +3659,7 @@ snapshots: readdirp@4.0.2: {} - regex@4.3.3: {} + regex@4.4.0: {} require-directory@2.1.1: {} @@ -3702,30 +3702,30 @@ snapshots: rollup@0.63.5: dependencies: '@types/estree': 0.0.39 - '@types/node': 22.8.5 + '@types/node': 22.9.0 - rollup@4.24.3: + rollup@4.24.4: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.3 - '@rollup/rollup-android-arm64': 4.24.3 - '@rollup/rollup-darwin-arm64': 4.24.3 - '@rollup/rollup-darwin-x64': 4.24.3 - '@rollup/rollup-freebsd-arm64': 4.24.3 - '@rollup/rollup-freebsd-x64': 4.24.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.3 - '@rollup/rollup-linux-arm-musleabihf': 4.24.3 - '@rollup/rollup-linux-arm64-gnu': 4.24.3 - '@rollup/rollup-linux-arm64-musl': 4.24.3 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.3 - '@rollup/rollup-linux-riscv64-gnu': 4.24.3 - '@rollup/rollup-linux-s390x-gnu': 4.24.3 - '@rollup/rollup-linux-x64-gnu': 4.24.3 - '@rollup/rollup-linux-x64-musl': 4.24.3 - '@rollup/rollup-win32-arm64-msvc': 4.24.3 - '@rollup/rollup-win32-ia32-msvc': 4.24.3 - '@rollup/rollup-win32-x64-msvc': 4.24.3 + '@rollup/rollup-android-arm-eabi': 4.24.4 + '@rollup/rollup-android-arm64': 4.24.4 + '@rollup/rollup-darwin-arm64': 4.24.4 + '@rollup/rollup-darwin-x64': 4.24.4 + '@rollup/rollup-freebsd-arm64': 4.24.4 + '@rollup/rollup-freebsd-x64': 4.24.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.4 + '@rollup/rollup-linux-arm-musleabihf': 4.24.4 + '@rollup/rollup-linux-arm64-gnu': 4.24.4 + '@rollup/rollup-linux-arm64-musl': 4.24.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.4 + '@rollup/rollup-linux-riscv64-gnu': 4.24.4 + '@rollup/rollup-linux-s390x-gnu': 4.24.4 + '@rollup/rollup-linux-x64-gnu': 4.24.4 + '@rollup/rollup-linux-x64-musl': 4.24.4 + '@rollup/rollup-win32-arm64-msvc': 4.24.4 + '@rollup/rollup-win32-ia32-msvc': 4.24.4 + '@rollup/rollup-win32-x64-msvc': 4.24.4 fsevents: 2.3.3 run-parallel@1.2.0: @@ -3926,8 +3926,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - taffydb@2.7.3: {} - terser@5.36.0: dependencies: '@jridgewell/source-map': 0.3.6 @@ -3957,14 +3955,14 @@ snapshots: dependencies: typescript: 5.6.3 - ts-node@10.9.2(@types/node@22.8.5)(typescript@5.6.3): + ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.8.5 + '@types/node': 22.9.0 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -3975,7 +3973,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - tslib@2.8.0: {} + tslib@2.8.1: {} tsx@4.19.2: dependencies: @@ -3988,15 +3986,15 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typedoc-plugin-mdn-links@3.3.5(typedoc@0.26.10(typescript@5.6.3)): + typedoc-plugin-mdn-links@3.3.6(typedoc@0.26.11(typescript@5.6.3)): dependencies: - typedoc: 0.26.10(typescript@5.6.3) + typedoc: 0.26.11(typescript@5.6.3) - typedoc-plugin-missing-exports@3.0.0(typedoc@0.26.10(typescript@5.6.3)): + typedoc-plugin-missing-exports@3.0.0(typedoc@0.26.11(typescript@5.6.3)): dependencies: - typedoc: 0.26.10(typescript@5.6.3) + typedoc: 0.26.11(typescript@5.6.3) - typedoc@0.26.10(typescript@5.6.3): + typedoc@0.26.11(typescript@5.6.3): dependencies: lunr: 2.3.9 markdown-it: 14.1.0 @@ -4005,11 +4003,11 @@ snapshots: typescript: 5.6.3 yaml: 2.6.0 - typescript-eslint@8.12.2(eslint@9.13.0)(typescript@5.6.3): + typescript-eslint@8.13.0(eslint@9.14.0)(typescript@5.6.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/parser': 8.12.2(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: diff --git a/src/internal/message/CollectionMessages.mts b/src/internal/message/CollectionMessages.mts index f13807e..65aeecc 100644 --- a/src/internal/message/CollectionMessages.mts +++ b/src/internal/message/CollectionMessages.mts @@ -34,8 +34,8 @@ function collectionContainsSize(validator: AbstractValidator, actualSiz const name = validator.getName(); const messageBuilder = new MessageBuilder(validator, - `${MessageBuilder.quoteName(name)} ${relationship} ${expectedNameOrSize} ${pluralizer.nameOf( - expectedSize)}.`); + `${MessageBuilder.quoteName(name)} ${relationship} ${expectedNameOrSize} \ +${pluralizer.nameOf(expectedSize, expectedSizeName)}.`); validator.value.undefinedOrNullToInvalid().ifValid(v => messageBuilder.withContext(v, name)); if (actualSize !== null) @@ -72,7 +72,7 @@ function collectionSizeIsBetween(validator: AbstractValidator, actualSi // The size is null (e.g. the collection is null) // // "actual" must contain [1, 3] elements - message += ` must contain ${bounds} ${pluralizer.nameOf(2)} .`; + message += ` must contain ${bounds} ${pluralizer.nameOf(2, null)} .`; return new MessageBuilder(validator, message); } @@ -103,7 +103,7 @@ function collectionSizeIsBetween(validator: AbstractValidator, actualSi actual: ${actualSize.toString()} bounds: ${bounds}`); } - message += `${pluralizer.nameOf(2)}.`; + message += `${pluralizer.nameOf(2, null)}.`; return new MessageBuilder(validator, message). withContext(validator.getValue(), name). withContext(actualSize, actualSizeName). @@ -199,7 +199,7 @@ function collectionContainsAny(validator: AbstractValidator, expectedNa const name = validator.getName(); const messageBuilder = new MessageBuilder(validator, - `${MessageBuilder.quoteName(name)} must contain any of the ${pluralizer.nameOf(2)} \ + `${MessageBuilder.quoteName(name)} must contain any of the ${pluralizer.nameOf(2, null)} \ present in ${expectedNameOrValue}.`); validator.value.undefinedOrNullToInvalid().ifValid(v => messageBuilder.withContext(v, name)); @@ -229,7 +229,7 @@ function collectionDoesNotContainAny(validator: AbstractValidator, const name = validator.getName(); const messageBuilder = new MessageBuilder(validator, - `${MessageBuilder.quoteName(name)} may not contain any of the ${pluralizer.nameOf(2)} \ + `${MessageBuilder.quoteName(name)} may not contain any of the ${pluralizer.nameOf(2, null)} \ present in ${unwantedNameOrValue}.`); validator.value.undefinedOrNullToInvalid().ifValid(v => messageBuilder.withContext(v, name)); @@ -266,7 +266,7 @@ function collectionContainsExactly(validator: AbstractValidator, dif let message = `${MessageBuilder.quoteName(name)} must consist of the `; if (expectedName !== null) message += "same "; - message += `${pluralizer.nameOf(2)} `; + message += `${pluralizer.nameOf(2, null)} `; const expectedNameOrValue = validator.getNameOrValue("as ", expectedName, "", expected); message += `${expectedNameOrValue}, regardless of their order.`; @@ -301,7 +301,7 @@ function collectionDoesNotContainExactly(validator: AbstractValidator, let message = `${MessageBuilder.quoteName(validator.getName())} may not consist of the `; if (unwantedName !== null) message += "same "; - message += `${pluralizer.nameOf(2)} `; + message += `${pluralizer.nameOf(2, null)} `; const unwantedStringNameOrValue = validator.getNameOrValue("as ", unwantedName, "", unwanted); message += `${unwantedStringNameOrValue}, regardless of their order.`; @@ -331,7 +331,7 @@ function collectionContainsAll(validator: AbstractValidator, differe const name = validator.getName(); const messageBuilder = new MessageBuilder(validator, - `${MessageBuilder.quoteName(name)} must contain all the ${pluralizer.nameOf(2)} \ + `${MessageBuilder.quoteName(name)} must contain all the ${pluralizer.nameOf(2, null)} \ present in ${expectedNameOrValue}.`); validator.value.undefinedOrNullToInvalid().ifValid(v => messageBuilder.withContext(v, name)); @@ -360,7 +360,7 @@ function collectionDoesNotContainAll(validator: AbstractValidator, unwa const name = validator.getName(); const messageBuilder = new MessageBuilder(validator, `${MessageBuilder.quoteName(name)} may contain some, but not all, the \ -${pluralizer.nameOf(2)} present in ${unwantedNameOrValue}.`); +${pluralizer.nameOf(2, null)} present in ${unwantedNameOrValue}.`); validator.value.undefinedOrNullToInvalid().ifValid(v => messageBuilder.withContext(v, name)); if (unwantedName !== null) @@ -380,7 +380,7 @@ function collectionDoesNotContainDuplicates(validator: AbstractValidator messageBuilder.withContext(v, name)); diff --git a/src/internal/validator/Pluralizer.mts b/src/internal/validator/Pluralizer.mts index 4430455..f1c768c 100644 --- a/src/internal/validator/Pluralizer.mts +++ b/src/internal/validator/Pluralizer.mts @@ -3,36 +3,34 @@ */ class Pluralizer { - private readonly prefix: string; - private readonly singularSuffix: string; - private readonly pluralSuffix: string; - static readonly CHARACTER = new Pluralizer("character", "", "s"); - static readonly KEY = new Pluralizer("key", "", "s"); - static readonly VALUE = new Pluralizer("value", "", "s"); - static readonly ELEMENT = new Pluralizer("element", "", "s"); - static readonly ENTRY = new Pluralizer("entr", "y", "ies"); + private readonly singular: string; + private readonly plural: string; + static readonly CHARACTER = new Pluralizer("character", "characters"); + static readonly KEY = new Pluralizer("key", "keys"); + static readonly VALUE = new Pluralizer("value", "values"); + static readonly ELEMENT = new Pluralizer("element", "elements"); + static readonly ENTRY = new Pluralizer("entry", "entries"); /** - * @param prefix - the prefix common to both singular and plural forms - * @param singularSuffix - the suffix to append to the singular form of the word - * @param pluralSuffix - the suffix to append to the plural form of the word + * @param singular - the singular form of the element + * @param plural - the plural form of the element */ - constructor(prefix: string, singularSuffix: string, pluralSuffix: string) + constructor(singular: string, plural: string) { - this.prefix = prefix; - this.singularSuffix = singularSuffix; - this.pluralSuffix = pluralSuffix; + this.singular = singular; + this.plural = plural; } /** * @param count - a number of elements - * @returns the singular or plural form of the element type + * @param name - the name of the parameter containing the number of elements (`null` if absent) + * @returns the singular or plural form of the element type (in lowercase) */ - nameOf(count: number) + nameOf(count: number, name: string | null) { - if (count === 1) - return this.prefix + this.singularSuffix; - return this.prefix + this.pluralSuffix; + if (count === 1 && name === null) + return this.singular; + return this.plural; } }