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)
-# Requirements API
+# 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;
}
}