diff --git a/.github/workflows/build.sh b/.github/workflows/build.sh index ae9c080fc..fc62cc78c 100755 --- a/.github/workflows/build.sh +++ b/.github/workflows/build.sh @@ -20,6 +20,9 @@ fi; mkdir -p ./docs/ rm -rf ./docs/coverage/ ./docs/reference/ ./docs/tests/ +# Remove Dark Mode Logo +git checkout -- ./README.md +awk 'NR < 8 || NR > 10' ./README.md > temp && mv -f temp ./README.md # TypeDoc in ./docs/referece npx typedoc diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml new file mode 100644 index 000000000..36f2991d4 --- /dev/null +++ b/.github/workflows/dependabot-auto-merge.yml @@ -0,0 +1,23 @@ +name: Dependabot auto-merge +on: pull_request + +permissions: + contents: write + pull-requests: write + +jobs: + dependabot: + runs-on: ubuntu-latest + if: github.actor == 'dependabot[bot]' + steps: + - name: ℹ️ Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@v1 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + - name: 🔃 Enable auto-merge for Dependabot PRs + if: steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch' + run: gh pr merge --auto --merge "$PR_URL" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.nycrc b/.nycrc index db43806f1..a30d12f2d 100644 --- a/.nycrc +++ b/.nycrc @@ -24,7 +24,7 @@ "instrument": true, "branches": 95, "lines": 95, - "functions": 92, - "statements": 95, + "functions": 100, + "statements": 98, "per-file": true } diff --git a/README.md b/README.md old mode 100755 new mode 100644 index 715e3c884..0a0e206fe --- a/README.md +++ b/README.md @@ -2,18 +2,19 @@

- ical-generator + + ical-generator logo + + + ical-generator logo +

- - MIT License - - - Module Size - - - CI Status - + MIT License + Module Size + Dependency Status + CI Status + Code Coverage Badge


@@ -22,13 +23,7 @@ `ical-generator` is a small but fine library with which you can very easily create a valid iCal calendars, for example to generate subscriptionable calendar feeds. -
-
-## ⚠️ Migration to v6 -In version 6 some breaking changes were made to make `ical-generator` even better. A short list of -these breaking changes and how you can adapt your code can be found in our -[Migration Guide](https://github.com/sebbo2002/ical-generator/wiki/Migration-Guide:-v5-%E2%86%92-v6). ## 📦 Installation @@ -119,7 +114,6 @@ in the calendar/event. ``` npm test npm run coverage -npm run browser-test ``` diff --git a/package-lock.json b/package-lock.json index fbae65ce5..d6e6b703f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,46 +1,46 @@ { "name": "ical-generator", - "version": "v2.0.0-develop", + "version": "7.0.0-develop.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ical-generator", - "version": "v2.0.0-develop", + "version": "7.0.0-develop.6", "license": "MIT", "dependencies": { "uuid-random": "^1.3.2" }, "devDependencies": { - "@qiwi/semantic-release-gh-pages-plugin": "^5.2.11", + "@qiwi/semantic-release-gh-pages-plugin": "^5.2.12", "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^6.0.3", "@semantic-release/git": "^10.0.1", - "@semantic-release/npm": "^11.0.2", + "@semantic-release/npm": "^11.0.3", "@touch4it/ical-timezones": "^1.9.0", - "@types/luxon": "^3.3.7", + "@types/luxon": "^3.4.2", "@types/mocha": "^10.0.6", - "@typescript-eslint/eslint-plugin": "^6.13.2", - "@typescript-eslint/parser": "^6.13.2", - "c8": "^8.0.1", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", + "c8": "^9.1.0", "dayjs": "^1.11.10", - "eslint": "^8.56.0", - "eslint-plugin-jsonc": "^2.11.2", + "eslint": "^8.57.0", + "eslint-plugin-jsonc": "^2.13.0", "esm": "^3.2.25", "license-checker": "^25.0.1", "luxon": "^3.4.4", - "mocha": "^10.2.0", + "mocha": "^10.3.0", "mochawesome": "^7.1.3", - "moment": "^2.29.4", - "moment-timezone": "^0.5.43", + "moment": "^2.30.1", + "moment-timezone": "^0.5.45", "nyc": "^15.1.0", "rrule": "^2.8.1", - "semantic-release": "^22.0.12", + "semantic-release": "^23.0.2", "semantic-release-license": "^1.0.2", "source-map-support": "^0.5.21", "ts-node": "^10.9.2", - "tsup": "^8.0.1", - "typedoc": "^0.25.4", + "tsup": "^8.0.2", + "typedoc": "^0.25.8", "typescript": "^5.3.3" }, "engines": { @@ -1058,22 +1058,22 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -1094,9 +1094,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { @@ -1449,9 +1449,9 @@ } }, "node_modules/@qiwi/semantic-release-gh-pages-plugin": { - "version": "5.2.11", - "resolved": "https://registry.npmjs.org/@qiwi/semantic-release-gh-pages-plugin/-/semantic-release-gh-pages-plugin-5.2.11.tgz", - "integrity": "sha512-F35RKLv+edv8sTyLnH+5IJG6ZGBTsewbTetC4sIY0Ajy6ZaASS0CRgZqcA+YoJWHoSHfU0crdW5DUjnNACAUrA==", + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/@qiwi/semantic-release-gh-pages-plugin/-/semantic-release-gh-pages-plugin-5.2.12.tgz", + "integrity": "sha512-noXI64+4MFwXy32g2qO+x8v5pXgVeqaIC9RU23zs5hl3qh0dB+8hVXC1vhxPREvhxQHvx6ha8Qy0XhKOKHnwpQ==", "dev": true, "dependencies": { "@qiwi/substrate": "^2.0.4", @@ -1464,7 +1464,7 @@ "debug": "^4.3.4", "execa": "^5.1.1", "gh-pages": "^6.0.0", - "git-url-parse": "^13.1.0", + "git-url-parse": "^14.0.0", "lodash": "^4.17.21", "queuefy": "^1.2.1", "read-pkg": "^5.2.0", @@ -1899,9 +1899,9 @@ } }, "node_modules/@semantic-release/npm": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.2.tgz", - "integrity": "sha512-owtf3RjyPvRE63iUKZ5/xO4uqjRpVQDUB9+nnXj0xwfIeM9pRl+cG+zGDzdftR4m3f2s4Wyf3SexW+kF5DFtWA==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.3.tgz", + "integrity": "sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==", "dev": true, "dependencies": { "@semantic-release/error": "^4.0.0", @@ -1911,7 +1911,7 @@ "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", "normalize-url": "^8.0.0", - "npm": "^10.0.0", + "npm": "^10.5.0", "rc": "^1.2.8", "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", @@ -2220,9 +2220,9 @@ } }, "node_modules/@sindresorhus/is": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz", - "integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "engines": { "node": ">=10" @@ -2322,9 +2322,9 @@ "dev": true }, "node_modules/@types/luxon": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.7.tgz", - "integrity": "sha512-gKc9P2d4g5uYwmy4s/MO/yOVPmvHyvzka1YH6i5dM03UrFofHSmgc0D0ymbDRStFWHusk6cwwF6nhLm/ckBbbQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", + "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==", "dev": true }, "node_modules/@types/mocha": { @@ -2367,22 +2367,22 @@ } }, "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz", - "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.0.tgz", + "integrity": "sha512-j6vT/kCulhG5wBmGtstKeiVr1rdXE4nk+DT1k6trYkwlrvW9eOF5ZbgKnd/YR6PcM4uTEXa0h6Fcvf6X7Dxl0w==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.13.2", - "@typescript-eslint/type-utils": "6.13.2", - "@typescript-eslint/utils": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", + "@typescript-eslint/scope-manager": "7.1.0", + "@typescript-eslint/type-utils": "7.1.0", + "@typescript-eslint/utils": "7.1.0", + "@typescript-eslint/visitor-keys": "7.1.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -2398,8 +2398,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -2408,15 +2408,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz", - "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.0.tgz", + "integrity": "sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.13.2", - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/typescript-estree": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", + "@typescript-eslint/scope-manager": "7.1.0", + "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/typescript-estree": "7.1.0", + "@typescript-eslint/visitor-keys": "7.1.0", "debug": "^4.3.4" }, "engines": { @@ -2427,7 +2427,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -2436,13 +2436,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", - "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.0.tgz", + "integrity": "sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2" + "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/visitor-keys": "7.1.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2453,13 +2453,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz", - "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.0.tgz", + "integrity": "sha512-UZIhv8G+5b5skkcuhgvxYWHjk7FW7/JP5lPASMEUoliAPwIH/rxoUSQPia2cuOj9AmDZmwUl1usKm85t5VUMew==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.13.2", - "@typescript-eslint/utils": "6.13.2", + "@typescript-eslint/typescript-estree": "7.1.0", + "@typescript-eslint/utils": "7.1.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -2471,7 +2471,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -2480,9 +2480,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", - "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.0.tgz", + "integrity": "sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2493,16 +2493,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", - "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.0.tgz", + "integrity": "sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", + "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/visitor-keys": "7.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -2519,18 +2520,42 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz", - "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.0.tgz", + "integrity": "sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.13.2", - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/scope-manager": "7.1.0", + "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/typescript-estree": "7.1.0", "semver": "^7.5.4" }, "engines": { @@ -2541,16 +2566,16 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", - "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.0.tgz", + "integrity": "sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/types": "7.1.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2690,9 +2715,9 @@ } }, "node_modules/ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", "dev": true }, "node_modules/ansi-styles": { @@ -2710,12 +2735,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "dev": true - }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -2919,19 +2938,18 @@ } }, "node_modules/c8": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/c8/-/c8-8.0.1.tgz", - "integrity": "sha512-EINpopxZNH1mETuI0DzRA4MZpAUH+IFiRhnmFD3vFr3vdrgxqi3VfE3KL0AIL+zDq8rC9bZqwM/VDmmoe04y7w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", + "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@istanbuljs/schema": "^0.1.3", "find-up": "^5.0.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.1.1", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.1.6", - "rimraf": "^3.0.2", "test-exclude": "^6.0.0", "v8-to-istanbul": "^9.0.0", "yargs": "^17.7.2", @@ -2941,7 +2959,7 @@ "c8": "bin/c8.js" }, "engines": { - "node": ">=12" + "node": ">=14.14.0" } }, "node_modules/c8/node_modules/cliui": { @@ -2958,6 +2976,34 @@ "node": ">=12" } }, + "node_modules/c8/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/c8/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/c8/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -3050,19 +3096,6 @@ "url": "https://opencollective.com/browserslist" } }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "dev": true, - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } - }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -3130,6 +3163,27 @@ "node": ">=6" } }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, "node_modules/cli-table3": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", @@ -3323,18 +3377,29 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", - "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "dependencies": { - "import-fresh": "^3.2.1", + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" + "parse-json": "^5.2.0" }, "engines": { "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/cosmiconfig/node_modules/argparse": { @@ -3574,9 +3639,9 @@ "dev": true }, "node_modules/env-ci": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-10.0.0.tgz", - "integrity": "sha512-U4xcd/utDYFgMh0yWj07R1H6L5fwhVbmxBCpnL0DbVSDZVnsC82HONw0wxtxNkIAcua3KtbomQvIk5xFZGAQJw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.0.0.tgz", + "integrity": "sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==", "dev": true, "dependencies": { "execa": "^8.0.0", @@ -3655,9 +3720,9 @@ } }, "node_modules/env-ci/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -3720,6 +3785,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -3800,16 +3874,16 @@ } }, "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -3855,10 +3929,13 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", - "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.4.1.tgz", + "integrity": "sha512-5N7ZaJG5pZxUeNNJfUchurLVrunD1xJvyg5kYOIVF8kg1f3ajTikmAu/5fZ9w100omNPOoMjngRszh/Q/uFGMg==", "dev": true, + "dependencies": { + "semver": "^7.5.4" + }, "engines": { "node": ">=12" }, @@ -3867,17 +3944,18 @@ } }, "node_modules/eslint-plugin-jsonc": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.11.2.tgz", - "integrity": "sha512-F6A0MZhIGRBPOswzzn4tJFXXkPLiLwJaMlQwz/Qj1qx+bV5MCn79vBeJh2ynMmtqqHloi54KDCnsT/KWrcCcnQ==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.13.0.tgz", + "integrity": "sha512-2wWdJfpO/UbZzPDABuUVvlUQjfMJa2p2iQfYt/oWxOMpXCcjuiMUSaA02gtY/Dbu82vpaSqc+O7Xq6ECHwtIxA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "eslint-compat-utils": "^0.1.2", + "eslint-compat-utils": "^0.4.0", "espree": "^9.6.1", "graphemer": "^1.4.0", "jsonc-eslint-parser": "^2.0.4", - "natural-compare": "^1.4.0" + "natural-compare": "^1.4.0", + "synckit": "^0.6.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4524,9 +4602,9 @@ } }, "node_modules/git-url-parse": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", - "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", + "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", "dev": true, "dependencies": { "git-up": "^7.0.0" @@ -4699,6 +4777,15 @@ "he": "bin/he" } }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/hook-std": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", @@ -5768,23 +5855,23 @@ } }, "node_modules/marked-terminal": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.0.0.tgz", - "integrity": "sha512-6rruICvqRfA4N+Mvdc0UyDbLA0A0nI5omtARIlin3P2F+aNc3EbW91Rd9HTuD0v9qWyHmNIu8Bt40gAnPfldsg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.0.0.tgz", + "integrity": "sha512-sNEx8nn9Ktcm6pL0TnRz8tnXq/mSS0Q1FRSwJOAqw4lAB4l49UeDf85Gm1n9RPFm5qurCPjwi1StAQT2XExhZw==", "dev": true, "dependencies": { "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", "chalk": "^5.3.0", + "cli-highlight": "^2.1.11", "cli-table3": "^0.6.3", - "node-emoji": "^2.1.0", + "node-emoji": "^2.1.3", "supports-hyperlinks": "^3.0.0" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "marked": ">=1 <10" + "marked": ">=1 <13" } }, "node_modules/marked-terminal/node_modules/chalk": { @@ -5912,9 +5999,9 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", + "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", "dev": true, "dependencies": { "ansi-colors": "4.1.1", @@ -5924,13 +6011,12 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -5945,10 +6031,6 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" } }, "node_modules/mocha/node_modules/argparse": { @@ -5966,6 +6048,25 @@ "balanced-match": "^1.0.0" } }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -6115,18 +6216,18 @@ } }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "dev": true, "engines": { "node": "*" } }, "node_modules/moment-timezone": { - "version": "0.5.43", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz", - "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==", + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", "dev": true, "dependencies": { "moment": "^2.29.4" @@ -6152,18 +6253,6 @@ "thenify-all": "^1.0.0" } }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6183,15 +6272,18 @@ "dev": true }, "node_modules/node-emoji": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.0.tgz", - "integrity": "sha512-tcsBm9C6FmPN5Wo7OjFi9lgMyJjvkAeirmjR/ax8Ttfqy4N8PoFic26uqFTIgayHPNI5FH4ltUvfh9kHzwcK9A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", "dev": true, "dependencies": { - "@sindresorhus/is": "^3.1.2", + "@sindresorhus/is": "^4.6.0", "char-regex": "^1.0.2", "emojilib": "^2.4.0", "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/node-fetch": { @@ -6292,9 +6384,9 @@ } }, "node_modules/npm": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.0.tgz", - "integrity": "sha512-Auyq6d4cfg/SY4URjZE2aePLOPzK4lUD+qyMxY/7HbxAvCnOCKtMlyLPcbLSOq9lhEGBZN800S1o+UmfjA5dTg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.5.0.tgz", + "integrity": "sha512-Ejxwvfh9YnWVU2yA5FzoYLTW52vxHCz+MHrOFg9Cc8IFgF/6f5AGPAvb5WTay5DIUP1NIfN3VBZ0cLlGO0Ys+A==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -6358,7 +6450,6 @@ "semver", "spdx-expression-parse", "ssri", - "strip-ansi", "supports-color", "tar", "text-table", @@ -6371,19 +6462,19 @@ "dev": true, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.2.0", - "@npmcli/config": "^8.0.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", "@npmcli/fs": "^3.1.0", "@npmcli/map-workspaces": "^3.0.4", "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.1", - "@sigstore/tuf": "^2.1.0", + "@npmcli/promise-spawn": "^7.0.1", + "@npmcli/run-script": "^7.0.4", + "@sigstore/tuf": "^2.3.1", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.0", + "cacache": "^18.0.2", "chalk": "^5.3.0", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "cli-columns": "^4.0.0", "cli-table3": "^0.6.3", "columnify": "^1.6.0", @@ -6394,45 +6485,44 @@ "hosted-git-info": "^7.0.1", "ini": "^4.1.1", "init-package-json": "^6.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.0", + "is-cidr": "^5.0.3", + "json-parse-even-better-errors": "^3.0.1", "libnpmaccess": "^8.0.1", - "libnpmdiff": "^6.0.2", - "libnpmexec": "^7.0.2", - "libnpmfund": "^5.0.0", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^7.0.4", + "libnpmfund": "^5.0.1", "libnpmhook": "^10.0.0", "libnpmorg": "^6.0.1", - "libnpmpack": "^6.0.2", - "libnpmpublish": "^9.0.1", + "libnpmpack": "^6.0.3", + "libnpmpublish": "^9.0.2", "libnpmsearch": "^7.0.0", "libnpmteam": "^6.0.0", - "libnpmversion": "^5.0.0", + "libnpmversion": "^5.0.1", "make-fetch-happen": "^13.0.0", "minimatch": "^9.0.3", "minipass": "^7.0.4", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^9.4.0", + "node-gyp": "^10.0.1", "nopt": "^7.2.0", "normalize-package-data": "^6.0.0", "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.2.0", + "npm-install-checks": "^6.3.0", "npm-package-arg": "^11.0.1", "npm-pick-manifest": "^9.0.0", "npm-profile": "^9.0.0", - "npm-registry-fetch": "^16.0.0", + "npm-registry-fetch": "^16.1.0", "npm-user-validate": "^2.0.0", "npmlog": "^7.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.4", + "pacote": "^17.0.6", "parse-conflict-json": "^3.0.1", "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", "read": "^2.1.0", - "semver": "^7.5.4", + "semver": "^7.6.0", "spdx-expression-parse": "^3.0.1", "ssri": "^10.0.5", - "strip-ansi": "^6.0.1", "supports-color": "^9.4.0", "tar": "^6.2.0", "text-table": "~0.2.0", @@ -6552,7 +6642,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.2.0", + "version": "2.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -6567,60 +6657,8 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/agent-base": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/https-proxy-agent": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/socks-proxy-agent": { - "version": "8.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.1", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.2.0", + "version": "7.4.0", "dev": true, "inBundle": true, "license": "ISC", @@ -6633,8 +6671,8 @@ "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.1", - "@npmcli/run-script": "^7.0.1", + "@npmcli/query": "^3.1.0", + "@npmcli/run-script": "^7.0.2", "bin-links": "^4.0.1", "cacache": "^18.0.0", "common-ancestor-path": "^1.0.1", @@ -6652,7 +6690,7 @@ "parse-conflict-json": "^3.0.0", "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.2", + "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "ssri": "^10.0.5", @@ -6667,13 +6705,13 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.0.0", + "version": "8.2.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "ini": "^4.1.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", @@ -6697,6 +6735,21 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.0", "dev": true, @@ -6710,7 +6763,7 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.3", + "version": "5.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -6811,7 +6864,7 @@ } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.0", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -6823,7 +6876,7 @@ } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.0.1", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -6835,15 +6888,15 @@ } }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "7.0.1", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", + "node-gyp": "^10.0.0", "which": "^4.0.0" }, "engines": { @@ -6861,19 +6914,28 @@ } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.1.0", + "version": "2.2.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1" + "@sigstore/protobuf-specs": "^0.3.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", + "version": "0.3.0", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -6882,13 +6944,14 @@ } }, "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.1.0", + "version": "2.2.3", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", "make-fetch-happen": "^13.0.0" }, "engines": { @@ -6896,25 +6959,30 @@ } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.1.0", + "version": "2.3.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1", - "tuf-js": "^2.1.0" + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.1.0", "dev": true, "inBundle": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0" + }, "engines": { - "node": ">= 10" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@tufjs/canonical-json": { @@ -6948,40 +7016,16 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/abort-controller": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.5.0", + "version": "7.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "humanize-ms": "^1.2.1" + "debug": "^4.3.4" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 14" } }, "node_modules/npm/node_modules/aggregate-error": { @@ -7007,15 +7051,12 @@ } }, "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", + "version": "6.2.1", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -7034,14 +7075,10 @@ "license": "MIT" }, "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.0", + "version": "4.0.2", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" - }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -7052,28 +7089,8 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/base64-js": { - "version": "1.5.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.2", + "version": "4.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -7105,30 +7122,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/npm/node_modules/buffer": { - "version": "6.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/npm/node_modules/builtins": { "version": "5.0.1", "dev": true, @@ -7139,7 +7132,7 @@ } }, "node_modules/npm/node_modules/cacache": { - "version": "18.0.0", + "version": "18.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -7149,7 +7142,7 @@ "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -7183,7 +7176,7 @@ } }, "node_modules/npm/node_modules/ci-info": { - "version": "3.8.0", + "version": "4.0.0", "dev": true, "funding": [ { @@ -7198,15 +7191,15 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", + "version": "4.0.3", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "ip-regex": "^4.1.0" + "ip-regex": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/clean-stack": { @@ -7256,7 +7249,7 @@ } }, "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.1", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -7310,12 +7303,6 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", "dev": true, @@ -7398,14 +7385,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/diff": { - "version": "5.1.0", + "version": "5.2.0", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -7450,24 +7431,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/event-target-shim": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/events": { - "version": "3.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", "dev": true, @@ -7511,17 +7474,14 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", + "version": "1.1.2", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/npm/node_modules/gauge": { "version": "5.0.1", @@ -7570,24 +7530,24 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hasown": { + "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/hosted-git-info": { "version": "7.0.1", "dev": true, @@ -7607,39 +7567,29 @@ "license": "BSD-2-Clause" }, "node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" + "node": ">= 14" } }, "node_modules/npm/node_modules/iconv-lite": { @@ -7655,28 +7605,8 @@ "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/ieee754": { - "version": "1.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" - }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.3", + "version": "6.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -7705,22 +7635,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/ini": { "version": "4.1.1", "dev": true, @@ -7748,40 +7662,56 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" }, "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", + "version": "5.0.3", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "^3.1.1" + "cidr-regex": "4.0.3" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/is-core-module": { - "version": "2.12.1", + "version": "2.13.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7826,8 +7756,14 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "MIT", @@ -7866,7 +7802,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.1", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -7879,12 +7815,12 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.2", + "version": "6.0.7", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.0", + "@npmcli/arborist": "^7.2.1", "@npmcli/disparity-colors": "^3.0.0", "@npmcli/installed-package-contents": "^2.0.2", "binary-extensions": "^2.2.0", @@ -7899,14 +7835,14 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.2", + "version": "7.0.8", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.0", - "@npmcli/run-script": "^7.0.1", - "ci-info": "^3.7.1", + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "ci-info": "^4.0.0", "npm-package-arg": "^11.0.1", "npmlog": "^7.0.1", "pacote": "^17.0.4", @@ -7921,19 +7857,19 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.0", + "version": "5.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.0" + "@npmcli/arborist": "^7.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.0", + "version": "10.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -7946,7 +7882,7 @@ } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.1", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -7959,13 +7895,13 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.2", + "version": "6.0.7", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.0", - "@npmcli/run-script": "^7.0.1", + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", "npm-package-arg": "^11.0.1", "pacote": "^17.0.4" }, @@ -7974,18 +7910,18 @@ } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.1", + "version": "9.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ci-info": "^3.6.1", + "ci-info": "^4.0.0", "normalize-package-data": "^6.0.0", "npm-package-arg": "^11.0.1", "npm-registry-fetch": "^16.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7", - "sigstore": "^2.1.0", + "sigstore": "^2.2.0", "ssri": "^10.0.5" }, "engines": { @@ -7993,7 +7929,7 @@ } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.0", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -8005,7 +7941,7 @@ } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.0", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -8018,13 +7954,13 @@ } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "5.0.0", + "version": "5.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.3", - "@npmcli/run-script": "^7.0.1", + "@npmcli/run-script": "^7.0.2", "json-parse-even-better-errors": "^3.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7" @@ -8034,7 +7970,7 @@ } }, "node_modules/npm/node_modules/lru-cache": { - "version": "10.0.1", + "version": "10.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -8089,27 +8025,15 @@ } }, "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm/node_modules/minipass-fetch": { @@ -8230,350 +8154,82 @@ "license": "MIT", "dependencies": { "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/node-gyp": { - "version": "9.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache": { - "version": "17.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { - "version": "10.3.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minipass": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/lru-cache": { - "version": "7.18.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { - "version": "11.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" + "yallist": "^4.0.0" }, "engines": { - "node": "*" + "node": ">= 8" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/minipass": { - "version": "5.0.0", + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", "dev": true, "inBundle": true, "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "6.0.0", + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", "dev": true, "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^1.0.0" - }, + "license": "MIT", "bin": { - "nopt": "bin/nopt.js" + "mkdirp": "bin/cmd.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": ">= 0.6" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", + "node_modules/npm/node_modules/node-gyp": { + "version": "10.0.1", "dev": true, "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" }, "bin": { - "node-which": "bin/node-which" + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 8" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/nopt": { @@ -8628,7 +8284,7 @@ } }, "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.2.0", + "version": "6.3.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -8664,12 +8320,12 @@ } }, "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.0", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.0" + "ignore-walk": "^6.0.4" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -8704,7 +8360,7 @@ } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "16.0.0", + "version": "16.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -8745,15 +8401,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", "dev": true, @@ -8770,7 +8417,7 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "17.0.4", + "version": "17.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -8790,7 +8437,7 @@ "promise-retry": "^2.0.1", "read-package-json": "^7.0.0", "read-package-json-fast": "^3.0.0", - "sigstore": "^2.0.0", + "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, @@ -8815,15 +8462,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm/node_modules/path-key": { "version": "3.1.1", "dev": true, @@ -8850,7 +8488,7 @@ } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.13", + "version": "6.0.15", "dev": true, "inBundle": true, "license": "MIT", @@ -8871,15 +8509,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/process": { - "version": "0.11.10", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", "dev": true, @@ -8890,7 +8519,7 @@ } }, "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.2", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -8986,21 +8615,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/readable-stream": { - "version": "4.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/npm/node_modules/retry": { "version": "0.12.0", "dev": true, @@ -9010,83 +8624,6 @@ "node": ">= 4" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", "dev": true, @@ -9095,7 +8632,7 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.0", "dev": true, "inBundle": true, "license": "ISC", @@ -9149,7 +8686,7 @@ } }, "node_modules/npm/node_modules/signal-exit": { - "version": "4.0.2", + "version": "4.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -9161,15 +8698,17 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "2.1.0", + "version": "2.2.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.1.0", - "@sigstore/tuf": "^2.1.0" + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", + "@sigstore/sign": "^2.2.3", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.1.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -9186,31 +8725,31 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.7.1", + "version": "2.8.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 16.0.0", "npm": ">= 3.0.0" } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "engines": { - "node": ">= 10" + "node": ">= 14" } }, "node_modules/npm/node_modules/spdx-correct": { @@ -9224,7 +8763,7 @@ } }, "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", + "version": "2.5.0", "dev": true, "inBundle": true, "license": "CC-BY-3.0" @@ -9240,7 +8779,7 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.13", + "version": "3.0.17", "dev": true, "inBundle": true, "license": "CC0-1.0" @@ -9257,15 +8796,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/npm/node_modules/string-width": { "version": "4.2.3", "dev": true, @@ -9404,7 +8934,7 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "2.1.0", + "version": "2.2.0", "dev": true, "inBundle": true, "license": "MIT", @@ -9552,20 +9082,23 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, "inBundle": true, "license": "MIT", @@ -9573,7 +9106,7 @@ "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { @@ -9614,12 +9147,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", "dev": true, @@ -10138,6 +9665,27 @@ "parse-path": "^7.0.0" } }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -10888,15 +10436,6 @@ "node": ">=8.10.0" } }, - "node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", - "dev": true, - "dependencies": { - "esprima": "~4.0.0" - } - }, "node_modules/registry-auth-token": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", @@ -11050,9 +10589,9 @@ "dev": true }, "node_modules/semantic-release": { - "version": "22.0.12", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.12.tgz", - "integrity": "sha512-0mhiCR/4sZb00RVFJIUlMuiBkW3NMpVIW2Gse7noqEMoFGkvfPPAImEQbkBV8xga4KOPP4FdTRYuLLy32R1fPw==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.2.tgz", + "integrity": "sha512-OnVYJ6Xgzwe1x8MKswba7RU9+5djS1MWRTrTn5qsq3xZYpslroZkV9Pt0dA2YcIuieeuSZWJhn+yUWoBUHO5Fw==", "dev": true, "dependencies": { "@semantic-release/commit-analyzer": "^11.0.0", @@ -11061,9 +10600,9 @@ "@semantic-release/npm": "^11.0.0", "@semantic-release/release-notes-generator": "^12.0.0", "aggregate-error": "^5.0.0", - "cosmiconfig": "^8.0.0", + "cosmiconfig": "^9.0.0", "debug": "^4.0.0", - "env-ci": "^10.0.0", + "env-ci": "^11.0.0", "execa": "^8.0.0", "figures": "^6.0.0", "find-versions": "^5.1.0", @@ -11073,8 +10612,8 @@ "hosted-git-info": "^7.0.0", "import-from-esm": "^1.3.1", "lodash-es": "^4.17.21", - "marked": "^9.0.0", - "marked-terminal": "^6.0.0", + "marked": "^12.0.0", + "marked-terminal": "^7.0.0", "micromatch": "^4.0.2", "p-each-series": "^3.0.0", "p-reduce": "^3.0.0", @@ -11089,7 +10628,7 @@ "semantic-release": "bin/semantic-release.js" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" } }, "node_modules/semantic-release-license": { @@ -11233,15 +10772,15 @@ } }, "node_modules/semantic-release/node_modules/marked": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.2.tgz", - "integrity": "sha512-qoKMJqK0w6vkLk8+KnKZAH6neUZSNaQqVZ/h2yZ9S7CbLuFHyS2viB0jnqcWF9UKjwsAbMrQtnQhdmdvOVOw9w==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.0.tgz", + "integrity": "sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w==", "dev": true, "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 16" + "node": ">= 18" } }, "node_modules/semantic-release/node_modules/mimic-fn": { @@ -11515,9 +11054,9 @@ } }, "node_modules/shiki": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", - "integrity": "sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", + "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", "dev": true, "dependencies": { "ansi-sequence-parser": "^1.1.0", @@ -11961,6 +11500,18 @@ "node": ">=14.18" } }, + "node_modules/synckit": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.6.2.tgz", + "integrity": "sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.20" + } + }, "node_modules/tcomb": { "version": "3.2.29", "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-3.2.29.tgz", @@ -12190,12 +11741,12 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", - "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" @@ -12266,9 +11817,9 @@ "dev": true }, "node_modules/tsup": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.1.tgz", - "integrity": "sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.2.tgz", + "integrity": "sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==", "dev": true, "dependencies": { "bundle-require": "^4.0.0", @@ -12375,15 +11926,15 @@ } }, "node_modules/typedoc": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.4.tgz", - "integrity": "sha512-Du9ImmpBCw54bX275yJrxPVnjdIyJO/84co0/L9mwe0R3G4FSR6rQ09AlXVRvZEGMUg09+z/usc8mgygQ1aidA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.8.tgz", + "integrity": "sha512-mh8oLW66nwmeB9uTa0Bdcjfis+48bAjSH3uqdzSuSawfduROQLlXw//WSNZLYDdhmMVB7YcYZicq6e8T0d271A==", "dev": true, "dependencies": { "lunr": "^2.3.9", "marked": "^4.3.0", "minimatch": "^9.0.3", - "shiki": "^0.14.1" + "shiki": "^0.14.7" }, "bin": { "typedoc": "bin/typedoc" @@ -13442,19 +12993,19 @@ } }, "@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true }, "@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" } }, @@ -13465,9 +13016,9 @@ "dev": true }, "@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -13738,9 +13289,9 @@ } }, "@qiwi/semantic-release-gh-pages-plugin": { - "version": "5.2.11", - "resolved": "https://registry.npmjs.org/@qiwi/semantic-release-gh-pages-plugin/-/semantic-release-gh-pages-plugin-5.2.11.tgz", - "integrity": "sha512-F35RKLv+edv8sTyLnH+5IJG6ZGBTsewbTetC4sIY0Ajy6ZaASS0CRgZqcA+YoJWHoSHfU0crdW5DUjnNACAUrA==", + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/@qiwi/semantic-release-gh-pages-plugin/-/semantic-release-gh-pages-plugin-5.2.12.tgz", + "integrity": "sha512-noXI64+4MFwXy32g2qO+x8v5pXgVeqaIC9RU23zs5hl3qh0dB+8hVXC1vhxPREvhxQHvx6ha8Qy0XhKOKHnwpQ==", "dev": true, "requires": { "@qiwi/substrate": "^2.0.4", @@ -13753,7 +13304,7 @@ "debug": "^4.3.4", "execa": "^5.1.1", "gh-pages": "^6.0.0", - "git-url-parse": "^13.1.0", + "git-url-parse": "^14.0.0", "lodash": "^4.17.21", "queuefy": "^1.2.1", "read-pkg": "^5.2.0", @@ -14046,9 +13597,9 @@ } }, "@semantic-release/npm": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.2.tgz", - "integrity": "sha512-owtf3RjyPvRE63iUKZ5/xO4uqjRpVQDUB9+nnXj0xwfIeM9pRl+cG+zGDzdftR4m3f2s4Wyf3SexW+kF5DFtWA==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.3.tgz", + "integrity": "sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==", "dev": true, "requires": { "@semantic-release/error": "^4.0.0", @@ -14058,7 +13609,7 @@ "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", "normalize-url": "^8.0.0", - "npm": "^10.0.0", + "npm": "^10.5.0", "rc": "^1.2.8", "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", @@ -14245,9 +13796,9 @@ } }, "@sindresorhus/is": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz", - "integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true }, "@touch4it/ical-timezones": { @@ -14338,9 +13889,9 @@ "dev": true }, "@types/luxon": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.7.tgz", - "integrity": "sha512-gKc9P2d4g5uYwmy4s/MO/yOVPmvHyvzka1YH6i5dM03UrFofHSmgc0D0ymbDRStFWHusk6cwwF6nhLm/ckBbbQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", + "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==", "dev": true }, "@types/mocha": { @@ -14383,22 +13934,22 @@ } }, "@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz", - "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.0.tgz", + "integrity": "sha512-j6vT/kCulhG5wBmGtstKeiVr1rdXE4nk+DT1k6trYkwlrvW9eOF5ZbgKnd/YR6PcM4uTEXa0h6Fcvf6X7Dxl0w==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.13.2", - "@typescript-eslint/type-utils": "6.13.2", - "@typescript-eslint/utils": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", + "@typescript-eslint/scope-manager": "7.1.0", + "@typescript-eslint/type-utils": "7.1.0", + "@typescript-eslint/utils": "7.1.0", + "@typescript-eslint/visitor-keys": "7.1.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -14408,83 +13959,104 @@ } }, "@typescript-eslint/parser": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz", - "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.0.tgz", + "integrity": "sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.13.2", - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/typescript-estree": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", + "@typescript-eslint/scope-manager": "7.1.0", + "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/typescript-estree": "7.1.0", + "@typescript-eslint/visitor-keys": "7.1.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", - "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.0.tgz", + "integrity": "sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==", "dev": true, "requires": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2" + "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/visitor-keys": "7.1.0" } }, "@typescript-eslint/type-utils": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz", - "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.0.tgz", + "integrity": "sha512-UZIhv8G+5b5skkcuhgvxYWHjk7FW7/JP5lPASMEUoliAPwIH/rxoUSQPia2cuOj9AmDZmwUl1usKm85t5VUMew==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "6.13.2", - "@typescript-eslint/utils": "6.13.2", + "@typescript-eslint/typescript-estree": "7.1.0", + "@typescript-eslint/utils": "7.1.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/types": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", - "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.0.tgz", + "integrity": "sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", - "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.0.tgz", + "integrity": "sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==", "dev": true, "requires": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", + "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/visitor-keys": "7.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "@typescript-eslint/utils": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz", - "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.0.tgz", + "integrity": "sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.13.2", - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/scope-manager": "7.1.0", + "@typescript-eslint/types": "7.1.0", + "@typescript-eslint/typescript-estree": "7.1.0", "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", - "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.0.tgz", + "integrity": "sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==", "dev": true, "requires": { - "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/types": "7.1.0", "eslint-visitor-keys": "^3.4.1" } }, @@ -14580,9 +14152,9 @@ "dev": true }, "ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", "dev": true }, "ansi-styles": { @@ -14594,12 +14166,6 @@ "color-convert": "^2.0.1" } }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "dev": true - }, "any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -14766,19 +14332,18 @@ } }, "c8": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/c8/-/c8-8.0.1.tgz", - "integrity": "sha512-EINpopxZNH1mETuI0DzRA4MZpAUH+IFiRhnmFD3vFr3vdrgxqi3VfE3KL0AIL+zDq8rC9bZqwM/VDmmoe04y7w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", + "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", "@istanbuljs/schema": "^0.1.3", "find-up": "^5.0.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.1.1", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.1.6", - "rimraf": "^3.0.2", "test-exclude": "^6.0.0", "v8-to-istanbul": "^9.0.0", "yargs": "^17.7.2", @@ -14796,6 +14361,22 @@ "wrap-ansi": "^7.0.0" } }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -14865,16 +14446,6 @@ "integrity": "sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw==", "dev": true }, - "cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "dev": true, - "requires": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - } - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -14919,6 +14490,20 @@ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, + "cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + } + }, "cli-table3": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", @@ -15077,15 +14662,15 @@ "dev": true }, "cosmiconfig": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", - "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "requires": { - "import-fresh": "^3.2.1", + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" + "parse-json": "^5.2.0" }, "dependencies": { "argparse": { @@ -15276,9 +14861,9 @@ "dev": true }, "env-ci": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-10.0.0.tgz", - "integrity": "sha512-U4xcd/utDYFgMh0yWj07R1H6L5fwhVbmxBCpnL0DbVSDZVnsC82HONw0wxtxNkIAcua3KtbomQvIk5xFZGAQJw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.0.0.tgz", + "integrity": "sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==", "dev": true, "requires": { "execa": "^8.0.0", @@ -15327,9 +14912,9 @@ "dev": true }, "npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", "dev": true, "requires": { "path-key": "^4.0.0" @@ -15364,6 +14949,12 @@ } } }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -15428,16 +15019,16 @@ "dev": true }, "eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -15500,24 +15091,27 @@ } }, "eslint-compat-utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", - "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.4.1.tgz", + "integrity": "sha512-5N7ZaJG5pZxUeNNJfUchurLVrunD1xJvyg5kYOIVF8kg1f3ajTikmAu/5fZ9w100omNPOoMjngRszh/Q/uFGMg==", "dev": true, - "requires": {} + "requires": { + "semver": "^7.5.4" + } }, "eslint-plugin-jsonc": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.11.2.tgz", - "integrity": "sha512-F6A0MZhIGRBPOswzzn4tJFXXkPLiLwJaMlQwz/Qj1qx+bV5MCn79vBeJh2ynMmtqqHloi54KDCnsT/KWrcCcnQ==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.13.0.tgz", + "integrity": "sha512-2wWdJfpO/UbZzPDABuUVvlUQjfMJa2p2iQfYt/oWxOMpXCcjuiMUSaA02gtY/Dbu82vpaSqc+O7Xq6ECHwtIxA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "eslint-compat-utils": "^0.1.2", + "eslint-compat-utils": "^0.4.0", "espree": "^9.6.1", "graphemer": "^1.4.0", "jsonc-eslint-parser": "^2.0.4", - "natural-compare": "^1.4.0" + "natural-compare": "^1.4.0", + "synckit": "^0.6.0" } }, "eslint-scope": { @@ -15961,9 +15555,9 @@ } }, "git-url-parse": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", - "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", + "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", "dev": true, "requires": { "git-up": "^7.0.0" @@ -16085,6 +15679,12 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true + }, "hook-std": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", @@ -16914,16 +16514,16 @@ "dev": true }, "marked-terminal": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.0.0.tgz", - "integrity": "sha512-6rruICvqRfA4N+Mvdc0UyDbLA0A0nI5omtARIlin3P2F+aNc3EbW91Rd9HTuD0v9qWyHmNIu8Bt40gAnPfldsg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.0.0.tgz", + "integrity": "sha512-sNEx8nn9Ktcm6pL0TnRz8tnXq/mSS0Q1FRSwJOAqw4lAB4l49UeDf85Gm1n9RPFm5qurCPjwi1StAQT2XExhZw==", "dev": true, "requires": { "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", "chalk": "^5.3.0", + "cli-highlight": "^2.1.11", "cli-table3": "^0.6.3", - "node-emoji": "^2.1.0", + "node-emoji": "^2.1.3", "supports-hyperlinks": "^3.0.0" }, "dependencies": { @@ -17015,9 +16615,9 @@ } }, "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", + "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", "dev": true, "requires": { "ansi-colors": "4.1.1", @@ -17027,13 +16627,12 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -17058,6 +16657,19 @@ "balanced-match": "^1.0.0" } }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -17178,15 +16790,15 @@ } }, "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "dev": true }, "moment-timezone": { - "version": "0.5.43", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz", - "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==", + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", "dev": true, "requires": { "moment": "^2.29.4" @@ -17209,12 +16821,6 @@ "thenify-all": "^1.0.0" } }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -17234,12 +16840,12 @@ "dev": true }, "node-emoji": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.0.tgz", - "integrity": "sha512-tcsBm9C6FmPN5Wo7OjFi9lgMyJjvkAeirmjR/ax8Ttfqy4N8PoFic26uqFTIgayHPNI5FH4ltUvfh9kHzwcK9A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", "dev": true, "requires": { - "@sindresorhus/is": "^3.1.2", + "@sindresorhus/is": "^4.6.0", "char-regex": "^1.0.2", "emojilib": "^2.4.0", "skin-tone": "^2.0.0" @@ -17322,25 +16928,25 @@ "dev": true }, "npm": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.0.tgz", - "integrity": "sha512-Auyq6d4cfg/SY4URjZE2aePLOPzK4lUD+qyMxY/7HbxAvCnOCKtMlyLPcbLSOq9lhEGBZN800S1o+UmfjA5dTg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.5.0.tgz", + "integrity": "sha512-Ejxwvfh9YnWVU2yA5FzoYLTW52vxHCz+MHrOFg9Cc8IFgF/6f5AGPAvb5WTay5DIUP1NIfN3VBZ0cLlGO0Ys+A==", "dev": true, "requires": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.2.0", - "@npmcli/config": "^8.0.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", "@npmcli/fs": "^3.1.0", "@npmcli/map-workspaces": "^3.0.4", "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.1", - "@sigstore/tuf": "^2.1.0", + "@npmcli/promise-spawn": "^7.0.1", + "@npmcli/run-script": "^7.0.4", + "@sigstore/tuf": "^2.3.1", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.0", + "cacache": "^18.0.2", "chalk": "^5.3.0", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "cli-columns": "^4.0.0", "cli-table3": "^0.6.3", "columnify": "^1.6.0", @@ -17351,45 +16957,44 @@ "hosted-git-info": "^7.0.1", "ini": "^4.1.1", "init-package-json": "^6.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.0", + "is-cidr": "^5.0.3", + "json-parse-even-better-errors": "^3.0.1", "libnpmaccess": "^8.0.1", - "libnpmdiff": "^6.0.2", - "libnpmexec": "^7.0.2", - "libnpmfund": "^5.0.0", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^7.0.4", + "libnpmfund": "^5.0.1", "libnpmhook": "^10.0.0", "libnpmorg": "^6.0.1", - "libnpmpack": "^6.0.2", - "libnpmpublish": "^9.0.1", + "libnpmpack": "^6.0.3", + "libnpmpublish": "^9.0.2", "libnpmsearch": "^7.0.0", "libnpmteam": "^6.0.0", - "libnpmversion": "^5.0.0", + "libnpmversion": "^5.0.1", "make-fetch-happen": "^13.0.0", "minimatch": "^9.0.3", "minipass": "^7.0.4", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^9.4.0", + "node-gyp": "^10.0.1", "nopt": "^7.2.0", "normalize-package-data": "^6.0.0", "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.2.0", + "npm-install-checks": "^6.3.0", "npm-package-arg": "^11.0.1", "npm-pick-manifest": "^9.0.0", "npm-profile": "^9.0.0", - "npm-registry-fetch": "^16.0.0", + "npm-registry-fetch": "^16.1.0", "npm-user-validate": "^2.0.0", "npmlog": "^7.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.4", + "pacote": "^17.0.6", "parse-conflict-json": "^3.0.1", "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", "read": "^2.1.0", - "semver": "^7.5.4", + "semver": "^7.6.0", "spdx-expression-parse": "^3.0.1", "ssri": "^10.0.5", - "strip-ansi": "^6.0.1", "supports-color": "^9.4.0", "tar": "^6.2.0", "text-table": "~0.2.0", @@ -17455,7 +17060,7 @@ "dev": true }, "@npmcli/agent": { - "version": "2.2.0", + "version": "2.2.1", "bundled": true, "dev": true, "requires": { @@ -17464,48 +17069,10 @@ "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", "socks-proxy-agent": "^8.0.1" - }, - "dependencies": { - "agent-base": { - "version": "7.1.0", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.3.4" - } - }, - "http-proxy-agent": { - "version": "7.0.0", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - } - }, - "https-proxy-agent": { - "version": "7.0.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^7.0.2", - "debug": "4" - } - }, - "socks-proxy-agent": { - "version": "8.0.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^7.0.1", - "debug": "^4.3.4", - "socks": "^2.7.1" - } - } } }, "@npmcli/arborist": { - "version": "7.2.0", + "version": "7.4.0", "bundled": true, "dev": true, "requires": { @@ -17517,8 +17084,8 @@ "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.1", - "@npmcli/run-script": "^7.0.1", + "@npmcli/query": "^3.1.0", + "@npmcli/run-script": "^7.0.2", "bin-links": "^4.0.1", "cacache": "^18.0.0", "common-ancestor-path": "^1.0.1", @@ -17536,7 +17103,7 @@ "parse-conflict-json": "^3.0.0", "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.2", + "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "ssri": "^10.0.5", @@ -17545,12 +17112,12 @@ } }, "@npmcli/config": { - "version": "8.0.0", + "version": "8.2.0", "bundled": true, "dev": true, "requires": { "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "ini": "^4.1.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", @@ -17565,6 +17132,16 @@ "dev": true, "requires": { "ansi-styles": "^4.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + } } }, "@npmcli/fs": { @@ -17576,7 +17153,7 @@ } }, "@npmcli/git": { - "version": "5.0.3", + "version": "5.0.4", "bundled": true, "dev": true, "requires": { @@ -17646,7 +17223,7 @@ } }, "@npmcli/promise-spawn": { - "version": "7.0.0", + "version": "7.0.1", "bundled": true, "dev": true, "requires": { @@ -17654,7 +17231,7 @@ } }, "@npmcli/query": { - "version": "3.0.1", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { @@ -17662,14 +17239,14 @@ } }, "@npmcli/run-script": { - "version": "7.0.1", + "version": "7.0.4", "bundled": true, "dev": true, "requires": { "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", + "node-gyp": "^10.0.0", "which": "^4.0.0" } }, @@ -17680,41 +17257,52 @@ "optional": true }, "@sigstore/bundle": { - "version": "2.1.0", + "version": "2.2.0", "bundled": true, "dev": true, "requires": { - "@sigstore/protobuf-specs": "^0.2.1" + "@sigstore/protobuf-specs": "^0.3.0" } }, + "@sigstore/core": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "@sigstore/protobuf-specs": { - "version": "0.2.1", + "version": "0.3.0", "bundled": true, "dev": true }, "@sigstore/sign": { - "version": "2.1.0", + "version": "2.2.3", "bundled": true, "dev": true, "requires": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", "make-fetch-happen": "^13.0.0" } }, "@sigstore/tuf": { - "version": "2.1.0", + "version": "2.3.1", "bundled": true, "dev": true, "requires": { - "@sigstore/protobuf-specs": "^0.2.1", - "tuf-js": "^2.1.0" + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" } }, - "@tootallnate/once": { - "version": "2.0.0", + "@sigstore/verify": { + "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0" + } }, "@tufjs/canonical-json": { "version": "2.0.0", @@ -17735,28 +17323,12 @@ "bundled": true, "dev": true }, - "abort-controller": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, "agent-base": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.5.0", + "version": "7.1.0", "bundled": true, "dev": true, "requires": { - "humanize-ms": "^1.2.1" + "debug": "^4.3.4" } }, "aggregate-error": { @@ -17774,12 +17346,9 @@ "dev": true }, "ansi-styles": { - "version": "4.3.0", + "version": "6.2.1", "bundled": true, - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } + "dev": true }, "aproba": { "version": "2.0.0", @@ -17792,26 +17361,17 @@ "dev": true }, "are-we-there-yet": { - "version": "4.0.0", + "version": "4.0.2", "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" - } + "dev": true }, "balanced-match": { "version": "1.0.2", "bundled": true, "dev": true }, - "base64-js": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, "bin-links": { - "version": "4.0.2", + "version": "4.0.3", "bundled": true, "dev": true, "requires": { @@ -17834,15 +17394,6 @@ "balanced-match": "^1.0.0" } }, - "buffer": { - "version": "6.0.3", - "bundled": true, - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "builtins": { "version": "5.0.1", "bundled": true, @@ -17852,7 +17403,7 @@ } }, "cacache": { - "version": "18.0.0", + "version": "18.0.2", "bundled": true, "dev": true, "requires": { @@ -17861,7 +17412,7 @@ "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -17881,16 +17432,16 @@ "dev": true }, "ci-info": { - "version": "3.8.0", + "version": "4.0.0", "bundled": true, "dev": true }, "cidr-regex": { - "version": "3.1.1", + "version": "4.0.3", "bundled": true, "dev": true, "requires": { - "ip-regex": "^4.1.0" + "ip-regex": "^5.0.0" } }, "clean-stack": { @@ -17922,7 +17473,7 @@ "dev": true }, "cmd-shim": { - "version": "6.0.1", + "version": "6.0.2", "bundled": true, "dev": true }, @@ -17958,11 +17509,6 @@ "bundled": true, "dev": true }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, "console-control-strings": { "version": "1.1.0", "bundled": true, @@ -18016,13 +17562,8 @@ "clone": "^1.0.2" } }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "diff": { - "version": "5.1.0", + "version": "5.2.0", "bundled": true, "dev": true }, @@ -18055,16 +17596,6 @@ "bundled": true, "dev": true }, - "event-target-shim": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "events": { - "version": "3.3.0", - "bundled": true, - "dev": true - }, "exponential-backoff": { "version": "3.1.1", "bundled": true, @@ -18092,13 +17623,8 @@ "minipass": "^7.0.3" } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "function-bind": { - "version": "1.1.1", + "version": "1.1.2", "bundled": true, "dev": true }, @@ -18134,19 +17660,19 @@ "bundled": true, "dev": true }, - "has": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true }, + "hasown": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "hosted-git-info": { "version": "7.0.1", "bundled": true, @@ -18161,32 +17687,23 @@ "dev": true }, "http-proxy-agent": { - "version": "5.0.0", + "version": "7.0.2", "bundled": true, "dev": true, "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" } }, "https-proxy-agent": { - "version": "5.0.1", + "version": "7.0.4", "bundled": true, "dev": true, "requires": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" } }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, "iconv-lite": { "version": "0.6.3", "bundled": true, @@ -18196,13 +17713,8 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "ieee754": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, "ignore-walk": { - "version": "6.0.3", + "version": "6.0.4", "bundled": true, "dev": true, "requires": { @@ -18219,20 +17731,6 @@ "bundled": true, "dev": true }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, "ini": { "version": "4.1.1", "bundled": true, @@ -18252,30 +17750,41 @@ "validate-npm-package-name": "^5.0.0" } }, - "ip": { - "version": "2.0.0", + "ip-address": { + "version": "9.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.3", + "bundled": true, + "dev": true + } + } }, "ip-regex": { - "version": "4.3.0", + "version": "5.0.0", "bundled": true, "dev": true }, "is-cidr": { - "version": "4.0.2", + "version": "5.0.3", "bundled": true, "dev": true, "requires": { - "cidr-regex": "^3.1.1" + "cidr-regex": "4.0.3" } }, "is-core-module": { - "version": "2.12.1", + "version": "2.13.1", "bundled": true, "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-fullwidth-code-point": { @@ -18302,8 +17811,13 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "jsbn": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, "json-parse-even-better-errors": { - "version": "3.0.0", + "version": "3.0.1", "bundled": true, "dev": true }, @@ -18328,7 +17842,7 @@ "dev": true }, "libnpmaccess": { - "version": "8.0.1", + "version": "8.0.2", "bundled": true, "dev": true, "requires": { @@ -18337,11 +17851,11 @@ } }, "libnpmdiff": { - "version": "6.0.2", + "version": "6.0.7", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^7.2.0", + "@npmcli/arborist": "^7.2.1", "@npmcli/disparity-colors": "^3.0.0", "@npmcli/installed-package-contents": "^2.0.2", "binary-extensions": "^2.2.0", @@ -18353,13 +17867,13 @@ } }, "libnpmexec": { - "version": "7.0.2", + "version": "7.0.8", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^7.2.0", - "@npmcli/run-script": "^7.0.1", - "ci-info": "^3.7.1", + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "ci-info": "^4.0.0", "npm-package-arg": "^11.0.1", "npmlog": "^7.0.1", "pacote": "^17.0.4", @@ -18371,15 +17885,15 @@ } }, "libnpmfund": { - "version": "5.0.0", + "version": "5.0.5", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^7.2.0" + "@npmcli/arborist": "^7.2.1" } }, "libnpmhook": { - "version": "10.0.0", + "version": "10.0.1", "bundled": true, "dev": true, "requires": { @@ -18388,7 +17902,7 @@ } }, "libnpmorg": { - "version": "6.0.1", + "version": "6.0.2", "bundled": true, "dev": true, "requires": { @@ -18397,33 +17911,33 @@ } }, "libnpmpack": { - "version": "6.0.2", + "version": "6.0.7", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^7.2.0", - "@npmcli/run-script": "^7.0.1", + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", "npm-package-arg": "^11.0.1", "pacote": "^17.0.4" } }, "libnpmpublish": { - "version": "9.0.1", + "version": "9.0.4", "bundled": true, "dev": true, "requires": { - "ci-info": "^3.6.1", + "ci-info": "^4.0.0", "normalize-package-data": "^6.0.0", "npm-package-arg": "^11.0.1", "npm-registry-fetch": "^16.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7", - "sigstore": "^2.1.0", + "sigstore": "^2.2.0", "ssri": "^10.0.5" } }, "libnpmsearch": { - "version": "7.0.0", + "version": "7.0.1", "bundled": true, "dev": true, "requires": { @@ -18431,7 +17945,7 @@ } }, "libnpmteam": { - "version": "6.0.0", + "version": "6.0.1", "bundled": true, "dev": true, "requires": { @@ -18440,19 +17954,19 @@ } }, "libnpmversion": { - "version": "5.0.0", + "version": "5.0.2", "bundled": true, "dev": true, "requires": { "@npmcli/git": "^5.0.3", - "@npmcli/run-script": "^7.0.1", + "@npmcli/run-script": "^7.0.2", "json-parse-even-better-errors": "^3.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7" } }, "lru-cache": { - "version": "10.0.1", + "version": "10.2.0", "bundled": true, "dev": true }, @@ -18488,21 +18002,11 @@ "dev": true }, "minipass-collect": { - "version": "1.0.2", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } + "minipass": "^7.0.3" } }, "minipass-fetch": { @@ -18629,210 +18133,20 @@ "dev": true }, "node-gyp": { - "version": "9.4.0", + "version": "10.0.1", "bundled": true, "dev": true, "requires": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", + "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "17.1.4", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "10.3.3", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.3", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.0.3", - "bundled": true, - "dev": true - } - } - }, - "gauge": { - "version": "4.0.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "glob": { - "version": "7.2.3", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "lru-cache": { - "version": "7.18.3", - "bundled": true, - "dev": true - }, - "make-fetch-happen": { - "version": "11.1.1", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "nopt": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "npmlog": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "readable-stream": { - "version": "3.6.2", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "signal-exit": { - "version": "3.0.7", - "bundled": true, - "dev": true - }, - "which": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "which": "^4.0.0" } }, "nopt": { @@ -18868,7 +18182,7 @@ } }, "npm-install-checks": { - "version": "6.2.0", + "version": "6.3.0", "bundled": true, "dev": true, "requires": { @@ -18892,11 +18206,11 @@ } }, "npm-packlist": { - "version": "8.0.0", + "version": "8.0.2", "bundled": true, "dev": true, "requires": { - "ignore-walk": "^6.0.0" + "ignore-walk": "^6.0.4" } }, "npm-pick-manifest": { @@ -18920,7 +18234,7 @@ } }, "npm-registry-fetch": { - "version": "16.0.0", + "version": "16.1.0", "bundled": true, "dev": true, "requires": { @@ -18949,14 +18263,6 @@ "set-blocking": "^2.0.0" } }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, "p-map": { "version": "4.0.0", "bundled": true, @@ -18966,7 +18272,7 @@ } }, "pacote": { - "version": "17.0.4", + "version": "17.0.6", "bundled": true, "dev": true, "requires": { @@ -18985,7 +18291,7 @@ "promise-retry": "^2.0.1", "read-package-json": "^7.0.0", "read-package-json-fast": "^3.0.0", - "sigstore": "^2.0.0", + "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" } @@ -19000,11 +18306,6 @@ "just-diff-apply": "^5.2.0" } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "path-key": { "version": "3.1.1", "bundled": true, @@ -19020,7 +18321,7 @@ } }, "postcss-selector-parser": { - "version": "6.0.13", + "version": "6.0.15", "bundled": true, "dev": true, "requires": { @@ -19033,18 +18334,13 @@ "bundled": true, "dev": true }, - "process": { - "version": "0.11.10", - "bundled": true, - "dev": true - }, "promise-all-reject-late": { "version": "1.0.1", "bundled": true, "dev": true }, "promise-call-limit": { - "version": "1.0.2", + "version": "3.0.1", "bundled": true, "dev": true }, @@ -19108,67 +18404,11 @@ "npm-normalize-package-bin": "^3.0.0" } }, - "readable-stream": { - "version": "4.4.0", - "bundled": true, - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - } - }, "retry": { "version": "0.12.0", "bundled": true, "dev": true }, - "rimraf": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "safe-buffer": { - "version": "5.2.1", - "bundled": true, - "dev": true - }, "safer-buffer": { "version": "2.1.2", "bundled": true, @@ -19176,7 +18416,7 @@ "optional": true }, "semver": { - "version": "7.5.4", + "version": "7.6.0", "bundled": true, "dev": true, "requires": { @@ -19212,19 +18452,21 @@ "dev": true }, "signal-exit": { - "version": "4.0.2", + "version": "4.1.0", "bundled": true, "dev": true }, "sigstore": { - "version": "2.1.0", + "version": "2.2.2", "bundled": true, "dev": true, "requires": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.1.0", - "@sigstore/tuf": "^2.1.0" + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", + "@sigstore/sign": "^2.2.3", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.1.0" } }, "smart-buffer": { @@ -19233,22 +18475,22 @@ "dev": true }, "socks": { - "version": "2.7.1", + "version": "2.8.0", "bundled": true, "dev": true, "requires": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "socks-proxy-agent": { - "version": "7.0.0", + "version": "8.0.2", "bundled": true, "dev": true, "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" } }, "spdx-correct": { @@ -19261,7 +18503,7 @@ } }, "spdx-exceptions": { - "version": "2.3.0", + "version": "2.5.0", "bundled": true, "dev": true }, @@ -19275,7 +18517,7 @@ } }, "spdx-license-ids": { - "version": "3.0.13", + "version": "3.0.17", "bundled": true, "dev": true }, @@ -19287,14 +18529,6 @@ "minipass": "^7.0.3" } }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "string-width": { "version": "4.2.3", "bundled": true, @@ -19390,7 +18624,7 @@ "dev": true }, "tuf-js": { - "version": "2.1.0", + "version": "2.2.0", "bundled": true, "dev": true, "requires": { @@ -19488,11 +18722,6 @@ "bundled": true, "dev": true }, - "ansi-styles": { - "version": "6.2.1", - "bundled": true, - "dev": true - }, "emoji-regex": { "version": "9.2.2", "bundled": true, @@ -19526,13 +18755,18 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + } } }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, "write-file-atomic": { "version": "5.0.1", "bundled": true, @@ -19932,6 +19166,29 @@ "parse-path": "^7.0.0" } }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -20486,15 +19743,6 @@ "picomatch": "^2.2.1" } }, - "redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", - "dev": true, - "requires": { - "esprima": "~4.0.0" - } - }, "registry-auth-token": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", @@ -20602,9 +19850,9 @@ "dev": true }, "semantic-release": { - "version": "22.0.12", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.12.tgz", - "integrity": "sha512-0mhiCR/4sZb00RVFJIUlMuiBkW3NMpVIW2Gse7noqEMoFGkvfPPAImEQbkBV8xga4KOPP4FdTRYuLLy32R1fPw==", + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.2.tgz", + "integrity": "sha512-OnVYJ6Xgzwe1x8MKswba7RU9+5djS1MWRTrTn5qsq3xZYpslroZkV9Pt0dA2YcIuieeuSZWJhn+yUWoBUHO5Fw==", "dev": true, "requires": { "@semantic-release/commit-analyzer": "^11.0.0", @@ -20613,9 +19861,9 @@ "@semantic-release/npm": "^11.0.0", "@semantic-release/release-notes-generator": "^12.0.0", "aggregate-error": "^5.0.0", - "cosmiconfig": "^8.0.0", + "cosmiconfig": "^9.0.0", "debug": "^4.0.0", - "env-ci": "^10.0.0", + "env-ci": "^11.0.0", "execa": "^8.0.0", "figures": "^6.0.0", "find-versions": "^5.1.0", @@ -20625,8 +19873,8 @@ "hosted-git-info": "^7.0.0", "import-from-esm": "^1.3.1", "lodash-es": "^4.17.21", - "marked": "^9.0.0", - "marked-terminal": "^6.0.0", + "marked": "^12.0.0", + "marked-terminal": "^7.0.0", "micromatch": "^4.0.2", "p-each-series": "^3.0.0", "p-reduce": "^3.0.0", @@ -20724,9 +19972,9 @@ "dev": true }, "marked": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.2.tgz", - "integrity": "sha512-qoKMJqK0w6vkLk8+KnKZAH6neUZSNaQqVZ/h2yZ9S7CbLuFHyS2viB0jnqcWF9UKjwsAbMrQtnQhdmdvOVOw9w==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.0.tgz", + "integrity": "sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w==", "dev": true }, "mimic-fn": { @@ -20908,9 +20156,9 @@ "dev": true }, "shiki": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", - "integrity": "sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", + "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", "dev": true, "requires": { "ansi-sequence-parser": "^1.1.0", @@ -21272,6 +20520,15 @@ "supports-color": "^7.0.0" } }, + "synckit": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.6.2.tgz", + "integrity": "sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, "tcomb": { "version": "3.2.29", "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-3.2.29.tgz", @@ -21453,9 +20710,9 @@ } }, "ts-api-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", - "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", "dev": true, "requires": {} }, @@ -21501,9 +20758,9 @@ "dev": true }, "tsup": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.1.tgz", - "integrity": "sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.2.tgz", + "integrity": "sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==", "dev": true, "requires": { "bundle-require": "^4.0.0", @@ -21570,15 +20827,15 @@ } }, "typedoc": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.4.tgz", - "integrity": "sha512-Du9ImmpBCw54bX275yJrxPVnjdIyJO/84co0/L9mwe0R3G4FSR6rQ09AlXVRvZEGMUg09+z/usc8mgygQ1aidA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.8.tgz", + "integrity": "sha512-mh8oLW66nwmeB9uTa0Bdcjfis+48bAjSH3uqdzSuSawfduROQLlXw//WSNZLYDdhmMVB7YcYZicq6e8T0d271A==", "dev": true, "requires": { "lunr": "^2.3.9", "marked": "^4.3.0", "minimatch": "^9.0.3", - "shiki": "^0.14.1" + "shiki": "^0.14.7" }, "dependencies": { "brace-expansion": { diff --git a/package.json b/package.json index 8c3cb755b..86772a7f2 100644 --- a/package.json +++ b/package.json @@ -8,35 +8,35 @@ }, "description": "ical-generator is a small piece of code which generates ical calendar files", "devDependencies": { - "@qiwi/semantic-release-gh-pages-plugin": "^5.2.11", + "@qiwi/semantic-release-gh-pages-plugin": "^5.2.12", "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^6.0.3", "@semantic-release/git": "^10.0.1", - "@semantic-release/npm": "^11.0.2", + "@semantic-release/npm": "^11.0.3", "@touch4it/ical-timezones": "^1.9.0", - "@types/luxon": "^3.3.7", + "@types/luxon": "^3.4.2", "@types/mocha": "^10.0.6", - "@typescript-eslint/eslint-plugin": "^6.13.2", - "@typescript-eslint/parser": "^6.13.2", - "c8": "^8.0.1", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", + "c8": "^9.1.0", "dayjs": "^1.11.10", - "eslint": "^8.56.0", - "eslint-plugin-jsonc": "^2.11.2", + "eslint": "^8.57.0", + "eslint-plugin-jsonc": "^2.13.0", "esm": "^3.2.25", "license-checker": "^25.0.1", "luxon": "^3.4.4", - "mocha": "^10.2.0", + "mocha": "^10.3.0", "mochawesome": "^7.1.3", - "moment": "^2.29.4", - "moment-timezone": "^0.5.43", + "moment": "^2.30.1", + "moment-timezone": "^0.5.45", "nyc": "^15.1.0", "rrule": "^2.8.1", - "semantic-release": "^22.0.12", + "semantic-release": "^23.0.2", "semantic-release-license": "^1.0.2", "source-map-support": "^0.5.21", "ts-node": "^10.9.2", - "tsup": "^8.0.1", - "typedoc": "^0.25.4", + "tsup": "^8.0.2", + "typedoc": "^0.25.8", "typescript": "^5.3.3" }, "engines": { @@ -125,5 +125,5 @@ "test": "mocha" }, "type": "module", - "version": "v2.0.0-develop" + "version": "7.0.0-develop.6" } diff --git a/release.config.cjs b/release.config.cjs index 7eb0c106a..c0b7f0fd6 100644 --- a/release.config.cjs +++ b/release.config.cjs @@ -49,7 +49,7 @@ configuration.plugins.push(['@semantic-release/github', { }]); configuration.plugins.push(['@semantic-release/git', { - 'assets': ['CHANGELOG.md', 'LICENSE'], + 'assets': ['CHANGELOG.md', 'LICENSE', 'package-lock.json', 'package.json'], 'message': 'chore(release): :bookmark: ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}' }]); diff --git a/src/alarm.ts b/src/alarm.ts index 273b295a0..aa3ce0b37 100755 --- a/src/alarm.ts +++ b/src/alarm.ts @@ -8,14 +8,17 @@ import { generateCustomAttributes, checkDate, toDurationString, - toJSON + toJSON, + checkNameAndMail } from './tools.js'; import {ICalDateTimeValue} from './types.js'; +import ICalAttendee, { ICalAttendeeData } from './attendee.js'; export enum ICalAlarmType { display = 'display', - audio = 'audio' + audio = 'audio', + email = 'email' } export const ICalAlarmRelatesTo = { @@ -37,16 +40,18 @@ export type ICalAlarmData = ICalAlarmBaseData | ICalAlarmTriggerAfterData | ICalAlarmTriggerBeforeData; -type ICalAlarmTriggerData = ICalAlarmBaseData & { trigger: number | ICalDateTimeValue }; -type ICalAlarmTriggerAfterData = ICalAlarmBaseData & { triggerAfter: number | ICalDateTimeValue }; -type ICalAlarmTriggerBeforeData = ICalAlarmBaseData & { triggerBefore: number | ICalDateTimeValue }; +export type ICalAlarmTriggerData = ICalAlarmBaseData & { trigger: number | ICalDateTimeValue }; +export type ICalAlarmTriggerAfterData = ICalAlarmBaseData & { triggerAfter: number | ICalDateTimeValue }; +export type ICalAlarmTriggerBeforeData = ICalAlarmBaseData & { triggerBefore: number | ICalDateTimeValue }; -interface ICalAlarmBaseData { +export interface ICalAlarmBaseData { type?: ICalAlarmType; relatesTo?: ICalAlarmRelatesTo | null; repeat?: ICalAlarmRepeatData | null; attach?: string | ICalAttachment | null; description?: string | null; + summary?: string | null; + attendees?: ICalAttendee[] | ICalAttendeeData[]; x?: {key: string, value: string}[] | [string, string][] | Record; } @@ -63,6 +68,8 @@ interface ICalInternalAlarmData { interval: number | null; attach: ICalAttachment | null; description: string | null; + summary: string | null; + attendees: ICalAttendee[]; x: [string, string][]; } @@ -74,12 +81,14 @@ export interface ICalAlarmJSONData { interval: number | null; attach: ICalAttachment | null; description: string | null; + summary: string | null; + attendees: ICalAttendee[]; x: {key: string, value: string}[]; } /** - * Usually you get an `ICalAlarm` object like this: + * Usually you get an {@link ICalAlarm} object like this: * * ```javascript * import ical from 'ical-generator'; @@ -88,7 +97,7 @@ export interface ICalAlarmJSONData { * const alarm = event.createAlarm(); * ``` * - * You can also use the [[`ICalAlarm`]] object directly: + * You can also use the {@link ICalAlarm} object directly: * * ```javascript * import ical, {ICalAlarm} from 'ical-generator'; @@ -101,11 +110,11 @@ export default class ICalAlarm { private readonly event: ICalEvent; /** - * Constructor of [[`ICalAttendee`]]. The event reference is required + * Constructor of {@link ICalAttendee}. The event reference is required * to query the calendar's timezone and summary when required. * * @param data Alarm Data - * @param calendar Reference to ICalEvent object + * @param event Reference to ICalEvent object */ constructor (data: ICalAlarmData, event: ICalEvent) { this.data = { @@ -116,6 +125,8 @@ export default class ICalAlarm { interval: null, attach: null, description: null, + summary: null, + attendees: [], x: [] }; @@ -131,6 +142,8 @@ export default class ICalAlarm { data.repeat && this.repeat(data.repeat); data.attach !== undefined && this.attach(data.attach); data.description !== undefined && this.description(data.description); + data.summary !== undefined && this.summary(data.summary); + data.attendees !== undefined && this.attendees(data.attendees); data.x !== undefined && this.x(data.x); } @@ -142,7 +155,7 @@ export default class ICalAlarm { type (type: ICalAlarmType): this; /** - * Set the alarm type. See [[`ICalAlarmType`]] + * Set the alarm type. See {@link ICalAlarmType} * for available status options. * @since 0.2.1 */ @@ -162,7 +175,7 @@ export default class ICalAlarm { /** * Get the trigger time for the alarm. Can either - * be a date and time value ([[`ICalDateTimeValue`]]) or + * be a date and time value ({@link ICalDateTimeValue}) or * a number, which will represent the seconds between * alarm and event start. The number is negative, if the * alarm is triggered after the event started. @@ -266,7 +279,7 @@ export default class ICalAlarm { /** * Get the trigger time for the alarm. Can either - * be a date and time value ([[`ICalDateTimeValue`]]) or + * be a date and time value ({@link ICalDateTimeValue}) or * a number, which will represent the seconds between * alarm and event start. The number is negative, if the * alarm is triggered before the event started. @@ -305,7 +318,7 @@ export default class ICalAlarm { /** * Get the trigger time for the alarm. Can either - * be a date and time value ([[`ICalDateTimeValue`]]) or + * be a date and time value ({@link ICalDateTimeValue}) or * a number, which will represent the seconds between * alarm and event start. The number is negative, if the * alarm is triggered after the event started. @@ -467,7 +480,8 @@ export default class ICalAlarm { /** * Get the alarm description. Used to set the alarm message - * if alarm type is display. Defaults to the event's summary. + * if alarm type is `display`. If the alarm type is `email`, it's + * used to set the email body. Defaults to the event's summary. * * @since 0.2.1 */ @@ -475,7 +489,8 @@ export default class ICalAlarm { /** * Set the alarm description. Used to set the alarm message - * if alarm type is display. Defaults to the event's summary. + * if alarm type is `display`. If the alarm type is `email`, it's + * used to set the email body. Defaults to the event's summary. * * @since 0.2.1 */ @@ -494,6 +509,79 @@ export default class ICalAlarm { } + /** + * Get the alarm summary. Used to set the email subject + * if alarm type is `email`. Defaults to the event's summary. + * + * @since 7.0.0 + */ + summary (): string | null; + + /** + * Set the alarm summary. Used to set the email subject + * if alarm type is display. Defaults to the event's summary. + * + * @since 0.2.1 + */ + summary (summary: string | null): this; + summary (summary?: string | null): this | string | null { + if (summary === undefined) { + return this.data.summary; + } + if (!summary) { + this.data.summary = null; + return this; + } + + this.data.summary = summary; + return this; + } + + + /** + * Creates a new {@link ICalAttendee} and returns it. Use options to prefill + * the attendee's attributes. Calling this method without options will create + * an empty attendee. + * + * @since 7.0.0 + */ + createAttendee(data: ICalAttendee | ICalAttendeeData | string): ICalAttendee { + if (data instanceof ICalAttendee) { + this.data.attendees.push(data); + return data; + } + if (typeof data === 'string') { + data = { email: data, ...checkNameAndMail('data', data) }; + } + + const attendee = new ICalAttendee(data, this); + this.data.attendees.push(attendee); + return attendee; + } + + + /** + * Get all attendees + * @since 7.0.0 + */ + attendees(): ICalAttendee[]; + + /** + * Add multiple attendees to your event + * + * @since 7.0.0 + */ + attendees(attendees: (ICalAttendee | ICalAttendeeData | string)[]): this; + attendees(attendees?: (ICalAttendee | ICalAttendeeData | string)[]): this | ICalAttendee[] { + if (!attendees) { + return this.data.attendees; + } + + attendees.forEach(attendee => this.createAttendee(attendee)); + return this; + } + + /** * Set X-* attributes. Woun't filter double attributes, * which are also added by another method (e.g. type), @@ -627,13 +715,28 @@ export default class ICalAlarm { } // DESCRIPTION - if (this.data.type === 'display' && this.data.description) { + if (this.data.type !== 'audio' && this.data.description) { g += 'DESCRIPTION:' + escape(this.data.description, false) + '\r\n'; } - else if (this.data.type === 'display') { + else if (this.data.type !== 'audio') { g += 'DESCRIPTION:' + escape(this.event.summary(), false) + '\r\n'; } + // SUMMARY + if (this.data.type === 'email' && this.data.summary) { + g += 'SUMMARY:' + escape(this.data.summary, false) + '\r\n'; + } + else if (this.data.type === 'email') { + g += 'SUMMARY:' + escape(this.event.summary(), false) + '\r\n'; + } + + // ATTENDEES + if (this.data.type === 'email') { + this.data.attendees.forEach(attendee => { + g += attendee.toString(); + }); + } + // CUSTOM X ATTRIBUTES g += generateCustomAttributes(this.data); diff --git a/src/attendee.ts b/src/attendee.ts index 79b1c3351..81377b720 100755 --- a/src/attendee.ts +++ b/src/attendee.ts @@ -3,6 +3,7 @@ import {addOrGetCustomAttributes, checkEnum, checkNameAndMail, escape} from './tools.js'; import ICalEvent from './event.js'; +import ICalAlarm from './alarm.js'; interface ICalInternalAttendeeData { @@ -75,7 +76,7 @@ export enum ICalAttendeeType { /** - * Usually you get an `ICalAttendee` object like this: + * Usually you get an {@link ICalAttendee} object like this: * * ```javascript * import ical from 'ical-generator'; @@ -84,7 +85,7 @@ export enum ICalAttendeeType { * const attendee = event.createAttendee({ email: 'mail@example.com' }); * ``` * - * You can also use the [[`ICalAttendee`]] object directly: + * You can also use the {@link ICalAttendee} object directly: * * ```javascript * import ical, {ICalAttendee} from 'ical-generator'; @@ -94,16 +95,16 @@ export enum ICalAttendeeType { */ export default class ICalAttendee { private readonly data: ICalInternalAttendeeData; - private readonly event: ICalEvent; + private readonly parent: ICalEvent | ICalAlarm; /** - * Constructor of [[`ICalAttendee`]]. The event reference is + * Constructor of {@link ICalAttendee}. The event reference is * required to query the calendar's timezone when required. * * @param data Attendee Data - * @param calendar Reference to ICalEvent object + * @param parent Reference to ICalEvent object */ - constructor(data: ICalAttendeeData, event: ICalEvent) { + constructor(data: ICalAttendeeData, parent: ICalEvent | ICalAlarm) { this.data = { name: null, email: '', @@ -117,8 +118,8 @@ export default class ICalAttendee { delegatedFrom: null, x: [] }; - this.event = event; - if (!this.event) { + this.parent = parent; + if (!this.parent) { throw new Error('`event` option required!'); } if (!data.email) { @@ -232,7 +233,7 @@ export default class ICalAttendee { /** * Set the attendee's role, defaults to `REQ` / `REQ-PARTICIPANT`. - * Checkout [[`ICalAttendeeRole`]] for available roles. + * Checkout {@link ICalAttendeeRole} for available roles. * * @since 0.2.0 */ @@ -279,7 +280,7 @@ export default class ICalAttendee { status(): ICalAttendeeStatus | null; /** - * Set the attendee's status. See [[`ICalAttendeeStatus`]] + * Set the attendee's status. See {@link ICalAttendeeStatus} * for available status options. * * @since 0.2.0 @@ -307,7 +308,7 @@ export default class ICalAttendee { /** * Set attendee's type (a.k.a. CUTYPE). - * See [[`ICalAttendeeType`]] for available status options. + * See {@link ICalAttendeeType} for available status options. * * @since 0.2.3 */ @@ -336,7 +337,7 @@ export default class ICalAttendee { * Set the attendee's delegated-to field. * * Creates a new Attendee if the passed object is not already a - * [[`ICalAttendee`]] object. Will set the `delegatedTo` and + * {@link ICalAttendee} object. Will set the `delegatedTo` and * `delegatedFrom` attributes. * * Will also set the `status` to `DELEGATED`, if attribute is set. @@ -367,14 +368,14 @@ export default class ICalAttendee { if(typeof delegatedTo === 'string') { this.data.delegatedTo = new ICalAttendee( { email: delegatedTo, ...checkNameAndMail('delegatedTo', delegatedTo) }, - this.event, + this.parent, ); } else if(delegatedTo instanceof ICalAttendee) { this.data.delegatedTo = delegatedTo; } else { - this.data.delegatedTo = new ICalAttendee(delegatedTo, this.event); + this.data.delegatedTo = new ICalAttendee(delegatedTo, this.parent); } this.data.status = ICalAttendeeStatus.DELEGATED; @@ -392,7 +393,7 @@ export default class ICalAttendee { * Set the attendee's delegated-from field * * Creates a new Attendee if the passed object is not already a - * [[`ICalAttendee`]] object. Will set the `delegatedTo` and + * {@link ICalAttendee} object. Will set the `delegatedTo` and * `delegatedFrom` attributes. * * @param delegatedFrom @@ -409,14 +410,14 @@ export default class ICalAttendee { else if(typeof delegatedFrom === 'string') { this.data.delegatedFrom = new ICalAttendee( { email: delegatedFrom, ...checkNameAndMail('delegatedFrom', delegatedFrom) }, - this.event, + this.parent, ); } else if(delegatedFrom instanceof ICalAttendee) { this.data.delegatedFrom = delegatedFrom; } else { - this.data.delegatedFrom = new ICalAttendee(delegatedFrom, this.event); + this.data.delegatedFrom = new ICalAttendee(delegatedFrom, this.parent); } return this; @@ -426,7 +427,7 @@ export default class ICalAttendee { /** * Create a new attendee this attendee delegates to and returns * this new attendee. Creates a new attendee if the passed object - * is not already an [[`ICalAttendee`]]. + * is not already an {@link ICalAttendee}. * * ```javascript * const cal = ical(); @@ -439,7 +440,7 @@ export default class ICalAttendee { * @since 0.2.0 */ delegatesTo (options: ICalAttendee | ICalAttendeeData | string): ICalAttendee { - const a = options instanceof ICalAttendee ? options : this.event.createAttendee(options); + const a = options instanceof ICalAttendee ? options : this.parent.createAttendee(options); this.delegatedTo(a); a.delegatedFrom(this); return a; @@ -449,7 +450,7 @@ export default class ICalAttendee { /** * Create a new attendee this attendee delegates from and returns * this new attendee. Creates a new attendee if the passed object - * is not already an [[`ICalAttendee`]]. + * is not already an {@link ICalAttendee}. * * ```javascript * const cal = ical(); @@ -462,7 +463,7 @@ export default class ICalAttendee { * @since 0.2.0 */ delegatesFrom (options: ICalAttendee | ICalAttendeeData | string): ICalAttendee { - const a = options instanceof ICalAttendee ? options : this.event.createAttendee(options); + const a = options instanceof ICalAttendee ? options : this.parent.createAttendee(options); this.delegatedFrom(a); a.delegatedTo(this); return a; diff --git a/src/calendar.ts b/src/calendar.ts index 6b8122140..62063905e 100755 --- a/src/calendar.ts +++ b/src/calendar.ts @@ -73,7 +73,7 @@ export enum ICalCalendarMethod { /** - * Usually you get an `ICalCalendar` object like this: + * Usually you get an {@link ICalCalendar} object like this: * ```javascript * import ical from 'ical-generator'; * const calendar = ical(); @@ -89,7 +89,7 @@ export default class ICalCalendar { private readonly data: ICalCalendarInternalData; /** - * You can pass options to setup your calendar or use setters to do this. + * You can pass options to set up your calendar or use setters to do this. * * ```javascript * * import ical from 'ical-generator'; @@ -110,6 +110,16 @@ export default class ICalCalendar { * cal.name('sebbo.net'); * ``` * + * `cal.toString()` would then produce the following string: + * ```text + * BEGIN:VCALENDAR + * VERSION:2.0 + * PRODID:-//sebbo.net//ical-generator//EN + * NAME:sebbo.net + * X-WR-CALNAME:sebbo.net + * END:VCALENDAR + * ``` + * * @param data Calendar data */ constructor(data: ICalCalendarData = {}) { @@ -150,7 +160,7 @@ export default class ICalCalendar { /** * Set your feed's prodid. `prodid` can be either a * string like `//sebbo.net//ical-generator//EN` or a - * valid [[`ICalCalendarProdIdData`]] object. `language` + * valid {@link ICalCalendarProdIdData} object. `language` * is optional and defaults to `EN`. * * ```javascript @@ -161,6 +171,11 @@ export default class ICalCalendar { * }); * ``` * + * `cal.toString()` would then produce the following string: + * ```text + * PRODID:-//My Company//My Product//EN + * ``` + * * @since 0.2.0 */ prodId(prodId: ICalCalendarProdIdData | string): this; @@ -193,7 +208,7 @@ export default class ICalCalendar { /** * Get the feed method attribute. - * See [[`ICalCalendarMethod`]] for possible results. + * See {@link ICalCalendarMethod} for possible results. * * @since 0.2.8 */ @@ -201,11 +216,13 @@ export default class ICalCalendar { /** * Set the feed method attribute. - * See [[`ICalCalendarMethod`]] for available options. + * See {@link ICalCalendarMethod} for available options. * * #### Typescript Example * ```typescript * import {ICalCalendarMethod} from 'ical-generator'; + * + * // METHOD:PUBLISH * calendar.method(ICalCalendarMethod.PUBLISH); * ``` * @@ -236,6 +253,24 @@ export default class ICalCalendar { * Set your feed's name. Is used to fill `NAME` * and `X-WR-CALNAME` in your iCal file. * + * ```typescript + * import ical from 'ical-generator'; + * + * const cal = ical(); + * cal.name('Next Arrivals'); + * + * cal.toString(); + * ``` + * + * ```text + * BEGIN:VCALENDAR + * VERSION:2.0 + * PRODID:-//sebbo.net//ical-generator//EN + * NAME:Next Arrivals + * X-WR-CALNAME:Next Arrivals + * END:VCALENDAR + * ``` + * * @since 0.2.0 */ name(name: string | null): this; @@ -280,7 +315,7 @@ export default class ICalCalendar { * Use this method to set your feed's timezone. Is used * to fill `TIMEZONE-ID` and `X-WR-TIMEZONE` in your iCal export. * Please not that all date values are treaded differently, if - * a timezone was set. See [[`formatDate`]] for details. If no + * a timezone was set. See {@link formatDate} for details. If no * time zone is specified, all information is output as UTC. * * ```javascript @@ -312,7 +347,7 @@ export default class ICalCalendar { * import ical from 'ical-generator'; * import {getVtimezoneComponent} from '@touch4it/ical-timezones'; * - * const cal = new ICalCalendar(); + * const cal = ical(); * cal.timezone({ * name: 'FOO', * generator: getVtimezoneComponent @@ -363,6 +398,10 @@ export default class ICalCalendar { * cal.source('http://example.com/my/original_source.ical'); * ``` * + * ```text + * SOURCE;VALUE=URI:http://example.com/my/original_source.ical + * ``` + * * @since 2.2.0-develop.1 */ source(source: string | null): this; @@ -481,7 +520,7 @@ export default class ICalCalendar { /** - * Creates a new [[`ICalEvent`]] and returns it. Use options to prefill the event's attributes. + * Creates a new {@link ICalEvent} and returns it. Use options to prefill the event's attributes. * Calling this method without options will create an empty event. * * ```javascript @@ -595,6 +634,14 @@ export default class ICalCalendar { * }); * ``` * + * ```text + * BEGIN:VCALENDAR + * VERSION:2.0 + * PRODID:-//sebbo.net//ical-generator//EN + * X-MY-CUSTOM-ATTR:1337! + * END:VCALENDAR + * ``` + * * @since 1.9.0 */ x (keyOrArray: {key: string, value: string}[] | [string, string][] | Record): this; @@ -608,6 +655,14 @@ export default class ICalCalendar { * calendar.x("X-MY-CUSTOM-ATTR", "1337!"); * ``` * + * ```text + * BEGIN:VCALENDAR + * VERSION:2.0 + * PRODID:-//sebbo.net//ical-generator//EN + * X-MY-CUSTOM-ATTR:1337! + * END:VCALENDAR + * ``` + * * @since 1.9.0 */ x (keyOrArray: string, value: string): this; diff --git a/src/category.ts b/src/category.ts index 894721571..9a71d35e3 100755 --- a/src/category.ts +++ b/src/category.ts @@ -8,15 +8,16 @@ export interface ICalCategoryData { name: string; } -export interface ICalCategoryInternalData { + +export interface ICalCategoryJSONData { name: string; } -export type ICalCategoryJSONData = ICalCategoryInternalData; +export type ICalCategoryInternalData = ICalCategoryJSONData; /** - * Usually you get an `ICalCategory` object like this: + * Usually you get an {@link ICalCategory} object like this: * * ```javascript * import ical from 'ical-generator'; @@ -25,7 +26,7 @@ export type ICalCategoryJSONData = ICalCategoryInternalData; * const category = event.createCategory(); * ``` * - * You can also use the [[`ICalCategory`]] object directly: + * You can also use the {@link ICalCategory} object directly: * * ```javascript * import ical, {ICalCategory} from 'ical-generator'; @@ -37,7 +38,7 @@ export default class ICalCategory { private readonly data: ICalCategoryInternalData; /** - * Constructor of [[`ICalCategory`]]. + * Constructor of {@link ICalCategory}. * @param data Category Data */ constructor(data: ICalCategoryData) { diff --git a/src/event.ts b/src/event.ts index 684917d9d..de64879ef 100755 --- a/src/event.ts +++ b/src/event.ts @@ -94,7 +94,7 @@ interface ICalEventInternalData { stamp: ICalDateTimeValue, allDay: boolean, floating: boolean, - repeating: ICalEventInternalRepeatingData | ICalRRuleStub | string | null, + repeating: ICalEventJSONRepeatingData | ICalRRuleStub | string | null, summary: string, location: ICalLocation | null, description: ICalDescription | null, @@ -124,7 +124,7 @@ export interface ICalEventJSONData { stamp: string, allDay: boolean, floating: boolean, - repeating: ICalEventInternalRepeatingData | string | null, + repeating: ICalEventJSONRepeatingData | string | null, summary: string, location: ICalLocation | null, description: ICalDescription | null, @@ -143,7 +143,7 @@ export interface ICalEventJSONData { x: {key: string, value: string}[]; } -interface ICalEventInternalRepeatingData { +export interface ICalEventJSONRepeatingData { freq: ICalEventRepeatingFreq; count?: number; interval?: number; @@ -158,7 +158,7 @@ interface ICalEventInternalRepeatingData { /** - * Usually you get an `ICalEvent` object like this: + * Usually you get an {@link ICalEvent} object like this: * ```javascript * import ical from 'ical-generator'; * const calendar = ical(); @@ -326,21 +326,45 @@ export default class ICalEvent { * [Readme](https://github.com/sebbo2002/ical-generator#-date-time--timezones) * for details about supported values and timezone handling. * + * ```typescript + * import ical from 'ical-generator'; + * + * const cal = ical(); + * + * const event = cal.createEvent({ + * start: new Date('2020-01-01') + * }); + * + * // overwrites old start date + * event.start(new Date('2024-02-01')); + * + * cal.toString(); + * ``` + * + * ```text + * BEGIN:VCALENDAR + * VERSION:2.0 + * PRODID:-//sebbo.net//ical-generator//EN + * BEGIN:VEVENT + * UID:7e2aee64-b07a-4256-9b3e-e9eaa452bac8 + * SEQUENCE:0 + * DTSTAMP:20240212T190915Z + * DTSTART:20240201T000000Z + * SUMMARY: + * END:VEVENT + * END:VCALENDAR + * ``` + * * @since 0.2.0 */ start(start: ICalDateTimeValue): this; start(start?: ICalDateTimeValue): this | ICalDateTimeValue { if (start === undefined) { + this.swapStartAndEndIfRequired(); return this.data.start; } this.data.start = checkDate(start, 'start'); - if (this.data.start && this.data.end && toDate(this.data.start).getTime() > toDate(this.data.end).getTime()) { - const t = this.data.start; - this.data.start = this.data.end; - this.data.end = t; - } - return this; } @@ -362,6 +386,7 @@ export default class ICalEvent { end(end: ICalDateTimeValue | null): this; end(end?: ICalDateTimeValue | null): this | ICalDateTimeValue | null { if (end === undefined) { + this.swapStartAndEndIfRequired(); return this.data.end; } if (end === null) { @@ -370,13 +395,19 @@ export default class ICalEvent { } this.data.end = checkDate(end, 'end'); + return this; + } + + /** + * Checks if the start date is after the end date and swaps them if necessary. + * @private + */ + private swapStartAndEndIfRequired(): void { if (this.data.start && this.data.end && toDate(this.data.start).getTime() > toDate(this.data.end).getTime()) { const t = this.data.start; this.data.start = this.data.end; this.data.end = t; } - - return this; } /** @@ -513,6 +544,36 @@ export default class ICalEvent { * event.allDay(true); // → appointment is for the whole day * ``` * + * ```typescript + * import ical from 'ical-generator'; + * + * const cal = ical(); + * + * cal.createEvent({ + * start: new Date('2020-01-01'), + * summary: 'Very Important Day', + * allDay: true + * }); + * + * cal.toString(); + * ``` + * + * ```text + * BEGIN:VCALENDAR + * VERSION:2.0 + * PRODID:-//sebbo.net//ical-generator//EN + * BEGIN:VEVENT + * UID:1964fe8d-32c5-4f2a-bd62-7d9d7de5992b + * SEQUENCE:0 + * DTSTAMP:20240212T191956Z + * DTSTART;VALUE=DATE:20200101 + * X-MICROSOFT-CDO-ALLDAYEVENT:TRUE + * X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE + * SUMMARY:Very Important Day + * END:VEVENT + * END:VCALENDAR + * ``` + * * @since 0.2.0 */ allDay(allDay: boolean): this; @@ -537,6 +598,34 @@ export default class ICalEvent { * Events whose floating flag is set to true always take place at the * same time, regardless of the time zone. * + * ```typescript + * import ical from 'ical-generator'; + * + * const cal = ical(); + * + * cal.createEvent({ + * start: new Date('2020-01-01T20:00:00Z'), + * summary: 'Always at 20:00 in every Hello World!

'; + * plain: 'Hello World!', + * html: '

Hello World!

' * }); * ``` * + * ```text + * DESCRIPTION:Hello World! + * X-ALT-DESC;FMTTYPE=text/html:

Hello World!

+ * ``` + * * @since 0.2.0 */ description(description: ICalDescription | string | null): this; @@ -854,19 +1046,40 @@ export default class ICalEvent { /** - * Creates a new [[`ICalAttendee`]] and returns it. Use options to prefill + * Creates a new {@link ICalAttendee} and returns it. Use options to prefill * the attendee's attributes. Calling this method without options will create * an empty attendee. * * ```javascript + * import ical from 'ical-generator'; + * * const cal = ical(); - * const event = cal.createEvent(); - * const attendee = event.createAttendee({email: 'hui@example.com', name: 'Hui'}); + * const event = cal.createEvent({ + * start: new Date() + * }); + * + * event.createAttendee({email: 'hui@example.com', name: 'Hui'}); * * // add another attendee * event.createAttendee('Buh '); * ``` * + * ```text + * BEGIN:VCALENDAR + * VERSION:2.0 + * PRODID:-//sebbo.net//ical-generator//EN + * BEGIN:VEVENT + * UID:b4944f07-98e4-4581-ac80-2589bb20273d + * SEQUENCE:0 + * DTSTAMP:20240212T194232Z + * DTSTART:20240212T194232Z + * SUMMARY: + * ATTENDEE;ROLE=REQ-PARTICIPANT;CN="Hui":MAILTO:hui@example.com + * ATTENDEE;ROLE=REQ-PARTICIPANT;CN="Buh":MAILTO:buh@example.net + * END:VEVENT + * END:VCALENDAR + * ``` + * * As with the organizer, you can also add an explicit `mailto` address. * * ```javascript @@ -927,7 +1140,7 @@ export default class ICalEvent { /** - * Creates a new [[`ICalAlarm`]] and returns it. Use options to prefill + * Creates a new {@link ICalAlarm} and returns it. Use options to prefill * the alarm's attributes. Calling this method without options will create * an empty alarm. * @@ -986,7 +1199,7 @@ export default class ICalEvent { /** - * Creates a new [[`ICalCategory`]] and returns it. Use options to prefill the category's attributes. + * Creates a new {@link ICalCategory} and returns it. Use options to prefill the category's attributes. * Calling this method without options will create an empty category. * * ```javascript @@ -1407,7 +1620,7 @@ export default class ICalEvent { * @since 0.2.4 */ toJSON(): ICalEventJSONData { - let repeating: ICalEventInternalRepeatingData | string | null = null; + let repeating: ICalEventJSONRepeatingData | string | null = null; if(isRRule(this.data.repeating) || typeof this.data.repeating === 'string') { repeating = this.data.repeating.toString(); } @@ -1418,6 +1631,7 @@ export default class ICalEvent { }); } + this.swapStartAndEndIfRequired(); return Object.assign({}, this.data, { start: toJSON(this.data.start) || null, end: toJSON(this.data.end) || null, @@ -1449,6 +1663,7 @@ export default class ICalEvent { // SEQUENCE g += 'SEQUENCE:' + this.data.sequence + '\r\n'; + this.swapStartAndEndIfRequired(); g += 'DTSTAMP:' + formatDate(this.calendar.timezone(), this.data.stamp) + '\r\n'; if (this.data.allDay) { g += 'DTSTART;VALUE=DATE:' + formatDate(this.calendar.timezone(), this.data.start, true) + '\r\n'; @@ -1557,7 +1772,7 @@ export default class ICalEvent { } // LOCATION - if (this.data.location?.title) { + if (this.data.location && 'title' in this.data.location && this.data.location.title) { g += 'LOCATION:' + escape( this.data.location.title + (this.data.location.address ? '\n' + this.data.location.address : ''), @@ -1572,13 +1787,14 @@ export default class ICalEvent { ':geo:' + escape(this.data.location.geo?.lat, false) + ',' + escape(this.data.location.geo?.lon, false) + '\r\n'; } - - if (this.data.location.geo) { - g += 'GEO:' + escape(this.data.location.geo?.lat, false) + ';' + - escape(this.data.location.geo?.lon, false) + '\r\n'; - } } + // GEO + if (this.data.location && 'geo' in this.data.location && this.data.location.geo) { + g += 'GEO:' + escape(this.data.location.geo?.lat, false) + ';' + + escape(this.data.location.geo?.lon, false) + '\r\n'; + } + // DESCRIPTION if (this.data.description) { g += 'DESCRIPTION:' + escape(this.data.description.plain, false) + '\r\n'; diff --git a/src/index.ts b/src/index.ts index d9587b871..bfb1ecdb6 100755 --- a/src/index.ts +++ b/src/index.ts @@ -49,11 +49,16 @@ export default ical; export { default as ICalAlarm, ICalAlarmData, + ICalAlarmBaseData, + ICalAlarmJSONData, + ICalAlarmRelatesTo, ICalAlarmRepeatData, + ICalAlarmTriggerData, + ICalAlarmTriggerAfterData, + ICalAlarmTriggerBeforeData, ICalAlarmType, ICalAlarmTypeValue, - ICalAlarmJSONData, - ICalAttachment + ICalAttachment, } from './alarm.js'; export { @@ -86,6 +91,7 @@ export { ICalEventTransparency, ICalEventData, ICalEventJSONData, + ICalEventJSONRepeatingData, ICalEventClass, } from './event.js'; @@ -93,6 +99,8 @@ export { ICalDateTimeValue, ICalRepeatingOptions, ICalLocation, + ICalLocationWithTitle, + ICalLocationWithoutTitle, ICalGeo, ICalOrganizer, ICalDescription, diff --git a/src/types.ts b/src/types.ts index e484788d4..c83f571f3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -19,13 +19,19 @@ export interface ICalRepeatingOptions { startOfWeek?: ICalWeekday; } -export interface ICalLocation { +export type ICalLocation = ICalLocationWithTitle | ICalLocationWithoutTitle; + +export interface ICalLocationWithTitle { title: string; address?: string; radius?: number; geo?: ICalGeo; } +export interface ICalLocationWithoutTitle { + geo: ICalGeo; +} + export interface ICalGeo { lat: number; lon: number; diff --git a/test/alarm.ts b/test/alarm.ts index 0d46b076f..a973e8cdf 100644 --- a/test/alarm.ts +++ b/test/alarm.ts @@ -6,6 +6,7 @@ import moment from 'moment-timezone'; import ICalCalendar from '../src/calendar.js'; import ICalEvent from '../src/event.js'; import ICalAlarm, { ICalAlarmRelatesTo, ICalAlarmType } from '../src/alarm.js'; +import ICalAttendee from '../src/attendee.js'; describe('ical-generator Alarm', function () { @@ -630,6 +631,127 @@ describe('ical-generator Alarm', function () { }); }); + describe('summary()', function () { + it('setter should return this', function () { + const a = new ICalAlarm({}, new ICalEvent( + { start: new Date() }, + new ICalCalendar() + )); + + assert.deepStrictEqual(a, a.summary(null)); + assert.deepStrictEqual(a, a.summary('Hey Ho!')); + }); + + it('getter should return value', function () { + const a = new ICalAlarm({}, new ICalEvent( + { start: new Date() }, + new ICalCalendar() + )); + + assert.deepStrictEqual(a.summary(), null); + a.summary('blablabla'); + assert.deepStrictEqual(a.summary(), 'blablabla'); + a.summary(null); + assert.deepStrictEqual(a.summary(), null); + }); + + it('should change something', function () { + const a = new ICalAlarm({ + type: ICalAlarmType.email, + summary: 'Huibuh!' + }, new ICalEvent({ start: new Date() }, new ICalCalendar())); + assert.ok(a.toString().indexOf('\r\nSUMMARY:Huibuh') > -1); + }); + + it('should fallback to event summary', function () { + const a = new ICalAlarm( + { type: ICalAlarmType.email }, + new ICalEvent({ start: new Date(), summary: 'Example Event' }, new ICalCalendar()) + ); + + assert.ok(a.toString().indexOf('\r\nSUMMARY:Example Event') > -1); + }); + }); + + describe('createAttendee()', function () { + it('if Attendee passed, it should add and return it', function () { + const alarm = new ICalEvent({ start: new Date() }, new ICalCalendar()).createAlarm({ + type: ICalAlarmType.email + }); + + const attendee = new ICalAttendee({ email: 'mail@example.com' }, alarm); + assert.strictEqual(alarm.createAttendee(attendee), attendee, 'createAttendee returns attendee'); + assert.deepStrictEqual(alarm.attendees()[0], attendee, 'attendee pushed'); + }); + + it('should return a ICalAttendee instance', function () { + const alarm = new ICalEvent({ start: new Date() }, new ICalCalendar()).createAlarm({ + type: ICalAlarmType.email + });; + + assert.ok(alarm.createAttendee({ email: 'mail@example.com' }) instanceof ICalAttendee); + assert.strictEqual(alarm.attendees.length, 1, 'attendee pushed'); + }); + + it('should accept string', function () { + const alarm = new ICalEvent({ start: new Date() }, new ICalCalendar()).createAlarm({ + type: ICalAlarmType.email + });; + const attendee = alarm.createAttendee('Zac '); + + assert.strictEqual(attendee.name(), 'Zac'); + assert.strictEqual(attendee.email(), 'zac@example.com'); + assert.strictEqual(alarm.attendees().length, 1, 'attendee pushed'); + }); + + it('should throw error when string misformated', function () { + const alarm = new ICalEvent({ start: new Date() }, new ICalCalendar()).createAlarm({ + type: ICalAlarmType.email + });; + assert.throws(function () { + alarm.createAttendee('foo bar'); + }, /isn't formated correctly/); + }); + + it('should accept object', function () { + const alarm = new ICalEvent({ start: new Date() }, new ICalCalendar()).createAlarm({ + type: ICalAlarmType.email + }); + const attendee = alarm.createAttendee({name: 'Zac', email: 'zac@example.com'}); + + assert.strictEqual(attendee.name(), 'Zac'); + assert.strictEqual(attendee.email(), 'zac@example.com'); + assert.strictEqual(alarm.attendees().length, 1, 'attendee pushed'); + assert.ok(alarm.toString().includes('ATTENDEE;ROLE=REQ-PARTICIPANT;CN="Zac":MAILTO:zac@example.com')); + }); + }); + + describe('attendees()', function () { + it('getter should return an array of attendees…', function () { + const alarm = new ICalEvent({ start: new Date() }, new ICalCalendar()).createAlarm({ + type: ICalAlarmType.email + }); + assert.strictEqual(alarm.attendees().length, 0); + + const attendee = alarm.createAttendee({ email: 'mail@example.com' }); + assert.strictEqual(alarm.attendees().length, 1); + assert.deepStrictEqual(alarm.attendees()[0], attendee); + }); + + it('setter should add attendees and return this', function () { + const alarm = new ICalEvent({ start: new Date() }, new ICalCalendar()).createAlarm({ + type: ICalAlarmType.email + }); + const foo = alarm.attendees([ + { name: 'Person A', email: 'a@example.com' }, + { name: 'Person B', email: 'b@example.com' } + ]); + + assert.strictEqual(alarm.attendees().length, 2); + assert.deepStrictEqual(foo, alarm); + }); + }); + describe('x()', function () { it('is there', function () { const a = new ICalAlarm({}, new ICalEvent( @@ -653,10 +775,12 @@ describe('ical-generator Alarm', function () { assert.deepStrictEqual(a.toJSON(), { attach: null, + attendees: [], description: null, relatesTo: null, interval: null, repeat: null, + summary: null, trigger: 120, type: 'display', x: [] diff --git a/test/event.ts b/test/event.ts index 9c9f67d75..7a9f3bbb1 100644 --- a/test/event.ts +++ b/test/event.ts @@ -1225,8 +1225,12 @@ describe('ical-generator Event', function () { title: 'Foo', geo: {lat: 44.5, lon: -3.4} }); - assert.deepStrictEqual(e.location()?.title, 'Foo'); - assert.deepStrictEqual(e.location()?.geo, {lat: 44.5, lon: -3.4}); + + const location = e.location(); + assert.ok(location); + assert.ok('title' in location); + assert.deepStrictEqual(location?.title, 'Foo'); + assert.deepStrictEqual(location?.geo, {lat: 44.5, lon: -3.4}); e.location(null); assert.strictEqual(e.location(), null); @@ -1245,7 +1249,11 @@ describe('ical-generator Event', function () { }, new ICalCalendar()); event.location('Europa-Park'); - assert.strictEqual(event.location()?.title, 'Europa-Park'); + + const location = event.location(); + assert.ok(location); + assert.ok('title' in location); + assert.strictEqual(location?.title, 'Europa-Park'); }); it('should throw error when location is not valid', function () { diff --git a/test/issues.ts b/test/issues.ts index 764cb0e5d..3acf22607 100644 --- a/test/issues.ts +++ b/test/issues.ts @@ -270,4 +270,58 @@ describe('Issues', function () { ].join('\r\n')); }); }); + + describe('Issue #569 / 570', function () { + it('event.location should work with `geo` only', function () { + const event = ical().createEvent({ + id: '12345', + summary: 'Hello', + start: new Date('2020-06-15T00:00:00Z'), + end: new Date('2020-06-15T01:00:00Z'), + stamp: new Date('2020-06-15T00:00:00Z') + }); + + event.location({ + geo: { + lat: 52.51147570081018, + lon: 13.342200696373846 + } + }); + + assert.strictEqual(event.toString(), [ + 'BEGIN:VEVENT', + 'UID:12345', + 'SEQUENCE:0', + 'DTSTAMP:20200615T000000Z', + 'DTSTART:20200615T000000Z', + 'DTEND:20200615T010000Z', + 'SUMMARY:Hello', + 'GEO:52.51147570081018;13.342200696373846', + 'END:VEVENT', + '' + ].join('\r\n')); + }); + }); + + describe('Issue #581', function () { + it('event.start and event.end should be swappable', function () { + const calendar = ical(); + const event = calendar.createEvent({ + summary: 'Test Event', + start: '2024-02-29T17:00:00.000Z', + end: '2024-02-29T17:20:00.000Z' + }); + + event.start('2024-02-29T19:00:00.000Z'); + event.end('2024-02-29T19:20:00.000Z'); + + const start = event.start(); + assert.ok(typeof start === 'string'); + assert.strictEqual(start, '2024-02-29T19:00:00.000Z'); + + const end = event.end(); + assert.ok(typeof end === 'string'); + assert.strictEqual(end, '2024-02-29T19:20:00.000Z'); + }); + }); }); diff --git a/test/tools.ts b/test/tools.ts index 3dcbcbdb4..546790c7c 100644 --- a/test/tools.ts +++ b/test/tools.ts @@ -7,7 +7,15 @@ import {DateTime} from 'luxon'; import dayjs from 'dayjs'; import dayJsUTCPlugin from 'dayjs/plugin/utc.js'; import dayJsTimezonePlugin from 'dayjs/plugin/timezone.js'; -import {formatDate, formatDateTZ, foldLines, escape, checkDate, toDate} from '../src/tools.js'; +import { + checkDate, + escape, + foldLines, + formatDate, + formatDateTZ, + toDate, + toDurationString +} from '../src/tools.js'; dayjs.extend(dayJsUTCPlugin); dayjs.extend(dayJsTimezonePlugin); @@ -63,6 +71,12 @@ describe('ICalTools', function () { '20180705' ); }); + it('should work with / prefixed global timezones', function () { + assert.strictEqual( + formatDate('/Europe/Berlin', '2018-07-05T18:24:00.052', false, false), + '20180705T182400' + ); + }); }); describe('moment.js', function () { it('should work without setting a timezone', function () { @@ -335,4 +349,16 @@ describe('ICalTools', function () { assert.deepStrictEqual(toDate(DateTime.fromJSDate(date)), date); }); }); + + describe('toDurationString()', function () { + it('should work', async function () { + assert.strictEqual(toDurationString(0), 'PT0S'); + assert.strictEqual(toDurationString(1), 'PT1S'); + assert.strictEqual(toDurationString(60), 'PT1M'); + assert.strictEqual(toDurationString(3600), 'PT1H'); + assert.strictEqual(toDurationString(86400), 'P1D'); + + assert.strictEqual(toDurationString(-3600), '-PT1H'); + }); + }); });